<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://scarlet.deltasoft.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Zig</id>
	<title>ScarletDME - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://scarlet.deltasoft.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Zig"/>
	<link rel="alternate" type="text/html" href="https://scarlet.deltasoft.com/index.php/Special:Contributions/Zig"/>
	<updated>2026-08-20T12:54:50Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://scarlet.deltasoft.com/index.php?title=QM_Client_API&amp;diff=522</id>
		<title>QM Client API</title>
		<link rel="alternate" type="text/html" href="https://scarlet.deltasoft.com/index.php?title=QM_Client_API&amp;diff=522"/>
		<updated>2010-08-12T03:38:14Z</updated>

		<summary type="html">&lt;p&gt;Zig: /* API library&amp;#039;s */ cleaning up spam&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
QM provides a remote API access to any client system that can get to the server via socket 4243, and obeys the protocol.&lt;br /&gt;
&lt;br /&gt;
==Server Setup==&lt;br /&gt;
QM is technically able to handle API connections about of the box. However your server will need some configuring. (RPM will do this for you in near future).&lt;br /&gt;
&lt;br /&gt;
[[QM-API Server | QM API Server setup guide]]&lt;br /&gt;
&lt;br /&gt;
==Protocol==&lt;br /&gt;
The following is a guide to the protocol that the server responds to.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Currently a working document, far from perfect, but you get the idea:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://www.scarletdme.org/downloads/QMClient-Protocol.v0.3.alpha.pdf QMClient-Protocol.v0.3.alpha.pdf]&lt;br /&gt;
&lt;br /&gt;
==News==&lt;br /&gt;
*[[User:Diccon|Diccon]] 15 Jan 2009 &#039;&#039;&#039;Update&#039;&#039;&#039; - The packet header docs have been updated, and the whole login process is pretty clean. The docs are missing a large number of the simpler commands, but they are pretty easy to figure out from the VBSRVR basic code in GPL.BP. I will write them out progressivly.&lt;br /&gt;
*[[User:Diccon|Diccon]] 12 Jan 2009 &#039;&#039;&#039;Resolved&#039;&#039;&#039; - Turns out it was the new server environment. However the Documentation is slightly wrong for the login protocol. Login is actually a server command not a special case. Will try and update the docs and debug the further issues on the test server environment.&lt;br /&gt;
*[[User:Diccon|Diccon]] 8 Dec 2008 &#039;&#039;&#039;Confirmed&#039;&#039;&#039; - Functioning Java-QM client for 2.4.17 does not work on 2.6.6. Exact reason why has yet to be determined. Should have some answers soon, new year 2009 has a need for the Java API on 266.&lt;br /&gt;
*[[User:Diccon|Diccon]] 7 December 2008 &#039;&#039;&#039;Warning:&#039;&#039;&#039; I have suspicions that the protocol changed for login quite dramatically for 2-6-6, as opposed to 2-4-17 which this Spec doc was originally based on.&lt;br /&gt;
&lt;br /&gt;
==API library&#039;s==&lt;br /&gt;
* C - native - Released&lt;br /&gt;
* Visual Basic - native - released (library only released with commercial?)&lt;br /&gt;
* [[JavaQM-API|Java API]] - native - Beta, stable working. LGPL release&lt;br /&gt;
* Delphi - Wrapper - (native expected Q1 2009)&lt;br /&gt;
* PHP - wrapper - Beta (TomDel)&lt;br /&gt;
* [[PHP Native API]] - Alpha stages but alive and kicking&lt;br /&gt;
* [[C++ Wrapper]]&lt;/div&gt;</summary>
		<author><name>Zig</name></author>
	</entry>
	<entry>
		<id>https://scarlet.deltasoft.com/index.php?title=User_talk:Zig&amp;diff=502</id>
		<title>User talk:Zig</title>
		<link rel="alternate" type="text/html" href="https://scarlet.deltasoft.com/index.php?title=User_talk:Zig&amp;diff=502"/>
		<updated>2009-10-03T22:28:55Z</updated>

		<summary type="html">&lt;p&gt;Zig: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi, Zig, and welcome to the ScarletDME Wiki! It looks like you&#039;ve been tidying up the Wiki a lot -- thanks for doing that, and keep up the good work!  Why not create a user page about yourself and your interest in ScarletDME? -- [[User:Karaken12|karaken12]] 10:40, 26 August 2009 (UTC)&lt;br /&gt;
:Thanks for the welcome karaken. Hope you all the best for scarletdme, especially a first stable release. Unfortunately I&#039;m afraid all I can do is some edits on the wiki -- for the moment I&#039;m learning SQL and this multivalue thing looked really weird therefore interesting when I stumbled upon it on a newsgroup thread, so I&#039;m lurking ;) [[User:Zig|Zig]] 22:28, 3 October 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Zig</name></author>
	</entry>
	<entry>
		<id>https://scarlet.deltasoft.com/index.php?title=Main_Page&amp;diff=501</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://scarlet.deltasoft.com/index.php?title=Main_Page&amp;diff=501"/>
		<updated>2009-10-03T22:22:42Z</updated>

		<summary type="html">&lt;p&gt;Zig: /* For Users */ Updated the e-mail adress for the support mailing-list (scarletdme instead of openqm-opensource) Besides this group needs to be categorized on Google Groups ;)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to ScarletDME.org. [[ScarletDME]] is a OpenSource [[multivalue|MultiValue]] database, a community fork of [[OpenQM]] originally developed by [[Ladybridge]]. This project was founded on the 28th November 2008 to independently develop future versions of [[ScarletDME]] and contribute to [[OpenQM]]. &lt;br /&gt;
&lt;br /&gt;
Submissions to this project must be under the GPL version 2, with the option to use a later version if the licensee wishes.  Or they can be licensed under the LGPL if you wish to encourage and allow incorporation into proprietary products.  Contributors to [[ScarletDME]] are welcome to submit changes back to Ladybridge as well, for inclusion in Commercial QM. See [[Commercial submissions]] for details. We encourage submission to Ladybridge, the founder of this MultiValue database. We do recognise their processes are not as easy as traditional GPL projects. So we simply offer an easier forum for development with less stringent controls on contribution and participation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Name change&#039;&#039;&#039; &#039;&#039;Some of you may have noticed The new Logo (to your left) With the new Brand name, ScarletDME (Data Management Environment). This is to be the new name for the GPL project based on Ladybridges GPL OpenQM; something to distinguish GPL from commercial. Changing every name reference will take a little time to complete, until then the names GPL OpenQM and Scarlet/ScarletDME will be synonymous. You can reach this site via [http://www.scarletdme.org www.scarletdme.org].&lt;br /&gt;
The server is a VMWare Server 2 Virtual Machine located in a high-bandwidth datacentre in Amsterdam, Netherlands. It is hosted by [[User:SteveB|SteveB]] who maintains a daily backup to a secondary datacentre in Amsterdam. If you can provide a stable high bandwidth backup mirror, please contact him.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This server is DOWN/SLOW around 04:00GMT nightly for 15mins while backing up.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==For Users==&lt;br /&gt;
*[[Downloads]]: Source tarball and package builds for key platforms&lt;br /&gt;
*[[Guides &amp;amp; HOWTOs]] - Index of useful guides and HOWTO&#039;s on this Wiki&lt;br /&gt;
*[[QMBASIC Enhancements]] - QMBASIC features that are custom or were not part of the original GPL release.&lt;br /&gt;
*[http://www.scarletdme.org/bugzilla Bugzilla] reporting and tracking bugs:&lt;br /&gt;
*[[Documentation]] - Documented differences from the Commercial Documentation (Check here first, then below)&lt;br /&gt;
*[http://www.openqm.org/docs/ Documentation] (Commercial Version)&lt;br /&gt;
*General support email group: [http://groups.google.co.uk/group/scarletdme Register] then mailto:scarletdme@googlegroups.com &lt;br /&gt;
*IRC Chat: irc://irc.efnet.org/openqm or java client http://www.scarletdme.org/chat/&lt;br /&gt;
&lt;br /&gt;
====Supporting Projects====&lt;br /&gt;
Various external projects that provide tools for or API&#039;s into OpenQM&lt;br /&gt;
* [http://billabong-services.co.uk/anji Billabong Services&#039; Anji] - an open web based file browser and reporter.  Eventually to become a RAD system.  Pre-alpha grade of code. &lt;br /&gt;
*[[PHP_Native_API|PHP Native API module]]&lt;br /&gt;
*[[C++ Wrapper]]&lt;br /&gt;
*Steve Bush&#039;s [[Cygwin Port]] - Is it worth considering a MinGW port? - Would have to replace some posix bits which MinGW doesnt have.&lt;br /&gt;
* [http://www.tridentinfosys.com/ Kevin Powick&#039;s Trident Delphi wrapper]&lt;br /&gt;
&lt;br /&gt;
==For Developers==&lt;br /&gt;
For those that want to contribute to OpenQM GPL project.&lt;br /&gt;
*Subversion repository: https://scarletdme.org/svn/qmvdb/ - [[HOWTO]] &lt;br /&gt;
*Development email group: [http://www.scarletdme.org/mailman/listinfo/openqm-dev Register] then mailto:openqm-dev@dev.scarletdme.org&lt;br /&gt;
*[[Development snapshots]] - How to obtain, build, and upgrade using the snapshots.&lt;br /&gt;
*[[QM Client API]] - Documentation and Available API&#039;s for the QM remote protocol.&lt;br /&gt;
*[[Wish list]] - Things that you want &amp;amp; that we need contributors/devs for (lots of small things)&lt;br /&gt;
*[[Dynamic linking]] - Calling objects written in other languages.&lt;br /&gt;
*[[Installers]] - Installing scripts/programs or package systems&lt;br /&gt;
*[[Commercial submissions]] - Sending stuff to Ladybridge&lt;br /&gt;
&lt;br /&gt;
== How do I use this site? ==&lt;br /&gt;
&lt;br /&gt;
If you have a question on USAGE of the community version of Scarlet, then send it to the [http://groups.google.co.uk/group/scarletdme general email support group].&lt;br /&gt;
&lt;br /&gt;
If you want to discuss DEVELOPMENT of the community version of Scarlet (eg. php5 module) then send it to the [http://www.scarletdme.org/mailman/listinfo/openqm-dev development email group].&lt;br /&gt;
&lt;br /&gt;
While the email lists are best for getting attention, permanent changes in this wiki will have a longer term impact so feel free to add or change ANYTHING in this wiki.&lt;br /&gt;
&lt;br /&gt;
=== External Resources ===&lt;br /&gt;
* [[Installations]] - Places where GPL OpenQM is in use (I&#039;m attempting to create a new section for this) - http://capersqm.dnsalias.net/&lt;br /&gt;
* [http://www.rushflat.co.nz/downloads.shtml Brian Speir&#039;s Installation instructions and other downloads ]&lt;br /&gt;
* [http://openqm.blackflute.com/ Tom Delombard&#039;s old QM page.] Includes details of the tape utilities and the PHP4 module (C Wrapper) &lt;br /&gt;
* [http://sourceforge.net/projects/jd3 JD3] is a socket based server for D3 ported to QM &lt;br /&gt;
* [http://www.billabong-services.co.uk/jd3/jd3php.html David Patterson&#039;s guide to using PHP with JD3] David&#039;s original page has disappeared (unable to contact), so here&#039;s the google cache&lt;br /&gt;
* [http://www.billabong-services.co.uk/jd3/jd3java.html David Patterson&#039;s guide to using Java with JD3] google cache again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[Administration]]&lt;/div&gt;</summary>
		<author><name>Zig</name></author>
	</entry>
	<entry>
		<id>https://scarlet.deltasoft.com/index.php?title=Main_Page&amp;diff=500</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://scarlet.deltasoft.com/index.php?title=Main_Page&amp;diff=500"/>
		<updated>2009-10-03T22:17:42Z</updated>

		<summary type="html">&lt;p&gt;Zig: /* How do I use this site? */  Removed &amp;quot; (Is this working?)&amp;quot;, the mailing-list had a recent message and seems to work fine&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to ScarletDME.org. [[ScarletDME]] is a OpenSource [[multivalue|MultiValue]] database, a community fork of [[OpenQM]] originally developed by [[Ladybridge]]. This project was founded on the 28th November 2008 to independently develop future versions of [[ScarletDME]] and contribute to [[OpenQM]]. &lt;br /&gt;
&lt;br /&gt;
Submissions to this project must be under the GPL version 2, with the option to use a later version if the licensee wishes.  Or they can be licensed under the LGPL if you wish to encourage and allow incorporation into proprietary products.  Contributors to [[ScarletDME]] are welcome to submit changes back to Ladybridge as well, for inclusion in Commercial QM. See [[Commercial submissions]] for details. We encourage submission to Ladybridge, the founder of this MultiValue database. We do recognise their processes are not as easy as traditional GPL projects. So we simply offer an easier forum for development with less stringent controls on contribution and participation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Name change&#039;&#039;&#039; &#039;&#039;Some of you may have noticed The new Logo (to your left) With the new Brand name, ScarletDME (Data Management Environment). This is to be the new name for the GPL project based on Ladybridges GPL OpenQM; something to distinguish GPL from commercial. Changing every name reference will take a little time to complete, until then the names GPL OpenQM and Scarlet/ScarletDME will be synonymous. You can reach this site via [http://www.scarletdme.org www.scarletdme.org].&lt;br /&gt;
The server is a VMWare Server 2 Virtual Machine located in a high-bandwidth datacentre in Amsterdam, Netherlands. It is hosted by [[User:SteveB|SteveB]] who maintains a daily backup to a secondary datacentre in Amsterdam. If you can provide a stable high bandwidth backup mirror, please contact him.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This server is DOWN/SLOW around 04:00GMT nightly for 15mins while backing up.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==For Users==&lt;br /&gt;
*[[Downloads]]: Source tarball and package builds for key platforms&lt;br /&gt;
*[[Guides &amp;amp; HOWTOs]] - Index of useful guides and HOWTO&#039;s on this Wiki&lt;br /&gt;
*[[QMBASIC Enhancements]] - QMBASIC features that are custom or were not part of the original GPL release.&lt;br /&gt;
*[http://www.scarletdme.org/bugzilla Bugzilla] reporting and tracking bugs:&lt;br /&gt;
*[[Documentation]] - Documented differences from the Commercial Documentation (Check here first, then below)&lt;br /&gt;
*[http://www.openqm.org/docs/ Documentation] (Commercial Version)&lt;br /&gt;
*General support email group: [http://groups.google.co.uk/group/openqm-opensource Register] then mailto:openqm-opensource@googlegroups.com&lt;br /&gt;
*IRC Chat: irc://irc.efnet.org/openqm or java client http://www.scarletdme.org/chat/&lt;br /&gt;
&lt;br /&gt;
====Supporting Projects====&lt;br /&gt;
Various external projects that provide tools for or API&#039;s into OpenQM&lt;br /&gt;
* [http://billabong-services.co.uk/anji Billabong Services&#039; Anji] - an open web based file browser and reporter.  Eventually to become a RAD system.  Pre-alpha grade of code. &lt;br /&gt;
*[[PHP_Native_API|PHP Native API module]]&lt;br /&gt;
*[[C++ Wrapper]]&lt;br /&gt;
*Steve Bush&#039;s [[Cygwin Port]] - Is it worth considering a MinGW port? - Would have to replace some posix bits which MinGW doesnt have.&lt;br /&gt;
* [http://www.tridentinfosys.com/ Kevin Powick&#039;s Trident Delphi wrapper]&lt;br /&gt;
&lt;br /&gt;
==For Developers==&lt;br /&gt;
For those that want to contribute to OpenQM GPL project.&lt;br /&gt;
*Subversion repository: https://scarletdme.org/svn/qmvdb/ - [[HOWTO]] &lt;br /&gt;
*Development email group: [http://www.scarletdme.org/mailman/listinfo/openqm-dev Register] then mailto:openqm-dev@dev.scarletdme.org&lt;br /&gt;
*[[Development snapshots]] - How to obtain, build, and upgrade using the snapshots.&lt;br /&gt;
*[[QM Client API]] - Documentation and Available API&#039;s for the QM remote protocol.&lt;br /&gt;
*[[Wish list]] - Things that you want &amp;amp; that we need contributors/devs for (lots of small things)&lt;br /&gt;
*[[Dynamic linking]] - Calling objects written in other languages.&lt;br /&gt;
*[[Installers]] - Installing scripts/programs or package systems&lt;br /&gt;
*[[Commercial submissions]] - Sending stuff to Ladybridge&lt;br /&gt;
&lt;br /&gt;
== How do I use this site? ==&lt;br /&gt;
&lt;br /&gt;
If you have a question on USAGE of the community version of Scarlet, then send it to the [http://groups.google.co.uk/group/scarletdme general email support group].&lt;br /&gt;
&lt;br /&gt;
If you want to discuss DEVELOPMENT of the community version of Scarlet (eg. php5 module) then send it to the [http://www.scarletdme.org/mailman/listinfo/openqm-dev development email group].&lt;br /&gt;
&lt;br /&gt;
While the email lists are best for getting attention, permanent changes in this wiki will have a longer term impact so feel free to add or change ANYTHING in this wiki.&lt;br /&gt;
&lt;br /&gt;
=== External Resources ===&lt;br /&gt;
* [[Installations]] - Places where GPL OpenQM is in use (I&#039;m attempting to create a new section for this) - http://capersqm.dnsalias.net/&lt;br /&gt;
* [http://www.rushflat.co.nz/downloads.shtml Brian Speir&#039;s Installation instructions and other downloads ]&lt;br /&gt;
* [http://openqm.blackflute.com/ Tom Delombard&#039;s old QM page.] Includes details of the tape utilities and the PHP4 module (C Wrapper) &lt;br /&gt;
* [http://sourceforge.net/projects/jd3 JD3] is a socket based server for D3 ported to QM &lt;br /&gt;
* [http://www.billabong-services.co.uk/jd3/jd3php.html David Patterson&#039;s guide to using PHP with JD3] David&#039;s original page has disappeared (unable to contact), so here&#039;s the google cache&lt;br /&gt;
* [http://www.billabong-services.co.uk/jd3/jd3java.html David Patterson&#039;s guide to using Java with JD3] google cache again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[Administration]]&lt;/div&gt;</summary>
		<author><name>Zig</name></author>
	</entry>
	<entry>
		<id>https://scarlet.deltasoft.com/index.php?title=PHP_Native_API&amp;diff=477</id>
		<title>PHP Native API</title>
		<link rel="alternate" type="text/html" href="https://scarlet.deltasoft.com/index.php?title=PHP_Native_API&amp;diff=477"/>
		<updated>2009-08-21T15:30:12Z</updated>

		<summary type="html">&lt;p&gt;Zig: Just nitpicking on a few typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The PHP native API uses a socket connection to directly connect to an open and functioning QM API socket.&lt;br /&gt;
&lt;br /&gt;
This single PHP script file can be dropped in on any PHP compatible web server and allow developer to use a series of function calls to access a QM Database with all the functionality that the QMClient API allows.&lt;br /&gt;
&lt;br /&gt;
It is currently in the developing Alpha stages:&lt;br /&gt;
&lt;br /&gt;
Make sure you have followed the [[QM-API_Server|QM Client Server setup guide]]&lt;br /&gt;
&lt;br /&gt;
==News==&lt;br /&gt;
*[[User:Diccon|Diccon]] 11:05, 6 April 2009 (UTC) Development has been paused until JD3 is fully assessed and it is determined if QMCLient is to continue getting my attention. This lib still works, others are welcome to develop on the SVN repo. Ask for commit access.&lt;br /&gt;
* [[User:Diccon|Diccon]] 15:27, 9 March 2009 (UTC) Conditional Handling code is in, needs proper testing. Now have 34/46 command done, QMCall and a few others will be last because they take a bit of time/effort.&lt;br /&gt;
*[[User:Diccon|Diccon]] 18:41, 16 February 2009 (UTC) &#039;&#039;&#039;Solved&#039;&#039;&#039; Fixed this, not 100% sure what was really happening, but i rewrote the way the login packet is constructed, to make it clearer. This fixed it. Go, Play!&lt;br /&gt;
*[[User:Diccon|Diccon]] 19:36, 27 January 2009 (UTC) &amp;lt;strike&amp;gt;&#039;&#039;&#039;Warning&#039;&#039;&#039; Active bug found, i believe username padding is not working, some odd length usernames may cause a QMERROR 3000 for line 902, when trying to write to $LOGINS. I&#039;m working on it.&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How to use==&lt;br /&gt;
[[#Download|Download]] from the SVN from below.&lt;br /&gt;
&lt;br /&gt;
Place this file in the same directory as the file that intends to use it, or place it in the library path for your PHP configuration.&lt;br /&gt;
&lt;br /&gt;
In your php code Enter the following line at the top &lt;br /&gt;
  include &amp;quot;PHPQMLib.php&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The first you need to call the connect function, something like this;&lt;br /&gt;
  qmconnect(&amp;quot;my.qm.server.com&amp;quot;, &amp;quot;4243&amp;quot;, &amp;quot;testuser&amp;quot;, &amp;quot;testpass&amp;quot;, &amp;quot;QMTESTACCOUNT&amp;quot;);&lt;br /&gt;
or &lt;br /&gt;
  qmconnect(&amp;quot;192.168.1.1&amp;quot;, &amp;quot;4243&amp;quot;, &amp;quot;testuser&amp;quot;, &amp;quot;testpass&amp;quot;, &amp;quot;QMTESTACC&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
You can now use the variety of PHPQM functions like qmread(), &lt;br /&gt;
qmdelete(), etc as you wish.&lt;br /&gt;
When you are done, for tidiness issue a;&lt;br /&gt;
  qmdisconnect();&lt;br /&gt;
command, tidlying closing the socket.&lt;br /&gt;
&lt;br /&gt;
Each page/script will need to (re)connect. Connection persistence and pooling is &lt;br /&gt;
a bit bigger than this simple lib for now.&lt;br /&gt;
&lt;br /&gt;
Check out qmLastClause() QMPHPClient function to cater for commands&lt;br /&gt;
hitting ELSE, LOCKED, etc conditions&lt;br /&gt;
&lt;br /&gt;
Generally you can follow the QMClient docs in terms of server functionality.&lt;br /&gt;
Using the below defines() as what is and is not implemented.&lt;br /&gt;
Better PHP specific docs will be written later, when we go Beta&lt;br /&gt;
&lt;br /&gt;
==Supported Features==&lt;br /&gt;
QMPHPClient supports (24/46);&lt;br /&gt;
* Qm Quit&lt;br /&gt;
* GetError&lt;br /&gt;
* Set account&lt;br /&gt;
* Open&lt;br /&gt;
* Close&lt;br /&gt;
* Read&lt;br /&gt;
* ReadL (Untested)&lt;br /&gt;
* ReadLW (Untested/partial)&lt;br /&gt;
* ReadU (Untested)&lt;br /&gt;
* ReadUL(Untested/partial)&lt;br /&gt;
* Select&lt;br /&gt;
* ReadNext&lt;br /&gt;
* ClearSelect&lt;br /&gt;
* ReadList&lt;br /&gt;
* Release&lt;br /&gt;
* Write&lt;br /&gt;
* WriteU&lt;br /&gt;
* Delete&lt;br /&gt;
* DeleteU&lt;br /&gt;
* Execute&lt;br /&gt;
* Respond&lt;br /&gt;
* Logon&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
If you want a copy, it is released under the LGPL (i.e. can be used within commercial products, but is GPL itself). It is available on the gpl.openqm Subversion repository; &#039;&#039;(Just click the link people, it&#039;s not scary, you just download the file[s])&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://www.scarletdme.org/svn/qmvdb/PHPQMLib/trunk/ http://www.scarletdme.org/svn/qmvdb/PHPQMLib/trunk/]&lt;br /&gt;
&lt;br /&gt;
==Todo Shortlist==&lt;br /&gt;
# Design and handle Conditional Execution, e.g. ELSE, LOCKED, ERROR, etc&lt;br /&gt;
# Finish implementing all simple commands/function (24/46 Done)&lt;br /&gt;
# Clean up error reporting&lt;/div&gt;</summary>
		<author><name>Zig</name></author>
	</entry>
	<entry>
		<id>https://scarlet.deltasoft.com/index.php?title=Administration&amp;diff=476</id>
		<title>Administration</title>
		<link rel="alternate" type="text/html" href="https://scarlet.deltasoft.com/index.php?title=Administration&amp;diff=476"/>
		<updated>2009-08-21T15:24:56Z</updated>

		<summary type="html">&lt;p&gt;Zig: Updated broken links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mailing List Manager http://www.scarletdme.org/mailman/admin/openqm-dev&lt;br /&gt;
&lt;br /&gt;
Tech orientated web based admin https://www.scarletdme.org:14920/&lt;br /&gt;
&lt;br /&gt;
Secure Shell ssh://www.scarletdme.org:19580&lt;br /&gt;
&lt;br /&gt;
Secure FTP sftp://www.scarletdme.org:19580&lt;br /&gt;
&lt;br /&gt;
Google Analytics https://www.google.com/analytics/home/&lt;br /&gt;
&lt;br /&gt;
[[Backup/Restore procedure]]&lt;br /&gt;
&lt;br /&gt;
[[Admin Team]]&lt;/div&gt;</summary>
		<author><name>Zig</name></author>
	</entry>
	<entry>
		<id>https://scarlet.deltasoft.com/index.php?title=Wish_list&amp;diff=475</id>
		<title>Wish list</title>
		<link rel="alternate" type="text/html" href="https://scarlet.deltasoft.com/index.php?title=Wish_list&amp;diff=475"/>
		<updated>2009-08-21T15:19:51Z</updated>

		<summary type="html">&lt;p&gt;Zig: /* Development */ fixed a couple of typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Things we need or want.&lt;br /&gt;
&lt;br /&gt;
If you can do this for the project pop your name by it to claim the job, and contact the Dev mailing list.&lt;br /&gt;
&lt;br /&gt;
To keep in touch with this slowly evolving agenda register, making sure your preferences [http://www.scarletdme.org/wiki/Special:Preferences] include &amp;quot;E-mail me when a page on my watchlist is changed&amp;quot;, and that you are logged in, and click the &amp;quot;watch&amp;quot; tab at the top of this page.&lt;br /&gt;
&lt;br /&gt;
==Development==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Wished&lt;br /&gt;
! Diccon&lt;br /&gt;
! Karaken12&lt;br /&gt;
! Ashley&lt;br /&gt;
! DanW&lt;br /&gt;
! SteveB&lt;br /&gt;
! Geneb&lt;br /&gt;
! 7&lt;br /&gt;
! 8&lt;br /&gt;
! 9&lt;br /&gt;
! 0&lt;br /&gt;
! 1&lt;br /&gt;
! 2&lt;br /&gt;
! 3&lt;br /&gt;
! 4&lt;br /&gt;
! 5&lt;br /&gt;
! 6&lt;br /&gt;
! 7&lt;br /&gt;
! 8&lt;br /&gt;
! 9&lt;br /&gt;
! 0&lt;br /&gt;
|-&lt;br /&gt;
|Accumulate Existing bugfixes into subversion - &#039;&#039;&#039;IMPORTANT&#039;&#039;&#039;; Can anyone with existing bug fixes please email [[Admin Team]] or commit them into our subversion trunk [[HOWTO]]. (1 Done Thanks Ashley)&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
|Makefile - &#039;&#039;&#039;TAKEN&#039;&#039;&#039; - [[User:Diccon|Diccon]] (Thanks to Andruk Tatum for the Original on Google group, only minor tweaks to get working on our source)&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
|Lastest version DEB package&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
|QM API list compression&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
|XML Database layer&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
|XQuery Engine&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
|Interface to Maverick running inside a JVM in a web-browser so as to implement client-side form processing in multivalue BASIC.&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
|Specific flavoured compatibility modes (eg D3 mode, Sequoia mode)&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
|Code porting program, similar to jBase&#039;s PORT.BAS (ideal for Perl regexp?)&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
|QM BASIC Subversion client wrapper - Simple way to get Pickies onboard. - &#039;&#039;&#039;TAKEN&#039;&#039;&#039; - [[User:Karaken12|Karaken12]] I&#039;ve already done this, although it does need some cleaning up.&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
|QM Virtual File System (VFS) for some SQL database(s)&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
|Pref to set SCROLL option as default ON for all access statements&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;FOR EACH&amp;quot; BASIC syntax (Like perl and other languages)&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
|Utility to use dictionary names for handling a record instead of direct AM addressing (possibly using OO QM) - &#039;&#039;&#039;In-Dev&#039;&#039;&#039; - [[User:Glenb|Glenb]] - workdevbranch1 GPL.BP has a DICT.TOOLS.CLS QMOO class for testing and development. Writing via dicts is not yet functional; discussion needed on I-types.&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
|Enhancement to the Cygwin Windows port to address poor IPC performance. (Ashley looking at this)&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
Rework the equate tokens (As done in closed QM 2.6-10)&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
#Digits mean nothing and are just to make it easier to edit the weird wiki table format.&lt;br /&gt;
#If you have a column, please change your digit to indicate any preferences e.g. + ++ ++ - -- ---. You can use empty columns and add your name in the column heading or add more columns.&lt;br /&gt;
&lt;br /&gt;
==Sysadmin==&lt;br /&gt;
*Sort /var/www or Apache so we dont have to multi sym link to get dirs visible. - &#039;&#039;&#039;TAKEN&#039;&#039;&#039; - [[User:DanW|DanW]] I&#039;ll sort this, I think a simple landing page with links to the various bits of the system will simplify our directory structure somewhat.&lt;br /&gt;
&amp;lt;strike&amp;gt;*ftp access? (not sure if we need this) &#039;&#039;&#039;TAKEN&#039;&#039;&#039; -  [[User:DanW|DanW]] - I can set up SFTP access, somewhat more secure than FTP&amp;lt;/strike&amp;gt; See [[SFTP]]&lt;br /&gt;
*SVN compatibility/capability with hashed files&lt;br /&gt;
&amp;lt;strike&amp;gt;*A proper Bug Tracker.  This page will do for now, but it would be much better to have a real tool.&amp;lt;/strike&amp;gt; - [http://www.scarletdme.org/bugzilla Bugzilla up]&lt;br /&gt;
&lt;br /&gt;
==Bugfixes==&lt;br /&gt;
[[List of fixed bugs in the commercial version of OpenQM (Current as of 2.8-10)]]&lt;br /&gt;
&lt;br /&gt;
==General Bright Ideas==&lt;br /&gt;
* point SORTWORK to a RAMFS mount, would provide very fast sort handling. (Ashley notes:  Altering the SORTMEM parameter does the same)&lt;br /&gt;
* A bit blue-sky, but something I&#039;ve wanted to work on for ages: full Unicode support.&lt;br /&gt;
* Construct a &amp;quot;High performance&amp;quot; benchmark and tuning section&lt;br /&gt;
*Define a &amp;quot;core&amp;quot; of standardised multivalue capabilities that is implemented in all systems, so porting between systems requires zero modifications.&lt;/div&gt;</summary>
		<author><name>Zig</name></author>
	</entry>
	<entry>
		<id>https://scarlet.deltasoft.com/index.php?title=Wish_list&amp;diff=474</id>
		<title>Wish list</title>
		<link rel="alternate" type="text/html" href="https://scarlet.deltasoft.com/index.php?title=Wish_list&amp;diff=474"/>
		<updated>2009-08-21T15:14:55Z</updated>

		<summary type="html">&lt;p&gt;Zig: Hunting broken links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Things we need or want.&lt;br /&gt;
&lt;br /&gt;
If you can do this for the project pop your name by it to claim the job, and contact the Dev mailing list.&lt;br /&gt;
&lt;br /&gt;
To keep in touch with this slowly evolving agenda register, making sure your preferences [http://www.scarletdme.org/wiki/Special:Preferences] include &amp;quot;E-mail me when a page on my watchlist is changed&amp;quot;, and that you are logged in, and click the &amp;quot;watch&amp;quot; tab at the top of this page.&lt;br /&gt;
&lt;br /&gt;
==Development==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Wished&lt;br /&gt;
! Diccon&lt;br /&gt;
! Karaken12&lt;br /&gt;
! Ashley&lt;br /&gt;
! DanW&lt;br /&gt;
! SteveB&lt;br /&gt;
! Geneb&lt;br /&gt;
! 7&lt;br /&gt;
! 8&lt;br /&gt;
! 9&lt;br /&gt;
! 0&lt;br /&gt;
! 1&lt;br /&gt;
! 2&lt;br /&gt;
! 3&lt;br /&gt;
! 4&lt;br /&gt;
! 5&lt;br /&gt;
! 6&lt;br /&gt;
! 7&lt;br /&gt;
! 8&lt;br /&gt;
! 9&lt;br /&gt;
! 0&lt;br /&gt;
|-&lt;br /&gt;
|Accumulate Existing bugfixes into subversion - &#039;&#039;&#039;IMPORTANT&#039;&#039;&#039;; Can anyone with existing bug fixes please email [[Admin Team]] or commit them into our subversion trunk [[HOWTO]]. (1 Done Thanks Ashley)&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
|Makefile - &#039;&#039;&#039;TAKEN&#039;&#039;&#039; - [[User:Diccon|Diccon]] (Thanks to Andruk Tatum for the Original on Google group, only minor tweaks to get working on our source)&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
|Lastest version DEB package&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
|QM API list compression&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
|XML Database layer&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
|XQuery Engine&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
|Interface to Maverick running inside a JVM in a web-browser so as to implement client-side form processing in multivalue BASIC.&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
|Specific flavoured compatibility modes (eg D3 mode, Sequoia mode)&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
|Code porting program, similar to jBase&#039;s PORT.BAS (ideal for Perl regexp?)&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
|QM BASIC Subversion client wrapper - Simple way to get Pickies onboard. - &#039;&#039;&#039;TAKEN&#039;&#039;&#039; - [[User:Karaken12|Karaken12]] I&#039;ve already done this, although it does need some cleaning up.&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
|QM Virtual File System (VFS) for some SQL database(s)&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
|Pref to set SCROLL option as default ON for all access statements&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;FOR EACH&amp;quot; BASIC syntax (Like perl and other languages)&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
|Utility to use dictionary names for handling a record instead of direct AM addressing (possibly using OO QM) - &#039;&#039;&#039;In-Dev&#039;&#039;&#039; - [[User:Glenb|Glenb]] - workdevbranch1 GPL.BP has a DICT.TOOLS.CLS QMOO class for testing and development. Writing via dicts is not yet functional; discussion needed on I-types.&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
|Enhancment to the Cygwin Windows port to address poor IPC performance. (Ashley looking at this)&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
Rework the equate tokens (As done in closed QM 2.6-10)&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
! 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
#Digits mean nothing and are just to make it easier to edit the weird wiki table format.&lt;br /&gt;
#If you have a column, please change your digit to indicate any preferences eg + ++ ++ - -- ---. You can use empty columns and add your name in the column heading or add more columns.&lt;br /&gt;
&lt;br /&gt;
==Sysadmin==&lt;br /&gt;
*Sort /var/www or Apache so we dont have to multi sym link to get dirs visible. - &#039;&#039;&#039;TAKEN&#039;&#039;&#039; - [[User:DanW|DanW]] I&#039;ll sort this, I think a simple landing page with links to the various bits of the system will simplify our directory structure somewhat.&lt;br /&gt;
&amp;lt;strike&amp;gt;*ftp access? (not sure if we need this) &#039;&#039;&#039;TAKEN&#039;&#039;&#039; -  [[User:DanW|DanW]] - I can set up SFTP access, somewhat more secure than FTP&amp;lt;/strike&amp;gt; See [[SFTP]]&lt;br /&gt;
*SVN compatibility/capability with hashed files&lt;br /&gt;
&amp;lt;strike&amp;gt;*A proper Bug Tracker.  This page will do for now, but it would be much better to have a real tool.&amp;lt;/strike&amp;gt; - [http://www.scarletdme.org/bugzilla Bugzilla up]&lt;br /&gt;
&lt;br /&gt;
==Bugfixes==&lt;br /&gt;
[[List of fixed bugs in the commercial version of OpenQM (Current as of 2.8-10)]]&lt;br /&gt;
&lt;br /&gt;
==General Bright Ideas==&lt;br /&gt;
* point SORTWORK to a RAMFS mount, would provide very fast sort handling. (Ashley notes:  Altering the SORTMEM parameter does the same)&lt;br /&gt;
* A bit blue-sky, but something I&#039;ve wanted to work on for ages: full Unicode support.&lt;br /&gt;
* Construct a &amp;quot;High performance&amp;quot; benchmark and tuning section&lt;br /&gt;
*Define a &amp;quot;core&amp;quot; of standardised multivalue capabilities that is implemented in all systems, so porting between systems requires zero modifications.&lt;/div&gt;</summary>
		<author><name>Zig</name></author>
	</entry>
	<entry>
		<id>https://scarlet.deltasoft.com/index.php?title=QM_Client_API&amp;diff=473</id>
		<title>QM Client API</title>
		<link rel="alternate" type="text/html" href="https://scarlet.deltasoft.com/index.php?title=QM_Client_API&amp;diff=473"/>
		<updated>2009-08-21T15:10:58Z</updated>

		<summary type="html">&lt;p&gt;Zig: /* Protocol */ Another bad link fixed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
QM provides a remote API access to any client system that can get to the server via socket 4243, and obeys the protocol.&lt;br /&gt;
&lt;br /&gt;
==Server Setup==&lt;br /&gt;
QM is technically able to handle API connections about of the box. However your server will need some configuring. (RPM will do this for you in near future).&lt;br /&gt;
&lt;br /&gt;
[[QM-API Server | QM API Server setup guide]]&lt;br /&gt;
&lt;br /&gt;
==Protocol==&lt;br /&gt;
The following is a guide to the protocol that the server responds to.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Currently a working document, far from perfect, but you get the idea:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://www.scarletdme.org/downloads/QMClient-Protocol.v0.3.alpha.pdf QMClient-Protocol.v0.3.alpha.pdf]&lt;br /&gt;
&lt;br /&gt;
==News==&lt;br /&gt;
*[[User:Diccon|Diccon]] 15 Jan 2009 &#039;&#039;&#039;Update&#039;&#039;&#039; - The packet header docs have been updated, and the whole login process is pretty clean. The docs are missing a large number of the simpler commands, but they are pretty easy to figure out from the VBSRVR basic code in GPL.BP. I will write them out progressivly.&lt;br /&gt;
*[[User:Diccon|Diccon]] 12 Jan 2009 &#039;&#039;&#039;Resolved&#039;&#039;&#039; - Turns out it was the new server environment. However the Documentation is slightly wrong for the login protocol. Login is actually a server command not a special case. Will try and update the docs and debug the further issues on the test server environment.&lt;br /&gt;
*[[User:Diccon|Diccon]] 8 Dec 2008 &#039;&#039;&#039;Confirmed&#039;&#039;&#039; - Functioning Java-QM client for 2.4.17 does not work on 2.6.6. Exact reason why has yet to be determined. Should have some answers soon, new year 2009 has a need for the Java API on 266.&lt;br /&gt;
*[[User:Diccon|Diccon]] 7 December 2008 &#039;&#039;&#039;Warning:&#039;&#039;&#039; I have suspicions that the protocol changed for login quite dramatically for 2-6-6, as opposed to 2-4-17 which this Spec doc was originally based on.&lt;br /&gt;
&lt;br /&gt;
==API library&#039;s==&lt;br /&gt;
* C - native - Released&lt;br /&gt;
* Visual Basic - native - released (library only released with commercial?)&lt;br /&gt;
* [[JavaQM-API|Java API]] - native - Alpha stage&lt;br /&gt;
* Delphi - Wrapper - (native expected Q1 2009)&lt;br /&gt;
* PHP - wrapper - Beta (TomDel)&lt;br /&gt;
* [[PHP Native API]] - Alpha stages but alive and kicking&lt;br /&gt;
* [[C++ Wrapper]]&lt;/div&gt;</summary>
		<author><name>Zig</name></author>
	</entry>
	<entry>
		<id>https://scarlet.deltasoft.com/index.php?title=Cygwin_Port&amp;diff=470</id>
		<title>Cygwin Port</title>
		<link rel="alternate" type="text/html" href="https://scarlet.deltasoft.com/index.php?title=Cygwin_Port&amp;diff=470"/>
		<updated>2009-08-21T15:05:37Z</updated>

		<summary type="html">&lt;p&gt;Zig: Yet another little link update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Discussion [http://groups.google.com/group/OpenQMCygwin Google Group] Slow speed/possible poor Cygwin IPC implementation.&lt;br /&gt;
&lt;br /&gt;
[http://www.scarletdme.org/downloads/openqmcygwin.zip openqmcygwin.zip]&lt;br /&gt;
&lt;br /&gt;
Note that the qm runtime built here only requires a smallish cygwin1.dll (not the full cygwin install) to provide some posix functionality that is not provided by mingw/msvc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
July 2006&lt;br /&gt;
&lt;br /&gt;
Here it is. The file is a bit big since I put some screen caps of the&lt;br /&gt;
generic cygwin install process to try and get people up to speed quickly.&lt;br /&gt;
&lt;br /&gt;
http://www.neosys.com/software/openqmcygwin.zip&lt;br /&gt;
&lt;br /&gt;
I couldn&#039;t make a proper install script yet.&lt;br /&gt;
&lt;br /&gt;
Also I can only get telnet (to qm) working by running xinetd service from a&lt;br /&gt;
cygwin command line and not as a proper installed service. I&#039;m pretty&lt;br /&gt;
certain that it is a permissions issue. Perhaps someone can explain how to&lt;br /&gt;
get the usual inetd daemon running instead of xinetd. The command is&lt;br /&gt;
&amp;quot;/usr/sbin/xinetd -d&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Cheers,&lt;br /&gt;
Steve&lt;br /&gt;
&lt;br /&gt;
INSTALL CHECKLIST&lt;br /&gt;
&lt;br /&gt;
- install cygwin default (for all users not &amp;quot;just me&amp;quot;)&lt;br /&gt;
add the following:&lt;br /&gt;
- development - GCC compiler&lt;br /&gt;
- net - xinetd&lt;br /&gt;
- admin - cygrunsrv&lt;br /&gt;
- editors - vim&lt;br /&gt;
&lt;br /&gt;
- unpack openqm distro file to be /usr/qmsys (c:\cygwin\usr\qmsys)&lt;br /&gt;
&lt;br /&gt;
in cygwin:&lt;br /&gt;
cd /usr/qmsys&lt;br /&gt;
./buildgpl            (should be no errors/warnings except maybe qmconv&lt;br /&gt;
doesn&#039;t compile)&lt;br /&gt;
&lt;br /&gt;
create a file /etc/qmconfig containing: (caps required!)&lt;br /&gt;
[QM]&lt;br /&gt;
QMSYS=/usr/qmsys&lt;br /&gt;
NUMUSERS=9&lt;br /&gt;
&lt;br /&gt;
To enable qmconsole&lt;br /&gt;
-------------------&lt;br /&gt;
in My Computer properties, Advanced, Environment Variables, Add SYSTEM Env&lt;br /&gt;
Variable&lt;br /&gt;
- CYGWIN system environment variable to include the word &amp;quot;server&amp;quot; space to&lt;br /&gt;
sep other words&lt;br /&gt;
then *CLOSE* and reopen all cygwin consoles!&lt;br /&gt;
&lt;br /&gt;
in cygwin&lt;br /&gt;
cygserver-config to install as a service&lt;br /&gt;
chmod 666 /var/log/cygserver.log&lt;br /&gt;
net start cygserver&lt;br /&gt;
or&lt;br /&gt;
/usr/sbin/cygserver -d&lt;br /&gt;
and read the screen to see that cygserver is running&lt;br /&gt;
(nb service permissions may be less than console permissions)&lt;br /&gt;
&lt;br /&gt;
then&lt;br /&gt;
cd /usr/qmsys&lt;br /&gt;
bin/qm -start   (if you get Bad System Command then close and restart all&lt;br /&gt;
cygwin consoles and restart cygserver service)&lt;br /&gt;
          (it should reply QM has been started&lt;br /&gt;
bin/qm    (should open a console for you with no login required)&lt;br /&gt;
&lt;br /&gt;
To enable telnet and client&lt;br /&gt;
---------------------------&lt;br /&gt;
cd /usr/qmsys&lt;br /&gt;
bin/qm -start (if you haven&#039;t already done so)&lt;br /&gt;
&lt;br /&gt;
- copy sample file from this folder (qmclient and qmsrvr) service def files&lt;br /&gt;
to /etc/xinetd.d folder&lt;br /&gt;
- change to a valid administrator user name embedded in the above files&lt;br /&gt;
- dos2unix /etc/xinetd.d/*&lt;br /&gt;
&lt;br /&gt;
- /etc/services to have lines for qmclient tcp 4242 and qmsrvr tcp 4243&lt;br /&gt;
qmsrvr           4242/tcp                           #OpenQM Telnet Server&lt;br /&gt;
qmclient         4243/tcp                           #OpenQM Client Access&lt;br /&gt;
&lt;br /&gt;
- start xinetd.d as follows&lt;br /&gt;
cd /usr/sbin&lt;br /&gt;
./xinetd -d&lt;br /&gt;
and read screen log to ensure qmclient and qmsrvr services are loaded&lt;br /&gt;
control+c to stop&lt;br /&gt;
the following to add as a service&lt;br /&gt;
cygrunsrv -I xinetd -p /usr/sbin/xinetd&lt;br /&gt;
&lt;br /&gt;
look in win application event log if fail to start&lt;br /&gt;
/var/log/service log records connections&lt;br /&gt;
maybe need to chmod 666 /var/log/servicelog&lt;br /&gt;
&lt;br /&gt;
telnet localhost 4242&lt;br /&gt;
&lt;br /&gt;
login with any valid win32 user name and password&lt;br /&gt;
for account put qmsys&lt;br /&gt;
&lt;br /&gt;
DONE! &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zig</name></author>
	</entry>
	<entry>
		<id>https://scarlet.deltasoft.com/index.php?title=C%2B%2B_Wrapper&amp;diff=469</id>
		<title>C++ Wrapper</title>
		<link rel="alternate" type="text/html" href="https://scarlet.deltasoft.com/index.php?title=C%2B%2B_Wrapper&amp;diff=469"/>
		<updated>2009-08-21T15:03:30Z</updated>

		<summary type="html">&lt;p&gt;Zig: Updated a couple of broken links.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a class for interfacing with the qmclilib library.  It should make it easier to interface when using C++, as it converts C++ strings into C strings and calls the appropriate function in qmclilib.&lt;br /&gt;
&lt;br /&gt;
[http://www.scarletdme.org/wiki/images/b/b9/Libqm%2B%2B.h libqm++.h]&lt;br /&gt;
[http://www.scarletdme.org/wiki/images/2/27/Libqm%2B%2B.cpp libqm++.cpp]&lt;/div&gt;</summary>
		<author><name>Zig</name></author>
	</entry>
	<entry>
		<id>https://scarlet.deltasoft.com/index.php?title=PHP_Native_API&amp;diff=468</id>
		<title>PHP Native API</title>
		<link rel="alternate" type="text/html" href="https://scarlet.deltasoft.com/index.php?title=PHP_Native_API&amp;diff=468"/>
		<updated>2009-08-21T15:01:26Z</updated>

		<summary type="html">&lt;p&gt;Zig: /* Download */ Updated a broken link pointing to gpl.openqm&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The PHP native API uses a socket connection to directly connect to an open and functioning QM API socket.&lt;br /&gt;
&lt;br /&gt;
This single PHP script file can be dropped in on any PHP compatible web server and allow developer to use a series of function calls to access a QM Database with all the functionality that the QMClient API allows.&lt;br /&gt;
&lt;br /&gt;
It is currently in the developing Alpha stages:&lt;br /&gt;
&lt;br /&gt;
Make sure you have followed the [[QM-API_Server|QM Client Server setup guide]]&lt;br /&gt;
&lt;br /&gt;
==News==&lt;br /&gt;
*[[User:Diccon|Diccon]] 11:05, 6 April 2009 (UTC) Development has been paused until JD3 is fully assessed and it is determined if QMCLient is to continue getting my attention. This lib still works, others are welcome to develop on the SVN repo. Ask for commit access.&lt;br /&gt;
* [[User:Diccon|Diccon]] 15:27, 9 March 2009 (UTC) Conditional Handling code is in, needs proper testing. Now have 34/46 command done, QMCall and a few others will be last because they take a bit of time/effort.&lt;br /&gt;
*[[User:Diccon|Diccon]] 18:41, 16 February 2009 (UTC) &#039;&#039;&#039;Solved&#039;&#039;&#039; Fixed this, not 100% sure what was really happening, but i rewrote the way the login packet is constructed, to make it clearer. This fixed it. Go, Play!&lt;br /&gt;
*[[User:Diccon|Diccon]] 19:36, 27 January 2009 (UTC) &amp;lt;strike&amp;gt;&#039;&#039;&#039;Warning&#039;&#039;&#039; Active bug found, i believe username padding is not working, some odd length usernames may cause a QMERROR 3000 for line 902, when trying to write to $LOGINS. I&#039;m working on it.&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==How to use==&lt;br /&gt;
[[#Download|Download]] from the SVN from below.&lt;br /&gt;
&lt;br /&gt;
Place this file in the same directory as the file that intends to use it, or place it in the library path for your PHP configuration.&lt;br /&gt;
&lt;br /&gt;
In your php code Enter the following line at the top &lt;br /&gt;
  include &amp;quot;PHPQMLib.php&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The first you need to call the connect function, something like this;&lt;br /&gt;
  qmconnect(&amp;quot;my.qm.server.com&amp;quot;, &amp;quot;4243&amp;quot;, &amp;quot;testuser&amp;quot;, &amp;quot;testpass&amp;quot;, &amp;quot;QMTESTACCOUNT&amp;quot;);&lt;br /&gt;
or &lt;br /&gt;
  qmconnect(&amp;quot;192.168.1.1&amp;quot;, &amp;quot;4243&amp;quot;, &amp;quot;testuser&amp;quot;, &amp;quot;testpass&amp;quot;, &amp;quot;QMTESTACC&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
You can now use the variety of PHPQM functions like qmread(), &lt;br /&gt;
qmdelete(), etc as you wish.&lt;br /&gt;
When you are done, for tidyness issue a;&lt;br /&gt;
  qmdisconnect();&lt;br /&gt;
command, tidlying closing the socket.&lt;br /&gt;
&lt;br /&gt;
Each page/script will need to (re)connect. Connection persistance and pooling is &lt;br /&gt;
a bit bigger than this simple lib for now.&lt;br /&gt;
&lt;br /&gt;
Check out qmLastClause() QMPHPClient function to cater for commands&lt;br /&gt;
hitting ELSE, LOCKED, etc conditions&lt;br /&gt;
&lt;br /&gt;
Generally you can follow the QMClient docs in terms of server functionality.&lt;br /&gt;
Using the below defines() as what is and is not implimented.&lt;br /&gt;
Better PHP specific docs will be written later, when we go Beta&lt;br /&gt;
&lt;br /&gt;
==Supported Features==&lt;br /&gt;
QMPHPClient supports (24/46);&lt;br /&gt;
* Qm Quit&lt;br /&gt;
* GetError&lt;br /&gt;
* Set account&lt;br /&gt;
* Open&lt;br /&gt;
* Close&lt;br /&gt;
* Read&lt;br /&gt;
* ReadL (Untested)&lt;br /&gt;
* ReadLW (Untested/partial)&lt;br /&gt;
* ReadU (Untested)&lt;br /&gt;
* ReadUL(Untested/partial)&lt;br /&gt;
* Select&lt;br /&gt;
* ReadNext&lt;br /&gt;
* ClearSelect&lt;br /&gt;
* ReadList&lt;br /&gt;
* Release&lt;br /&gt;
* Write&lt;br /&gt;
* WriteU&lt;br /&gt;
* Delete&lt;br /&gt;
* DeleteU&lt;br /&gt;
* Execute&lt;br /&gt;
* Respond&lt;br /&gt;
* Logon&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
If you want a copy, it is released under the LGPL (i.e. can be used within commercial products, but is GPL itself). It is available on the gpl.openqm Subversion repository; &#039;&#039;(Just click the link people, its not scairy, you just download the file[s])&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://www.scarletdme.org/svn/qmvdb/PHPQMLib/trunk/ http://www.scarletdme.org/svn/qmvdb/PHPQMLib/trunk/]&lt;br /&gt;
&lt;br /&gt;
==Todo Shortlist==&lt;br /&gt;
# Design and handle Conditional Execution, eg ELSE, LOCKED, ERROR, etc&lt;br /&gt;
# Finish implimenting all simple commands/function (24/46 Done)&lt;br /&gt;
# Clean up error reporting&lt;/div&gt;</summary>
		<author><name>Zig</name></author>
	</entry>
	<entry>
		<id>https://scarlet.deltasoft.com/index.php?title=Subversion_Repository:_HOWTO&amp;diff=467</id>
		<title>Subversion Repository: HOWTO</title>
		<link rel="alternate" type="text/html" href="https://scarlet.deltasoft.com/index.php?title=Subversion_Repository:_HOWTO&amp;diff=467"/>
		<updated>2009-08-21T14:55:05Z</updated>

		<summary type="html">&lt;p&gt;Zig: /* Walkthrough */ Yet another broken link termina...updated.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Terminology ===&lt;br /&gt;
&lt;br /&gt;
#Checkout - downloads a copy for the first time&lt;br /&gt;
#&#039;&#039;&#039;Update&#039;&#039;&#039; - downloads your copy with any changes in the repository&lt;br /&gt;
#&#039;&#039;&#039;Commit&#039;&#039;&#039; - uploads any changes you made in your copy to the repository&lt;br /&gt;
#Import - upload - can be replaced by a combination of update/commit&lt;br /&gt;
&lt;br /&gt;
repo - repository&lt;br /&gt;
&lt;br /&gt;
depo - your copy&lt;br /&gt;
&lt;br /&gt;
=== Acquiring rights to commit ===&lt;br /&gt;
&lt;br /&gt;
To commit you must have a username and password which is given by an admin with root perms on gpl.openqm.com or you can choose your own password by sending the output of the following command to an admin ([[Admin_Team]] and look for subversion)&lt;br /&gt;
&lt;br /&gt;
 htpasswd -n yourdesiredusername&lt;br /&gt;
&lt;br /&gt;
then any gpl.openqm.com server admin (with root or sudo access) can grant user yourdesiredusername access with the following command. It will ask for the password which is hashed password after the : in the output of the above/previous htpasswd command.&lt;br /&gt;
&lt;br /&gt;
 htpasswd /etc/subversion/passwd yourdesiredusername&lt;br /&gt;
&lt;br /&gt;
Then commit with something like the following. username is usually cached and only required the first time.&lt;br /&gt;
&lt;br /&gt;
 svn --username yourdesiredusername commit&lt;br /&gt;
&lt;br /&gt;
== Command Line User Interface ==&lt;br /&gt;
&lt;br /&gt;
Assumes you have already installed Subversion.&lt;br /&gt;
&lt;br /&gt;
Looks complicated but boils down to issuing two commands. One to checkout the project or to update your already checked project. Two to commit your changes.&lt;br /&gt;
&lt;br /&gt;
=== Walkthrough ===&lt;br /&gt;
&lt;br /&gt;
Make a working directory if you don’t have one&lt;br /&gt;
&lt;br /&gt;
 mkdir qmvdb&lt;br /&gt;
&lt;br /&gt;
OR, if you already checked out a copy of the repo, just change into your working directory&lt;br /&gt;
&lt;br /&gt;
 cd qmvdb&lt;br /&gt;
&lt;br /&gt;
If you just made the working directory then use svn checkout to get a copy of the project (all branches, tags and trunk of project openqm in this example)&lt;br /&gt;
&lt;br /&gt;
 svn checkout https://www.scarletdme.org/svn/qmvdb/openqm&lt;br /&gt;
&lt;br /&gt;
OR, if you already checked out a copy of the repo, then best to ensure you are working on the latest version to avoid later work resolving any conflicts with other people&#039;s edits.&lt;br /&gt;
&lt;br /&gt;
 svn update&lt;br /&gt;
&lt;br /&gt;
Find the file you want to work on (dh_ak.c in this example)&lt;br /&gt;
&lt;br /&gt;
 find . -name dh_ak.c&lt;br /&gt;
&lt;br /&gt;
See the list of alternatives in different branches&lt;br /&gt;
&lt;br /&gt;
 ./openqm/tags/release-2.6.6/gplsrc/dh_ak.c&lt;br /&gt;
 ./openqm/branches/workdevbranch1/gplsrc/dh_ak.c&lt;br /&gt;
 ./openqm/trunk/gplsrc/dh_ak.c&lt;br /&gt;
&lt;br /&gt;
Decide to edit version of the file in the trunk directly. Only put tested changes in the trunk because people expect it to be stable at all times.&lt;br /&gt;
&lt;br /&gt;
 vi ./openqm/trunk/gplsrc/dh_ak.c&lt;br /&gt;
&lt;br /&gt;
Example edit:&lt;br /&gt;
&lt;br /&gt;
 if (big_dict_rec)&lt;br /&gt;
  {&lt;br /&gt;
   /*SB patch from AC from MP/Sep08*/&lt;br /&gt;
   /*ak_header.itype_ptr = ak_header_size + DH_AK_NODE_SIZE;*/&lt;br /&gt;
   if (header.file_version &amp;lt; 2)&lt;br /&gt;
    {&lt;br /&gt;
     ak_header.itype_ptr = DH_AK_NODE_SIZE + ak_header_size;&lt;br /&gt;
    }&lt;br /&gt;
   else&lt;br /&gt;
    {&lt;br /&gt;
     ak_header.itype_ptr = 2;&lt;br /&gt;
    }&lt;br /&gt;
  } &lt;br /&gt;
&lt;br /&gt;
Optionally check that nobody else has, since you last got the file, edited and committed the same section that you edited - and reconcile any conflicts interactively if necessary.&lt;br /&gt;
&lt;br /&gt;
 svn update&lt;br /&gt;
&lt;br /&gt;
Optionally ask subversion to show you a diff of all changes you made in the whole tree&lt;br /&gt;
&lt;br /&gt;
 svn diff&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Index: openqm/trunk/gplsrc/dh_ak.c&lt;br /&gt;
===================================================================&lt;br /&gt;
--- openqm/trunk/gplsrc/dh_ak.c (revision 10)&lt;br /&gt;
+++ openqm/trunk/gplsrc/dh_ak.c (working copy)&lt;br /&gt;
@@ -1892,7 +1892,16 @@&lt;br /&gt;
  big_dict_rec = (dict_rec_len &amp;gt; AK_CODE_BYTES);&lt;br /&gt;
  if (big_dict_rec)&lt;br /&gt;
   {&lt;br /&gt;
-   ak_header.itype_ptr = ak_header_size + DH_AK_NODE_SIZE;&lt;br /&gt;
+   /*SB patch from AC from MP/Sep08*/&lt;br /&gt;
+   /*ak_header.itype_ptr = ak_header_size + DH_AK_NODE_SIZE;*/&lt;br /&gt;
+   if (header.file_version &amp;lt; 2)&lt;br /&gt;
+    {&lt;br /&gt;
+     ak_header.itype_ptr = DH_AK_NODE_SIZE + ak_header_size;&lt;br /&gt;
+    }&lt;br /&gt;
+   else&lt;br /&gt;
+    {&lt;br /&gt;
+     ak_header.itype_ptr = 2;&lt;br /&gt;
+    }&lt;br /&gt;
   }&lt;br /&gt;
  else   /* Short enough to store in AK header */&lt;br /&gt;
   {&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Commit your changes WITH A CONCISE COMMENT ABOUT ITS PURPOSE so people can get a good idea by looking at the log.  This is so important that if you don&#039;t include a log message, Subversion will ask you for one.  It is suggested that you do &#039;&#039;not&#039;&#039; include a message on the command line, so you can use the editor of your choice to write the message.   The key advantage to this (other than being able to write multiline comments more easily) is that it shows you *exactly* which files it&#039;s going to commit (along with why, if you can read the codes).  If you&#039;ve forgotten something, or are commiting something you didn&#039;t mean to, you can just quit the editor and Subversion will ask you if you want to quit.  It helps to avoid unnecessary commits and embarrassing log comments.  To commit using this method, use&lt;br /&gt;
&lt;br /&gt;
 svn --username yourname commit trunk/gplsrc/dh_ak.c&lt;br /&gt;
&lt;br /&gt;
or, to write your message on the command line,&lt;br /&gt;
&lt;br /&gt;
 svn --username yourname commit -m &amp;quot;Bug fix for indexing on complex fields in non-VERSION 1 files from MP in Sep08 via AC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If you made an edit to a file and then backed out the change, you can easily revert back to the svn version of the file using &amp;quot;revert&amp;quot;:&lt;br /&gt;
 svn revert gplsrc/op_sh.c&lt;br /&gt;
&lt;br /&gt;
This would replace your copy of op_sh.c with the one from the source repository.&lt;br /&gt;
&lt;br /&gt;
Note that in order for svn to open your editor, you need to have the SVN_EDITOR environment variable set.  You can do this by entering the following command at the shell prompt.  Alternately, you can add the command to your .bashrc file so you don&#039;t need to remember to re-enter the command each time you log in.&lt;br /&gt;
 export SVN_EDITOR=&amp;lt;your editor of choice&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Graphic User Interface - Windows Tortoise ==&lt;br /&gt;
&lt;br /&gt;
=== Walkthrough ===&lt;br /&gt;
&lt;br /&gt;
http://tortoisesvn.tigris.org/&lt;br /&gt;
&lt;br /&gt;
This is a minimal but totally functional how to checkout from, and commit to, gpl.openqm in Windows using the Tortoise Windows Explorer shell extension. Think of Tortoise as a folder sync tool which pops up reconciliation screens where conflicts occur between people&#039;s edits.&lt;br /&gt;
&lt;br /&gt;
The interesting bits of source code management automatically jump out at you later when two people work on the same SECTION of the same file at the same time ie between checkout/update and commit.&lt;br /&gt;
&lt;br /&gt;
*You commit a file which has also committed by someone else AFTER you checked it out&lt;br /&gt;
*You update your depo from repo and someone has committed changes to a file that you have already locally changed.&lt;br /&gt;
&lt;br /&gt;
In these cases you get presented with opportunity to compare and reconcile the two edits in a neat side by side window.&lt;br /&gt;
&lt;br /&gt;
=== Other tools===&lt;br /&gt;
&lt;br /&gt;
Visual Studio - http://ankhsvn.open.collab.net/&lt;br /&gt;
&lt;br /&gt;
Eclipse - http://subclipse.tigris.org/&lt;br /&gt;
&lt;br /&gt;
Netbeans supports it natively now too. &amp;lt;Diccon&amp;gt; Bean a life saver.  (Can we have a few hints, Diccon?)&lt;br /&gt;
&lt;br /&gt;
=== Installation === &lt;br /&gt;
&lt;br /&gt;
http://tortoisesvn.net/downloads&lt;br /&gt;
&lt;br /&gt;
Might need a reboot&lt;br /&gt;
&lt;br /&gt;
=== Checking Out ===&lt;br /&gt;
&lt;br /&gt;
Right click on your desktop and choose SVN CHECKOUT&lt;br /&gt;
&lt;br /&gt;
Fill in the details&lt;br /&gt;
&lt;br /&gt;
URL? https://www.scarletdme.org/svn/qmvdb&lt;br /&gt;
&lt;br /&gt;
Checkout Folder? D:\Documents and settings\steve\Desktop\TESTIT&lt;br /&gt;
&lt;br /&gt;
Click OK&lt;br /&gt;
&lt;br /&gt;
Do you want to create the directory? Yes&lt;br /&gt;
&lt;br /&gt;
Do you want to accept the unsigned certificate? Yes&lt;br /&gt;
&lt;br /&gt;
Wait while it downloads the whole repository&lt;br /&gt;
&lt;br /&gt;
Finished: OK&lt;br /&gt;
&lt;br /&gt;
After you click on the folder or refresh desktop with F5, the new folder TESTIT should have a big green tick over it indicating all synced with the repo&lt;br /&gt;
&lt;br /&gt;
Subversion puts a hidden folder called .svn in any folder it is managing&lt;br /&gt;
&lt;br /&gt;
=== Committing ===&lt;br /&gt;
&lt;br /&gt;
#Open the folder TESTIT&lt;br /&gt;
#Create a file called testing.txt anywhere in the folder structure&lt;br /&gt;
#Close the folder and notice that it has a big red ! on it showing that something is commitable&lt;br /&gt;
#Right click on the TESTIT folder (or indeed any subfolder)&lt;br /&gt;
#Choose SVN Commit&lt;br /&gt;
#It shows a long list of files that it thinks could be committed - in your case just the testing.txt file - you have to check all files that you want uploaded or check Select All&lt;br /&gt;
#It helps to add a message explaining why you are committing&lt;br /&gt;
#Click OK&lt;br /&gt;
#Enter your committers username and password&lt;br /&gt;
#Screen showing upload progress&lt;br /&gt;
#Click OK when finished and note that the red ! has changed back into a green tick&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Committing Binary Files like VOC/ERRMSG ==&lt;br /&gt;
&lt;br /&gt;
To subversion, VOC/ERRMSG (and other files? which?) are deemed to be &amp;quot;binary&amp;quot; rather like image files. Unlike ordinary source/text files, parallel edits on binary files from two people cannot (or rather should not) be merged. Conflicts, due to simultaneous edits outside of the repository, can only be resolved by picking one or the other person&#039;s file.&lt;br /&gt;
&lt;br /&gt;
The tempting solution is to make these into directory files but this doesnt work - probably because a) the default file type isnt directory and b) performance.&lt;br /&gt;
&lt;br /&gt;
The proper solution would be that these files are represented as ordinary directory files in the source code repository and that the required binary files are built thereof during the QM build process. Since only QM can build these files, the build process will first have to build QM and then use QM to build these files.&lt;br /&gt;
&lt;br /&gt;
If you do not do follow one of the procedures below then when you finally come to UPDATE or COMMIT and someone else has also worked on the file in the meantime then you will be presented with the unpleasant choice of either losing your changes or trashing someone elses - on the all or nothing principle for binary files. Depending on how much work you have dont this could be mildly irritating or extremely inconvenient.&lt;br /&gt;
&lt;br /&gt;
PRACTICAL SOLUTION FOR NOW&lt;br /&gt;
&lt;br /&gt;
Do SVN UPDATE just before editing these files and do SVN COMMIT immediately afterwards.&lt;br /&gt;
&lt;br /&gt;
#Get a lock on the file (or more likely folder) that you want to edit&lt;br /&gt;
#SVN UPDATE&lt;br /&gt;
#Edit the file&lt;br /&gt;
#SVN COMMIT &#039;&#039;&#039;or&#039;&#039;&#039; release the lock on the file&lt;br /&gt;
&lt;br /&gt;
By default, a commit releases the lock.  If you want to commit but keep the lock, use &#039;--no-unlock&#039; on the command line, or check the checkbox &#039;keep locks&#039; in TortoiseSVN.&lt;br /&gt;
There might be a combined LOCK&amp;amp;UPDATE command but I don&#039;t know it.&lt;br /&gt;
&lt;br /&gt;
Command line&lt;br /&gt;
&lt;br /&gt;
 svn lock files -m &amp;quot;Reason for locking these files&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Tortoise&lt;br /&gt;
&lt;br /&gt;
[[image:svnlock.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[image:svnrelease.jpg]]&lt;/div&gt;</summary>
		<author><name>Zig</name></author>
	</entry>
	<entry>
		<id>https://scarlet.deltasoft.com/index.php?title=Subversion_Repository:_HOWTO&amp;diff=466</id>
		<title>Subversion Repository: HOWTO</title>
		<link rel="alternate" type="text/html" href="https://scarlet.deltasoft.com/index.php?title=Subversion_Repository:_HOWTO&amp;diff=466"/>
		<updated>2009-08-21T14:53:12Z</updated>

		<summary type="html">&lt;p&gt;Zig: /* Checking Out */ Terminating broken links... I&amp;#039;ll be back&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Terminology ===&lt;br /&gt;
&lt;br /&gt;
#Checkout - downloads a copy for the first time&lt;br /&gt;
#&#039;&#039;&#039;Update&#039;&#039;&#039; - downloads your copy with any changes in the repository&lt;br /&gt;
#&#039;&#039;&#039;Commit&#039;&#039;&#039; - uploads any changes you made in your copy to the repository&lt;br /&gt;
#Import - upload - can be replaced by a combination of update/commit&lt;br /&gt;
&lt;br /&gt;
repo - repository&lt;br /&gt;
&lt;br /&gt;
depo - your copy&lt;br /&gt;
&lt;br /&gt;
=== Acquiring rights to commit ===&lt;br /&gt;
&lt;br /&gt;
To commit you must have a username and password which is given by an admin with root perms on gpl.openqm.com or you can choose your own password by sending the output of the following command to an admin ([[Admin_Team]] and look for subversion)&lt;br /&gt;
&lt;br /&gt;
 htpasswd -n yourdesiredusername&lt;br /&gt;
&lt;br /&gt;
then any gpl.openqm.com server admin (with root or sudo access) can grant user yourdesiredusername access with the following command. It will ask for the password which is hashed password after the : in the output of the above/previous htpasswd command.&lt;br /&gt;
&lt;br /&gt;
 htpasswd /etc/subversion/passwd yourdesiredusername&lt;br /&gt;
&lt;br /&gt;
Then commit with something like the following. username is usually cached and only required the first time.&lt;br /&gt;
&lt;br /&gt;
 svn --username yourdesiredusername commit&lt;br /&gt;
&lt;br /&gt;
== Command Line User Interface ==&lt;br /&gt;
&lt;br /&gt;
Assumes you have already installed Subversion.&lt;br /&gt;
&lt;br /&gt;
Looks complicated but boils down to issuing two commands. One to checkout the project or to update your already checked project. Two to commit your changes.&lt;br /&gt;
&lt;br /&gt;
=== Walkthrough ===&lt;br /&gt;
&lt;br /&gt;
Make a working directory if you don’t have one&lt;br /&gt;
&lt;br /&gt;
 mkdir qmvdb&lt;br /&gt;
&lt;br /&gt;
OR, if you already checked out a copy of the repo, just change into your working directory&lt;br /&gt;
&lt;br /&gt;
 cd qmvdb&lt;br /&gt;
&lt;br /&gt;
If you just made the working directory then use svn checkout to get a copy of the project (all branches, tags and trunk of project openqm in this example)&lt;br /&gt;
&lt;br /&gt;
 svn checkout https://gpl.openqm.com/svn/qmvdb/openqm&lt;br /&gt;
&lt;br /&gt;
OR, if you already checked out a copy of the repo, then best to ensure you are working on the latest version to avoid later work resolving any conflicts with other people&#039;s edits.&lt;br /&gt;
&lt;br /&gt;
 svn update&lt;br /&gt;
&lt;br /&gt;
Find the file you want to work on (dh_ak.c in this example)&lt;br /&gt;
&lt;br /&gt;
 find . -name dh_ak.c&lt;br /&gt;
&lt;br /&gt;
See the list of alternatives in different branches&lt;br /&gt;
&lt;br /&gt;
 ./openqm/tags/release-2.6.6/gplsrc/dh_ak.c&lt;br /&gt;
 ./openqm/branches/workdevbranch1/gplsrc/dh_ak.c&lt;br /&gt;
 ./openqm/trunk/gplsrc/dh_ak.c&lt;br /&gt;
&lt;br /&gt;
Decide to edit version of the file in the trunk directly. Only put tested changes in the trunk because people expect it to be stable at all times.&lt;br /&gt;
&lt;br /&gt;
 vi ./openqm/trunk/gplsrc/dh_ak.c&lt;br /&gt;
&lt;br /&gt;
Example edit:&lt;br /&gt;
&lt;br /&gt;
 if (big_dict_rec)&lt;br /&gt;
  {&lt;br /&gt;
   /*SB patch from AC from MP/Sep08*/&lt;br /&gt;
   /*ak_header.itype_ptr = ak_header_size + DH_AK_NODE_SIZE;*/&lt;br /&gt;
   if (header.file_version &amp;lt; 2)&lt;br /&gt;
    {&lt;br /&gt;
     ak_header.itype_ptr = DH_AK_NODE_SIZE + ak_header_size;&lt;br /&gt;
    }&lt;br /&gt;
   else&lt;br /&gt;
    {&lt;br /&gt;
     ak_header.itype_ptr = 2;&lt;br /&gt;
    }&lt;br /&gt;
  } &lt;br /&gt;
&lt;br /&gt;
Optionally check that nobody else has, since you last got the file, edited and committed the same section that you edited - and reconcile any conflicts interactively if necessary.&lt;br /&gt;
&lt;br /&gt;
 svn update&lt;br /&gt;
&lt;br /&gt;
Optionally ask subversion to show you a diff of all changes you made in the whole tree&lt;br /&gt;
&lt;br /&gt;
 svn diff&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Index: openqm/trunk/gplsrc/dh_ak.c&lt;br /&gt;
===================================================================&lt;br /&gt;
--- openqm/trunk/gplsrc/dh_ak.c (revision 10)&lt;br /&gt;
+++ openqm/trunk/gplsrc/dh_ak.c (working copy)&lt;br /&gt;
@@ -1892,7 +1892,16 @@&lt;br /&gt;
  big_dict_rec = (dict_rec_len &amp;gt; AK_CODE_BYTES);&lt;br /&gt;
  if (big_dict_rec)&lt;br /&gt;
   {&lt;br /&gt;
-   ak_header.itype_ptr = ak_header_size + DH_AK_NODE_SIZE;&lt;br /&gt;
+   /*SB patch from AC from MP/Sep08*/&lt;br /&gt;
+   /*ak_header.itype_ptr = ak_header_size + DH_AK_NODE_SIZE;*/&lt;br /&gt;
+   if (header.file_version &amp;lt; 2)&lt;br /&gt;
+    {&lt;br /&gt;
+     ak_header.itype_ptr = DH_AK_NODE_SIZE + ak_header_size;&lt;br /&gt;
+    }&lt;br /&gt;
+   else&lt;br /&gt;
+    {&lt;br /&gt;
+     ak_header.itype_ptr = 2;&lt;br /&gt;
+    }&lt;br /&gt;
   }&lt;br /&gt;
  else   /* Short enough to store in AK header */&lt;br /&gt;
   {&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Commit your changes WITH A CONCISE COMMENT ABOUT ITS PURPOSE so people can get a good idea by looking at the log.  This is so important that if you don&#039;t include a log message, Subversion will ask you for one.  It is suggested that you do &#039;&#039;not&#039;&#039; include a message on the command line, so you can use the editor of your choice to write the message.   The key advantage to this (other than being able to write multiline comments more easily) is that it shows you *exactly* which files it&#039;s going to commit (along with why, if you can read the codes).  If you&#039;ve forgotten something, or are commiting something you didn&#039;t mean to, you can just quit the editor and Subversion will ask you if you want to quit.  It helps to avoid unnecessary commits and embarrassing log comments.  To commit using this method, use&lt;br /&gt;
&lt;br /&gt;
 svn --username yourname commit trunk/gplsrc/dh_ak.c&lt;br /&gt;
&lt;br /&gt;
or, to write your message on the command line,&lt;br /&gt;
&lt;br /&gt;
 svn --username yourname commit -m &amp;quot;Bug fix for indexing on complex fields in non-VERSION 1 files from MP in Sep08 via AC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If you made an edit to a file and then backed out the change, you can easily revert back to the svn version of the file using &amp;quot;revert&amp;quot;:&lt;br /&gt;
 svn revert gplsrc/op_sh.c&lt;br /&gt;
&lt;br /&gt;
This would replace your copy of op_sh.c with the one from the source repository.&lt;br /&gt;
&lt;br /&gt;
Note that in order for svn to open your editor, you need to have the SVN_EDITOR environment variable set.  You can do this by entering the following command at the shell prompt.  Alternately, you can add the command to your .bashrc file so you don&#039;t need to remember to re-enter the command each time you log in.&lt;br /&gt;
 export SVN_EDITOR=&amp;lt;your editor of choice&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Graphic User Interface - Windows Tortoise ==&lt;br /&gt;
&lt;br /&gt;
=== Walkthrough ===&lt;br /&gt;
&lt;br /&gt;
http://tortoisesvn.tigris.org/&lt;br /&gt;
&lt;br /&gt;
This is a minimal but totally functional how to checkout from, and commit to, gpl.openqm in Windows using the Tortoise Windows Explorer shell extension. Think of Tortoise as a folder sync tool which pops up reconciliation screens where conflicts occur between people&#039;s edits.&lt;br /&gt;
&lt;br /&gt;
The interesting bits of source code management automatically jump out at you later when two people work on the same SECTION of the same file at the same time ie between checkout/update and commit.&lt;br /&gt;
&lt;br /&gt;
*You commit a file which has also committed by someone else AFTER you checked it out&lt;br /&gt;
*You update your depo from repo and someone has committed changes to a file that you have already locally changed.&lt;br /&gt;
&lt;br /&gt;
In these cases you get presented with opportunity to compare and reconcile the two edits in a neat side by side window.&lt;br /&gt;
&lt;br /&gt;
=== Other tools===&lt;br /&gt;
&lt;br /&gt;
Visual Studio - http://ankhsvn.open.collab.net/&lt;br /&gt;
&lt;br /&gt;
Eclipse - http://subclipse.tigris.org/&lt;br /&gt;
&lt;br /&gt;
Netbeans supports it natively now too. &amp;lt;Diccon&amp;gt; Bean a life saver.  (Can we have a few hints, Diccon?)&lt;br /&gt;
&lt;br /&gt;
=== Installation === &lt;br /&gt;
&lt;br /&gt;
http://tortoisesvn.net/downloads&lt;br /&gt;
&lt;br /&gt;
Might need a reboot&lt;br /&gt;
&lt;br /&gt;
=== Checking Out ===&lt;br /&gt;
&lt;br /&gt;
Right click on your desktop and choose SVN CHECKOUT&lt;br /&gt;
&lt;br /&gt;
Fill in the details&lt;br /&gt;
&lt;br /&gt;
URL? https://www.scarletdme.org/svn/qmvdb&lt;br /&gt;
&lt;br /&gt;
Checkout Folder? D:\Documents and settings\steve\Desktop\TESTIT&lt;br /&gt;
&lt;br /&gt;
Click OK&lt;br /&gt;
&lt;br /&gt;
Do you want to create the directory? Yes&lt;br /&gt;
&lt;br /&gt;
Do you want to accept the unsigned certificate? Yes&lt;br /&gt;
&lt;br /&gt;
Wait while it downloads the whole repository&lt;br /&gt;
&lt;br /&gt;
Finished: OK&lt;br /&gt;
&lt;br /&gt;
After you click on the folder or refresh desktop with F5, the new folder TESTIT should have a big green tick over it indicating all synced with the repo&lt;br /&gt;
&lt;br /&gt;
Subversion puts a hidden folder called .svn in any folder it is managing&lt;br /&gt;
&lt;br /&gt;
=== Committing ===&lt;br /&gt;
&lt;br /&gt;
#Open the folder TESTIT&lt;br /&gt;
#Create a file called testing.txt anywhere in the folder structure&lt;br /&gt;
#Close the folder and notice that it has a big red ! on it showing that something is commitable&lt;br /&gt;
#Right click on the TESTIT folder (or indeed any subfolder)&lt;br /&gt;
#Choose SVN Commit&lt;br /&gt;
#It shows a long list of files that it thinks could be committed - in your case just the testing.txt file - you have to check all files that you want uploaded or check Select All&lt;br /&gt;
#It helps to add a message explaining why you are committing&lt;br /&gt;
#Click OK&lt;br /&gt;
#Enter your committers username and password&lt;br /&gt;
#Screen showing upload progress&lt;br /&gt;
#Click OK when finished and note that the red ! has changed back into a green tick&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Committing Binary Files like VOC/ERRMSG ==&lt;br /&gt;
&lt;br /&gt;
To subversion, VOC/ERRMSG (and other files? which?) are deemed to be &amp;quot;binary&amp;quot; rather like image files. Unlike ordinary source/text files, parallel edits on binary files from two people cannot (or rather should not) be merged. Conflicts, due to simultaneous edits outside of the repository, can only be resolved by picking one or the other person&#039;s file.&lt;br /&gt;
&lt;br /&gt;
The tempting solution is to make these into directory files but this doesnt work - probably because a) the default file type isnt directory and b) performance.&lt;br /&gt;
&lt;br /&gt;
The proper solution would be that these files are represented as ordinary directory files in the source code repository and that the required binary files are built thereof during the QM build process. Since only QM can build these files, the build process will first have to build QM and then use QM to build these files.&lt;br /&gt;
&lt;br /&gt;
If you do not do follow one of the procedures below then when you finally come to UPDATE or COMMIT and someone else has also worked on the file in the meantime then you will be presented with the unpleasant choice of either losing your changes or trashing someone elses - on the all or nothing principle for binary files. Depending on how much work you have dont this could be mildly irritating or extremely inconvenient.&lt;br /&gt;
&lt;br /&gt;
PRACTICAL SOLUTION FOR NOW&lt;br /&gt;
&lt;br /&gt;
Do SVN UPDATE just before editing these files and do SVN COMMIT immediately afterwards.&lt;br /&gt;
&lt;br /&gt;
#Get a lock on the file (or more likely folder) that you want to edit&lt;br /&gt;
#SVN UPDATE&lt;br /&gt;
#Edit the file&lt;br /&gt;
#SVN COMMIT &#039;&#039;&#039;or&#039;&#039;&#039; release the lock on the file&lt;br /&gt;
&lt;br /&gt;
By default, a commit releases the lock.  If you want to commit but keep the lock, use &#039;--no-unlock&#039; on the command line, or check the checkbox &#039;keep locks&#039; in TortoiseSVN.&lt;br /&gt;
There might be a combined LOCK&amp;amp;UPDATE command but I don&#039;t know it.&lt;br /&gt;
&lt;br /&gt;
Command line&lt;br /&gt;
&lt;br /&gt;
 svn lock files -m &amp;quot;Reason for locking these files&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Tortoise&lt;br /&gt;
&lt;br /&gt;
[[image:svnlock.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[image:svnrelease.jpg]]&lt;/div&gt;</summary>
		<author><name>Zig</name></author>
	</entry>
	<entry>
		<id>https://scarlet.deltasoft.com/index.php?title=Downloads&amp;diff=465</id>
		<title>Downloads</title>
		<link rel="alternate" type="text/html" href="https://scarlet.deltasoft.com/index.php?title=Downloads&amp;diff=465"/>
		<updated>2009-08-21T14:49:07Z</updated>

		<summary type="html">&lt;p&gt;Zig: High level link engineering :p&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Files, sources, packages and apps for OpenQM&lt;br /&gt;
&lt;br /&gt;
==Packages==&lt;br /&gt;
*RPM package - [http://www.scarletdme.org/downloads/openqm-2.6-6.i386.rpm openqm-2.6-6.i386.rpm]&lt;br /&gt;
*Debian Package - [http://www.scarletdme.org/downloads/openqm-gpl_2.6.6_all.deb openqm-gpl_2.6.6_all.deb] (Note: this needs testing for upgrades)&lt;br /&gt;
*Debian Package - [http://www.scarletdme.org/downloads/openqm_2.4.17_all.deb openqm_2.4.17_all.deb]&lt;br /&gt;
&lt;br /&gt;
==Source==&lt;br /&gt;
Original Ladybridge Source Tarballs&lt;br /&gt;
&lt;br /&gt;
*[http://www.scarletdme.org/downloads/qmsrc_2-6-6.tgz qmsrc_2-6-6.tgz]&lt;br /&gt;
*[http://www.scarletdme.org/downloads/qmsrc_2-4-4.tgz qmsrc_2-4-4.tgz]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For latest build, issue this command in Linux for OpenQMVDB build (&#039;&#039;&#039;&#039;&#039;Recommended&#039;&#039;&#039;&#039;&#039;)&lt;br /&gt;
  svn checkout https://scarletdme.org/svn/qmvdb/openqm/trunk/&lt;br /&gt;
&#039;&#039;(Requires subversion client)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Applications==&lt;br /&gt;
*Coyote PICK webserver - [http://www.scarletdme.org/downloads/qmweb-gpl-2006-03-11.tar.gz qmweb-gpl-2006-03-11.tar.gz] - N.B. The source code for the daemon is missing.&lt;/div&gt;</summary>
		<author><name>Zig</name></author>
	</entry>
	<entry>
		<id>https://scarlet.deltasoft.com/index.php?title=Main_Page&amp;diff=464</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://scarlet.deltasoft.com/index.php?title=Main_Page&amp;diff=464"/>
		<updated>2009-08-21T14:44:33Z</updated>

		<summary type="html">&lt;p&gt;Zig: Updated broken links, https://addons.mozilla.org/en-US/firefox/addons/versions/532 is helpful&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to ScarletDME.org. [[ScarletDME]] is a OpenSource [[multivalue|MultiValue]] database, a community fork of [[OpenQM]] originally developed by [[Ladybridge]]. We aim to provide an environment where anyone can acquire, study and contribute to the [[ScarletDME]] project.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Name change&#039;&#039;&#039; &#039;&#039;Some of you may have noticed The new Logo (to your left) With the new Brand name, ScarletDME (Data Management Environment). This is to be the new name for the GPL project based on Ladybridges GPL OpenQM; something to distinguish GPL from commercial. Changing every name reference will take a little time to complete, until then the names GPL OpenQM and Scarlet/ScarletDME will be synonymous. You can reach this site via [http://www.scarletdme.org www.scarletdme.org].&lt;br /&gt;
&lt;br /&gt;
This project was founded on the 28th November 2008 to independently develop future versions of [[OpenQM]]. &lt;br /&gt;
&lt;br /&gt;
Submissions to this project must be under the GPL version 2, with the option to use a later version if the licensee wishes.  Or they can be licensed under the LGPL.  Naturally, contributors to [[ScarletDME]] are welcome to submit any changes that they may make back to Ladybridge as well for inclusion in Commercial QM. See [[Commercial submissions]] for details.&lt;br /&gt;
&lt;br /&gt;
The server is a VMWare Server 2 Virtual Machine located in a high-bandwidth datacentre in Amsterdam, Netherlands. It is hosted by [[User:SteveB|SteveB]] who maintains a daily backup to a secondary datacentre in Amsterdam. If you can provide a stable high bandwidth backup mirror, please contact him.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This server is DOWN/SLOW around 04:00GMT nightly for 15mins while backing up.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==For Users==&lt;br /&gt;
*[[Downloads]]: Source tarball and package builds for key platforms&lt;br /&gt;
*[[Guides &amp;amp; HOWTOs]] - Index of useful guides and HOWTO&#039;s on this Wiki&lt;br /&gt;
*[[QMBASIC Enhancements]] - QMBASIC features that are custom or were not part of the original GPL release.&lt;br /&gt;
*[http://www.scarletdme.org/bugzilla Bugzilla] reporting and tracking bugs:&lt;br /&gt;
*[[Documentation]] - Documented differences from the Commercial Documentation (Check here first, then below)&lt;br /&gt;
*[http://www.openqm.org/docs/ Documentation] (Commercial Version)&lt;br /&gt;
*General support email group: [http://groups.google.co.uk/group/openqm-opensource Register] then mailto:openqm-opensource@googlegroups.com&lt;br /&gt;
*IRC Chat: irc://irc.efnet.org/openqm or java client http://www.scarletdme.org/chat/&lt;br /&gt;
&lt;br /&gt;
====Supporting Projects====&lt;br /&gt;
Various external projects that provide tools for or API&#039;s into OpenQM&lt;br /&gt;
* [http://billabong-services.co.uk/anji Billabong Services&#039; Anji] - an open web based file browser and reporter.  Eventually to become a RAD system.  Pre-alpha grade of code. &lt;br /&gt;
*[[PHP_Native_API|PHP Native API module]]&lt;br /&gt;
*[[C++ Wrapper]]&lt;br /&gt;
*Steve Bush&#039;s [[Cygwin Port]] - Is it worth considering a MinGW port? - Would have to replace some posix bits which MinGW doesnt have.&lt;br /&gt;
* [http://www.tridentinfosys.com/ Kevin Powick&#039;s Trident Delphi wrapper]&lt;br /&gt;
&lt;br /&gt;
==For Developers==&lt;br /&gt;
For those that want to contribute to OpenQM GPL project.&lt;br /&gt;
*Subversion repository: https://scarletdme.org/svn/qmvdb/ - [[HOWTO]] &lt;br /&gt;
*Development email group: [http://www.scarletdme.org/mailman/listinfo/openqm-dev Register] then mailto:openqm-dev@dev.scarletdme.org&lt;br /&gt;
*[[Development snapshots]] - How to obtain, build, and upgrade using the snapshots.&lt;br /&gt;
*[[QM Client API]] - Documentation and Available API&#039;s for the QM remote protocol.&lt;br /&gt;
*[[Wish list]] - Things that you want &amp;amp; that we need contributors/devs for (lots of small things)&lt;br /&gt;
*[[Dynamic linking]] - Calling objects written in other languages.&lt;br /&gt;
*[[Installers]] - Installing scripts/programs or package systems&lt;br /&gt;
*[[Commercial submissions]] - Sending stuff to Ladybridge&lt;br /&gt;
&lt;br /&gt;
== How do I use this site? ==&lt;br /&gt;
&lt;br /&gt;
If you have a question on USAGE of the community version of OpenQM, then send it to the [http://groups.google.co.uk/group/openqm-opensource general email support group].&lt;br /&gt;
&lt;br /&gt;
If you want to discuss DEVELOPMENT of the community version of OpenQM (eg. php5 module) then send it to the [http://www.scarletdme.org/mailman/listinfo/openqm-dev development email group].&lt;br /&gt;
&lt;br /&gt;
While the email lists are best for getting attention, permanent changes in this wiki will have a longer term impact so feel free to add or change ANYTHING in this wiki.&lt;br /&gt;
&lt;br /&gt;
=== External Resources ===&lt;br /&gt;
* [[Installations]] - Places where GPL OpenQM is in use (I&#039;m attempting to create a new section for this) - http://capersqm.dnsalias.net/&lt;br /&gt;
* [http://www.rushflat.co.nz/downloads.shtml Brian Speir&#039;s Installation instructions and other downloads ]&lt;br /&gt;
* [http://openqm.blackflute.com/ Tom Delombard&#039;s old QM page.] Includes details of the tape utilities and the PHP4 module (C Wrapper) &lt;br /&gt;
* [http://sourceforge.net/projects/jd3 JD3] is a socket based server for D3 ported to QM &lt;br /&gt;
* [http://www.djpatterson.com/jd3php.html] David Patterson&#039;s guide to using PHP with JD3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[Administration]]&lt;/div&gt;</summary>
		<author><name>Zig</name></author>
	</entry>
</feed>