1 2 30.9.0 4~~~~~ 5First version. 6 7 80.9.0a 9~~~~~~ 10Removed 'ranlib' from Makefile, since most modern Unix-es 11don't need it, or even know about it. 12 13 140.9.0b 15~~~~~~ 16Fixed a problem with error reporting in bzip2.c. This does not effect 17the library in any way. Problem is: versions 0.9.0 and 0.9.0a (of the 18program proper) compress and decompress correctly, but give misleading 19error messages (internal panics) when an I/O error occurs, instead of 20reporting the problem correctly. This shouldn't give any data loss 21(as far as I can see), but is confusing. 22 23Made the inline declarations disappear for non-GCC compilers. 24 25 260.9.0c 27~~~~~~ 28Fixed some problems in the library pertaining to some boundary cases. 29This makes the library behave more correctly in those situations. The 30fixes apply only to features (calls and parameters) not used by 31bzip2.c, so the non-fixedness of them in previous versions has no 32effect on reliability of bzip2.c. 33 34In bzlib.c: 35 * made zero-length BZ_FLUSH work correctly in bzCompress(). 36 * fixed bzWrite/bzRead to ignore zero-length requests. 37 * fixed bzread to correctly handle read requests after EOF. 38 * wrong parameter order in call to bzDecompressInit in 39 bzBuffToBuffDecompress. Fixed. 40 41In compress.c: 42 * changed setting of nGroups in sendMTFValues() so as to 43 do a bit better on small files. This _does_ effect 44 bzip2.c. 45 46 470.9.5a 48~~~~~~ 49Major change: add a fallback sorting algorithm (blocksort.c) 50to give reasonable behaviour even for very repetitive inputs. 51Nuked --repetitive-best and --repetitive-fast since they are 52no longer useful. 53 54Minor changes: mostly a whole bunch of small changes/ 55bugfixes in the driver (bzip2.c). Changes pertaining to the 56user interface are: 57 58 allow decompression of symlink'd files to stdout 59 decompress/test files even without .bz2 extension 60 give more accurate error messages for I/O errors 61 when compressing/decompressing to stdout, don't catch control-C 62 read flags from BZIP2 and BZIP environment variables 63 decline to break hard links to a file unless forced with -f 64 allow -c flag even with no filenames 65 preserve file ownerships as far as possible 66 make -s -1 give the expected block size (100k) 67 add a flag -q --quiet to suppress nonessential warnings 68 stop decoding flags after --, so files beginning in - can be handled 69 resolved inconsistent naming: bzcat or bz2cat ? 70 bzip2 --help now returns 0 71 72Programming-level changes are: 73 74 fixed syntax error in GET_LL4 for Borland C++ 5.02 75 let bzBuffToBuffDecompress return BZ_DATA_ERROR{_MAGIC} 76 fix overshoot of mode-string end in bzopen_or_bzdopen 77 wrapped bzlib.h in #ifdef __cplusplus ... extern "C" { ... } 78 close file handles under all error conditions 79 added minor mods so it compiles with DJGPP out of the box 80 fixed Makefile so it doesn't give problems with BSD make 81 fix uninitialised memory reads in dlltest.c 82 830.9.5b 84~~~~~~ 85Open stdin/stdout in binary mode for DJGPP. 86 870.9.5c 88~~~~~~ 89Changed BZ_N_OVERSHOOT to be ... + 2 instead of ... + 1. The + 1 90version could cause the sorted order to be wrong in some extremely 91obscure cases. Also changed setting of quadrant in blocksort.c. 92 930.9.5d 94~~~~~~ 95The only functional change is to make bzlibVersion() in the library 96return the correct string. This has no effect whatsoever on the 97functioning of the bzip2 program or library. Added a couple of casts 98so the library compiles without warnings at level 3 in MS Visual 99Studio 6.0. Included a Y2K statement in the file Y2K_INFO. All other 100changes are minor documentation changes. 101 1021.0 103~~~ 104Several minor bugfixes and enhancements: 105 106* Large file support. The library uses 64-bit counters to 107 count the volume of data passing through it. bzip2.c 108 is now compiled with -D_FILE_OFFSET_BITS=64 to get large 109 file support from the C library. -v correctly prints out 110 file sizes greater than 4 gigabytes. All these changes have 111 been made without assuming a 64-bit platform or a C compiler 112 which supports 64-bit ints, so, except for the C library 113 aspect, they are fully portable. 114 115* Decompression robustness. The library/program should be 116 robust to any corruption of compressed data, detecting and 117 handling _all_ corruption, instead of merely relying on 118 the CRCs. What this means is that the program should 119 never crash, given corrupted data, and the library should 120 always return BZ_DATA_ERROR. 121 122* Fixed an obscure race-condition bug only ever observed on 123 Solaris, in which, if you were very unlucky and issued 124 control-C at exactly the wrong time, both input and output 125 files would be deleted. 126 127* Don't run out of file handles on test/decompression when 128 large numbers of files have invalid magic numbers. 129 130* Avoid library namespace pollution. Prefix all exported 131 symbols with BZ2_. 132 133* Minor sorting enhancements from my DCC2000 paper. 134 135* Advance the version number to 1.0, so as to counteract the 136 (false-in-this-case) impression some people have that programs 137 with version numbers less than 1.0 are in some way, experimental, 138 pre-release versions. 139 140* Create an initial Makefile-libbz2_so to build a shared library. 141 Yes, I know I should really use libtool et al ... 142 143* Make the program exit with 2 instead of 0 when decompression 144 fails due to a bad magic number (ie, an invalid bzip2 header). 145 Also exit with 1 (as the manual claims :-) whenever a diagnostic 146 message would have been printed AND the corresponding operation 147 is aborted, for example 148 bzip2: Output file xx already exists. 149 When a diagnostic message is printed but the operation is not 150 aborted, for example 151 bzip2: Can't guess original name for wurble -- using wurble.out 152 then the exit value 0 is returned, unless some other problem is 153 also detected. 154 155 I think it corresponds more closely to what the manual claims now. 156 157 1581.0.1 159~~~~~ 160* Modified dlltest.c so it uses the new BZ2_ naming scheme. 161* Modified makefile-msc to fix minor build probs on Win2k. 162* Updated README.COMPILATION.PROBLEMS. 163 164There are no functionality changes or bug fixes relative to version 1651.0.0. This is just a documentation update + a fix for minor Win32 166build problems. For almost everyone, upgrading from 1.0.0 to 1.0.1 is 167utterly pointless. Don't bother. 168 169 1701.0.2 171~~~~~ 172A bug fix release, addressing various minor issues which have appeared 173in the 18 or so months since 1.0.1 was released. Most of the fixes 174are to do with file-handling or documentation bugs. To the best of my 175knowledge, there have been no data-loss-causing bugs reported in the 176compression/decompression engine of 1.0.0 or 1.0.1. 177 178Note that this release does not improve the rather crude build system 179for Unix platforms. The general plan here is to autoconfiscate/ 180libtoolise 1.0.2 soon after release, and release the result as 1.1.0 181or perhaps 1.2.0. That, however, is still just a plan at this point. 182 183Here are the changes in 1.0.2. Bug-reporters and/or patch-senders in 184parentheses. 185 186* Fix an infinite segfault loop in 1.0.1 when a directory is 187 encountered in -f (force) mode. 188 (Trond Eivind Glomsrod, Nicholas Nethercote, Volker Schmidt) 189 190* Avoid double fclose() of output file on certain I/O error paths. 191 (Solar Designer) 192 193* Don't fail with internal error 1007 when fed a long stream (> 48MB) 194 of byte 251. Also print useful message suggesting that 1007s may be 195 caused by bad memory. 196 (noticed by Juan Pedro Vallejo, fixed by me) 197 198* Fix uninitialised variable silly bug in demo prog dlltest.c. 199 (Jorj Bauer) 200 201* Remove 512-MB limitation on recovered file size for bzip2recover 202 on selected platforms which support 64-bit ints. At the moment 203 all GCC supported platforms, and Win32. 204 (me, Alson van der Meulen) 205 206* Hard-code header byte values, to give correct operation on platforms 207 using EBCDIC as their native character set (IBM's OS/390). 208 (Leland Lucius) 209 210* Copy file access times correctly. 211 (Marty Leisner) 212 213* Add distclean and check targets to Makefile. 214 (Michael Carmack) 215 216* Parameterise use of ar and ranlib in Makefile. Also add $(LDFLAGS). 217 (Rich Ireland, Bo Thorsen) 218 219* Pass -p (create parent dirs as needed) to mkdir during make install. 220 (Jeremy Fusco) 221 222* Dereference symlinks when copying file permissions in -f mode. 223 (Volker Schmidt) 224 225* Majorly simplify implementation of uInt64_qrm10. 226 (Bo Lindbergh) 227 228* Check the input file still exists before deleting the output one, 229 when aborting in cleanUpAndFail(). 230 (Joerg Prante, Robert Linden, Matthias Krings) 231 232Also a bunch of patches courtesy of Philippe Troin, the Debian maintainer 233of bzip2: 234 235* Wrapper scripts (with manpages): bzdiff, bzgrep, bzmore. 236 237* Spelling changes and minor enhancements in bzip2.1. 238 239* Avoid race condition between creating the output file and setting its 240 interim permissions safely, by using fopen_output_safely(). 241 No changes to bzip2recover since there is no issue with file 242 permissions there. 243 244* do not print senseless report with -v when compressing an empty 245 file. 246 247* bzcat -f works on non-bzip2 files. 248 249* do not try to escape shell meta-characters on unix (the shell takes 250 care of these). 251 252* added --fast and --best aliases for -1 -9 for gzip compatibility. 253 254 2551.0.3 (15 Feb 05) 256~~~~~~~~~~~~~~~~~ 257Fixes some minor bugs since the last version, 1.0.2. 258 259* Further robustification against corrupted compressed data. 260 There are currently no known bitstreams which can cause the 261 decompressor to crash, loop or access memory which does not 262 belong to it. If you are using bzip2 or the library to 263 decompress bitstreams from untrusted sources, an upgrade 264 to 1.0.3 is recommended. 265 266* The documentation has been converted to XML, from which html 267 and pdf can be derived. 268 269* Various minor bugs in the documentation have been fixed. 270 271* Fixes for various compilation warnings with newer versions of 272 gcc, and on 64-bit platforms. 273 274* The BZ_NO_STDIO cpp symbol was not properly observed in 1.0.2. 275 This has been fixed. 276