July 19, 2004 - 0.9.3 - Added a test for overlapping substreams in the AlbumWrap parser. I've come across files where the (supposed) offset entry is completely off for all tracks but the first one. The new test will in cases where a new substream begins before the last has ended, simply move it ahead to the end of the last substream. July 2, 2004 - 0.9.3 - Corrected checksumming code to run correctly in all cases when it encounters EOF before being complete. - Added short descriptions to all external functions and also added a PERL script for parsing the source files and outputting documentation from the same comments. - Updated the ID3 code to close the data handles it creates, so there is no difference in the handling of djwrap_id3_open and djwrap_id3_open_h. June 29, 2004 - 0.9.3 - Corrected FORMAT and djwrap.c so that ID3v2.4.0 tags are generated, instead of ID3v2.3.0. June 23, 2004 - 0.9.3 - Made it so that you can add substreams, from file, without having to calculate the MD5 of it. Function: djwrap_add_substream_noMD5. Default behavior isn't changed. June 10, 2004 - 0.9.3 - Updated the stripid3 tool to be more restrictive as to what it accepts as ID3v1 tags, thus lessening the ammount of false matches gotten. - Updated the library to checksum non-meta part of file in parallell with the "normal" part and also allow a successful non-meta checksum match to be indicated via a stream flag. - The library also modifies the substream's data, as well as the data of the following substreams to reflect the new info. - Updated the utility to indicate a successfull non-meta match. - Corrected error returns in substream related functions and made djw_add_ substream handle errors correctly. - Modified the utility to not unwrap broken streams (streams which fail all checksums) unless forced (-f). June 8, 2004 - 0.9.3 - Added a subdirectory - test - to contain programs to test the files created in various ways. - Added a test tool for ripping out all id3v1 and id3v2 tags from a file, to test the resiliance of a thoroughly raped DJWrap file. April 29, 2004 - 0.9.3 - Changed ChangeLog dates to reflect only what's happened on a certain day, not a certain version, so all written on April 28th below did NOT happen over a day. :) Changes to the library: - Rewrote DJWrap parser code heavily (divided it up, now a lot cleaner) and added support for redundancy part. Checksums are now tested both agains the initial tag data and the redundancy part data. The redundancy part can also exist on its own and will then be treated the same as the initial data. One problem still remains. If the initial ID3 is removed, chances are the initial ID3 of the first file will also be removed, meaning that it will not be of the same size as it's supposed to. In this case, unwrapping will not work, since the checksums will fail for all files and, if ignoring that, the data of each file will be shifted wrongly into each preceeding file. To battle this, the format should be extended to store the size of each substream ID3v2 and whether or not an ID3v1 exists. Checksums for all non- meta-data could then be created (in parallell) and put in an extension to the format. Extending the format is not a problem, since old versions skip past unknown data and the format minor version is already bumped. There are all sorts of positive sides to specific (non-meta) data checksums and size specifications. Even the worst forms of ID3 removal (scanning through the whole file and removing) will still keep the audio data correctly extractable and verifiable. April 28, 2004 - 0.9.3 Changes to the library: - Fixed locale dependent AlbumWrap parsing. This code should now work in any locale. - Preliminary support for mp3wrap files. - Support for removing substreams from a wrap added. - Support for removing tags from a wrap added. - Changed the behaviour when checksumming substreams without a checksum. The newly calculated MD5 is no longer considered indicative of the stream's correctness. - Checksums can now be calculated in parts. This way, progress can be reported while checksumming. - Many functions are now rewritten to use djw_data_h * for I/O. This makes it possible for them to act uniformly on substreams both inside and outside wraps. - Added uniform ID3 parsing functions and ported the DJWrap and ALBW parsers to using that. Code is now cleaner. - Implemented error returns in parser functions. - Added writing of redundancy tag to the end of the wrap. DJWrap files should now be much less prone to deformed and lost meta data. - djw_data_h no longer relies on a djw_substream_t for information, though a stream can still be - and in many cases is - connected to a djw_data_h. - Fixed warnings in numbers.c about constant being to large for long. Changes to the utility: - Source file main.c has been renamed to djwrap_tool.c, to avoid confusion. Format changes: - The DJWrap format specification has been updated, and its version has been upped to 1.1.0. See the file FORMAT for more information. March 18, 2003 - 0.9.2-winfix General changes: - Some restructuring made, moving more stuff into machine_(arch).h to make the code more portable. It now compiles on MSVC and runs on Windows. March 11, 2003 - 0.9.2 Changes to the library: - Fixed AlbumWrap parsing. :) (Was broken earlier) - Made AlbumWrap parsing better and can now (probably) recognize all ALBW files. - Cleaned up code where there was a chance of buffer overruns. - Added some macros (read_or_die and alloc_or_die) to clean up the code. - Enabled MD5 checksumming of tracks wrapped in ALBW. This will not help verify the data in an ALBW, but is added for the future implementation of on-the-fly (and maybe even in space) rewrapping AlbumWrap/DJWrap->DJwrap. Changes to the example utility: - File type is displayed after parsing. - MD5 is no longer used at all with ALBW files (though they can still be calculated) General changes: - The code is now better structured for porting/compiling on different platforms. - Added machine.h for aforementioned purpose. March 9, 2003 - 0.9.1 Changes to the library: - Added AlbumWrap parsing. Changes to the example utility: - Full paths can now be given to files, they will be stripped before wrapping. - You can now select which tracks to unwrap. General changes: - The code now compiles and runs on Windows. :D