JMich: JA2 was actually written as C, and ported to C++ at a later date, once the source became available. While it (usually) is one of the most readable codes I've seen, the documentation of it is sorely lacking... 
  Yeah, documentation sucks for a lot of code and technologies out there.   
JMich: Ah, good, because so far a first run could only identify 3 games (Syndicate, Cannon Fodder and Ultima 1+2+3), which meant that I'd have to manually enter the rest, something I'd rather not do. 
 Will wait before parsing the downloads then :) 
  It depends the command that you type.  
 When I distributed your download, there were 3 games in the db (appropriately small games for testing purposes... I didn't want to wait a minute for MD5 computation on large files).  
 If you use the verify command, it will give you diagnostics based on what is contained in the db (in your version, 3 games), but it won't update anything in the db.  
 To add more games in the db, you need to use the update command with the -a flag. The last argument is either the directory of your game or "*" to process all the top-level directories in your GOG folder.  
 For me, it's a slow process as some of my GOG downloads are old and I have to convert the directory structure to be the same as the one generated by the GOG downloader (and make sure the setup files are up to date) first.  
 Also, currently, the game polls you for a title and whether or not the game requires a CD-key for each game added in the database.  
 This was fine when I had 100 or so games, but now I'm finding it a tedious process.  
 I think I'll add the possibility of file input for the update command where you can specify the titles and whether a game needs a CDkey in a file for a whole bunch of games and then you can let the "update -a *" command run in the background without getting polled for info on each new game added.  
 If you type the "help" command, you'll get more info on the facilities provided by the utility.