Versioner Changelog
http://www.technotronic.com/versioner
submit suggestions, bug reports and patches to vacuum@technotronic.com
Also available via cvs an www.rootkit.com

Versioner 0.9 (What happens when you don't touch code for over a year.)
11/07/2000
Kirby Kuehl vacuum@technotronic.com
Code cleanups and optimizations.
Changed FILE *stream to a global file descriptor. Split md5 functionality off into md5.h and md5.cpp.
Added #pragma comment(lib, "necessary lib") 
Integrated Non-MFC GUI.
Removed .txt output, versioner.csv output file automatically opened in Excel (or whatever application is associated
with .csv file extension).
** Late Additions ** If you downloaded before November 8, 2000 you want to redownload :)
Added output.csv Edit Box, changed location of _getcwd(), fixed what file is to be opened
by ShellExecute.
Fixed cosmetic MD5 Hash: label problem.
Auto Horizontal Scroll in Edit Box. Oops.
Turned off Maximize button.


Versioner 0.6b
Mike 10/31/1999
I dramatically decreased the runtime by making it so the MD5 Hash is computed only once per file by adding
 a second stream to MD5Print() and MD5File(). Runs 50% faster on my machine.

Versioner 0.6a
Kirby 10/30/1999
The I released versioner 0.6 then showed it to rfp and discovered errors version :)
1. The Fileversion Heading did not Line Up with the fileversion..oops.
2. Fixed the comma delimiting bug that occured on fields that contained a comma
such as January 1, 2000 or kirby Software, Inc. Now the output is "data","data2"

Versioner 0.6
10/30/1999
Jason Jordan supplied 2 important changes.
Although the VS_FIXEDFILEINFO structure has a lot, it doesn't seem to have everything you want.
The good thing is I solved the problem with why some files showed versions and some didn't.
It turns out that the files can be built in two ways.
With UNICODE info or MULTILINGUAL info. Attempting to get UNICODE info from a MULTILINGUAL compiled
file will return failure and vice versa. So you have to try one type and if that
fails try the other.
This works great. He also had a code cleanup idea using a for loop and an array. I modified
his example to fit cleanly into versioner and was able to remove lots of ugly lines of code.
Thanks again Jason.
Dan McElhiney submitted a patch that broke c:\pathname\filename into c:\pathname\ & filename
Great idea Dan, I (Kirby) did however implement this in a slightly different way than your patch
suggested because PrintFindData() is already passed dirName
As you would guess, this changes the output format of versioner slightly so I also updated the example
versioner database versioner-db02.zip (Available as a seperate download) as well as improved the
instructions for it.

Versioner 0.5 
kirby 10/24/1999
Created versionerdb-01.mdb which is a sample MS Access 97 database that imports versioners .csv
outputfiles rather nicely.
kirby 10/25/1999
Completely removed the PrintFindData2() function and rolled the .txt and .csv streams both into PrintFindData() 
as they should be.
Jason Jordan & kirby 10/25/1999  Jason provided me with a fix that improved FileVersion retrieval.
using
VerQueryValue((LPVOID)lpstrVffInfo,
               "\\",     (void**)&pinfo, dwBytes );
and pointing pinfo the VS_FIXEDFILEINFO structure is definitely the proper way to
determine FileVerion and is much more successful that my previous way.
VerQueryValue((LPVOID)lpstrVffInfo,
                TEXT("\\StringFileInfo\\040904E4\\FileVersion"),
                (LPVOID *)&lpBuffer,                dwBytes);

Versioner 0.4
Mike & kirby - 10/23/1999 kirby presented Mike with some RSA code which Mike successfully integrated into versioner.
kirby cleaned up both text and csv output to correctly display the new MD5 hash.

Versioner 0.3
kirby - 10/20/1999
Added comma delimited output format which can be directly imported into excel and access files.

Versioner 0.2
kirby - 10/19/1999
Fixed the file mask bug from 0.1, now you can specify starting directories and any valid
filemask and all directories will be traversed. Changed the extended output to show all headers (even if value
is blank) for easier database importing. Removed lots of printf() information, it went by so fast it was unuseable
anyway.

Versioner 0.1
kirby - 10/18/1999 Versioner debuts. I had written a previous version in the Windows Interface Language.
But it would only act upon .dll and .exes. This version is written entirely in C++ and includes directory
recursion (if you specify *.*), if your file mask is *.dll for example only the current directory is searched.
Another new feature introduced in the C++ version is creation time, last access time, and last write time.






