Changes for 0.86.0
+ Multi-member gzip files are now supported. Contributed by Geoff Hart.
+ Zero byte files caused ZipOutputStream to create invalid zipfiles. Contributed by Mark Ritchie.
+ ZipFile.CommitUpdate failed on ODT (Open Document) files when updating in memory. Contributed by Dricks.
+ Exceptions occurring within ZipFile.CommitUpdate were being silently discarded.
+ In FastZip, the NameFilter erroneously removed all escapes from regex. Contributed by John Lemberger.
  Note: This is a breaking change - if you had detoured this filter bug via doubled-up backslashes,
        please halve them - for example change @"\\\\myextract.txt$" to @"\\myextract.txt$", or
        change "\\\\\\\\myextract.txt$" to "\\\\myextract.txt$".
+ AES Encryption and Decryption is now supported.
+ TarArchive now has IsStreamOwner property, for use with MemoryStream.
+ Removed exception "Extra data contains Zip64 information but version 2.0 is not high enough" due to rogue zip creators.
+ FastZip.ExtractZip now accepts an Input Stream.
+ Zip input and output streams can now specify buffer sizes.
+ Solved "NTFS Extra data invalid" exception when reading zip files with zero-length NTFS ExtraData entry.
+ Fixed "Size mismatch" exceptions reading zips created by SharpZipLib with an explicit entry CRC and Size.


Changes for 0.85.5
+ Fix for unreferenced ZipFile causing read failure after garbage collection.
+ Fix to ZipInputStream.CloseEntry were skipping could fail for long values.
+ Potential race condition flaw in FastZip event handling fixed up.
+ Wrong exceptions being thrown and wrong arguments for some exceptions fixed.
+ TarArchive handling tweaked so creation of archive with Tar streams is handled cleanly
+ ZipFile Testing now handles directories better.
+ DeflatorEngine altered so TotalIn is long.
+ ZipInputStream handles initial reading for entries with no data better.
+ Updates to unit tests
+ BZip2Constants made internal.  A breaking change in theory but no-one should be using these values.
+ BZip2 QSort3 optimised somewhat by changing StackElement from class to struct as per lytico suggestion.
+ Name filters allow quoting of ';' characters using \;
+ Fix GZIP flag checking bug
+ ArgumentNull instead of NullReference in tar header now thrown.
+ WindowsNameTransform now used in fastzip
+ Disposed checking in ZipFile beefed up.
+ Bug in entry handling for stored entries and sizing fixed.
+ Zip entries with zero bytes written optimised.
+ TarBuffer.IsEofBlock made obsolete use static TarBuffer.IsEndOfArchiveBlock instead.
+ GZip Finish and Close no longer add extra footers.  Close can be called twice without exception.  Writes after finish/close now fail.
+ Fastzip now throws exceptions if they are 'handled' via delegates.


Changes for 0.85.4
+ Fix for encryption going awol in Zip archives sometimes
+ Help files updated and now generated by Sandcastle Help File Builder

+ Extended unit tests in many areas.
+ Fixed GZip reading of streams larger then 2^32.
+ Windows date time now handled in ExtraData.
+ Extensions to extra data handling.
+ Encrypting stored entries no longer consumes arbitrary amounts of memory.
+ DeflatorOutputStream now uses CryptoTransform
+ ZipInputStream detection of invalid sizes improved.
+ ZipHelperStream reading end of stream values now correctly handled
+ ZipHelperStream now supports reading/writing data descriptors.
+ ZipFile testing data now handles data descriptors.
+ ZipFile adding entries now correctly handles data descriptors.
+ ZipFile now defaults to dynamic use of Zip64.
+ ZipEntryFactory class made public and bugs fixed.
+ ZipEntry DateTime handling cleaned up - Zero is treated as fixed low value and high values checked and handled.
+ Added progress event handling to FastZip.

Changes for 0.85.2.329

+ Minor tweaks for CF, ZipEntryFactory and ZipFile.
+ Fix for zip testing and Zip64 local header patching.
+ FastZip revamped to handle file attributes on extract + other fixes
+ Null ref in path filter fixed.
+ Extra data handling fixes
+ Revamped build and conditional compilation handling
+ Many bug fixes for Zip64.
+ Minor improvements to C# samples.
+ ZIP-1341 Non ascii zip password handling fix.
+ ZIP-355 Fix for zip compression problem at low levels

Changes for v0.85.1.271

+ BREAKING CHANGE:  Zip name transform implementations and other classes no longer directly support non-relative paths.
+ Update to Compact Framework handling to cater for CF 2.0 as well as 1.0 (minus encryption for 1.0)
+ Fix for Zip64 descriptor handling.
+ Zip64 handling altered to default to "Zip32" for compatability.
+ Add preliminary implementation for handlng of full unicode names.
+ Fix up encryption handling for ZipFile during updates.
+ Fix for updating bug were comment is the only thing updated.
+ Add IEntryFactory interface and default implementation.  Used in FastZip class currently.
+ ZIP-1216 GZipOutputStream header writing delayed allowing the class to be used with HTTP and IIS (via HttpResponse.Filter).  This was supposed to be fixed in 0.6 but was ommited.
+ ZIP-149 SVN Revision number incorporated in builds.
+ ZIP-1245 CF Build support added

Changes for v0.85
+ Mod time written in gzip header corrected.
+ Fix for ZipInputStream where closing an open entry wasnt handling all cases correctly.
+ Add support for Zip64 handling to both streams and ZipFile classes.
+ Add ability to modify an existing archive to ZipFile class.
+ Limited FxCop cleanups
+ TarArchive and others made IDisposable.
+ TarOutputStream end-of-file garbage data problem fixed.
+ Zip archive no longer performs zero writes which can cause problems.
+ A bundle of minor bug fixes particularly in the Zip area.
+ Enhanced testing facilities in ZipFile class to allow feedback.

Known issues fixed.
+ ZIP-975 BZip Compress and Decompress stream handling inconsistent.
+ ZIP-517 Stored entry handling were descriptors are specified in flags.
+ ZIP-514 FastZip not firing File/Directory Failure.
+ ZIP-513 HttpResponse exception when writing 0 bytes.
+ ZIP-506 Decryption fails for entry with extended time.
+ ZIP-174 Exception on zero length entries.


Changes for v0.84
+ When skipping to an entry in a zip archive no data is read.  This allows password setting after examining the entry to
  see if a password is required, and also allows skipping of entries that cannot be extracted.  You cannot skip
  an entry that cannot be extracted if the length is not in the local header.
+ Refactored decryption to make it robust and remove bugs.
+ Fix for reads of zero length in zip files.
+ Fix encryption bug in DeflatorOutputStream.
+ Fix bug when skipping entries
+ Add FastZip class.

Changes for v0.83b
+ Added SFX read support to ZipFile class.
+ Added code to test archive contents to ZipFile class.
+ Added SimpleZip to allow direct compression and decompression of zip files.

Changes for v0.83a
+ Bug with long file names in TAR fixed
+ Calling close on a stream returned by ZipFile.GetInputStream no longer closes main ZipFile stream

Changes for v0.83
+ Refactored tests so the main library doesnt require nunit to build.  A separate project for tests now exists.
+ GzipOutputStream now has a custom SetLevel method to set the compression level.
+ Unit tests upgraded to Nunit 2.2 style
+ A number of TAR bugs fixes in long names, entry size handling
+ TAR checksums are now actually checked and utilised.
+ Zip Streams now have concept of ownership for underlying stream allowing users to control when they are closed.

Changes for v0.82
+ Exception hierarchy altered so all internal library exceptions are derived from the same base class
+ A bug in tar handling where case wasnt correctly preserved has been repaired
+ ZipFile class was failing to set the bit flags field when reading entries, this has been corrected.

Changes for v0.81
+ ZipFile test checking for seekable stream shifted so it covers all constructors.
+ Flaw when checking local entry name against central directory name for MCBS strings worked around.
+ Some ZipEntry constructors made internal as they should have been originally
+ Some changes to allow compact framework compilation made.
+ Small alteration to TarEntry.cs to allow 1.0 compilation as well as 1.1 .

Changes for 0.8
+ Add functionality to support cleaning of names to Zip file convention added to ZipEntry class
+ External file and attributes are now handled
+ IsDirectory now handles the attributes for archives made on DOS/Windows
+ ZipFile class now has an indexer property
+ ZipFile class has new functionality for searching for entries by name
+ ZipFile class now reads external attributes from central header entries
+ Fixed bug in ZipInputStream class where extra bytes containing unix attributes altered date and time causing checking of password to fail
+ ZipInputStream class now checks version required to extract.
+ ZipOutputStream class version made by is now fixed at 2.0
+ Cleaned up summary comments all over the place.
+ Some changes to Tar classes to allow Compact Framework compilation.
+ Add checking for invalid entries when scanning through extra data.
+ Decryption of entries from Zip files created on non-seekable output now works.
+ Deflating of zero length files is automatically converted to stored if possible to save a little space.
+ More tests.

Changes for 0.7
+ Further encryption problems resolved
+ More tests added
+ More summary comments included
+ ZipFile locating central header optimised for case where file is not a zip file.
+ Add sample sz a commandline cs archiver for Zip files
+ Fix more end of stream return value bugs
+ Some tar bugs fixed

Changes for 0.6.1
+ Fix from John Reilly <jfreilly@hotmail.com>: A couple of things to fix up in TarInputStream.  Some Console.WriteLine stuff which should be removed/commented and a fix for handling directories.
+ 

Changes for 0.6
+ some return -1 bugs fixed
+ added gzipoutputstream mods from ben@blowery.org:
"It writes out the GZip header to the base stream as part of its constructor.
Unfortunately, I cannot write to the underlying stream (the
HttpResponse.Filter) upon construction.  I need to delay the header write
until just before the first real write to the GZipOutputStream.  I went
ahead and made the modifications to the library and it seems to work
wonderfully."
+ Added patches from John Reilly <jfreilly@hotmail.com> many, many bugs got fixed.
+ Added unit tests to ensure a certain level of stability

Changes since 0.51
+ Support for crypted files (decryption)
+ WinZip can't delete bug fixed (thanx to JackmanG from the SharpDevelop forum)
+ The ZipFile class has now a 'ZipFileComment' property containing the comment for the whole zip file. Contributed by John Carto.

Changes for 0.4
+ Compact Framework support
+ Tar bug fixed by Lloyd Dupont
+ Hopefully this time the date bug is fixed :)
+ SharpZipLib is now strong named and installGAC/uninstallGAC scripts are provided

Changes for 0.31
+ The Read method in the gzipstream returned still -1 instead of 0 at the eos

Changes for 0.3

+ Problem description:
  "The BinaryDeserializer explicitly checks the length of the input stream you hand it, and throws an exception if
  you try to deserialize from a stream that reports a length of zero. Unfortunately, InflaterInputStream reports a 
  length of zero when you first query it."
  Fixed by Joel Mueller <jmueller@delani.com>:
  The InflaterInputStream constructor (Stream, Inflater, int) is changed so that InflaterInputStream.len is initialized to 
  baseInputStream.Length instead of zero.
+ Problem description:
  "When you try to get all entries of your ZipFile class over a
  foreach(ZipEntry e in zFile) loop, you get all except the first one.
  
  I think the reason for this is: your index member (ptr) is initialized
  with value 0. Because your function MoveNext() first increases ptr and then
  the entry is accessed the first entry is skipped.
+ Bugfix date/time bug by Rainer Prem <Rainer@Prem.de>
+ Renamed the library to SharpZipLib (#ZipLib for short)
+ Added bzip2 compression/decompression
+ The Read method returns 0 instead of -1, when the end of the stream is reached.
  (this is defined by the .NET library)
+ Added tar support
+ The Date/Time now works better when reading zip files.
+ Fixed a rare compression bug (exception while zip/gzip specific files)

Changes for 0.2

+ Added new property in ZipEntry: DateTime Datetime {get; set;}
  (gets/sets datetime of an entry; should be easier to handle than the dos time. (int value))
+ Added new class: ZipFile
  This class allows easy reading of a zipped file and it's entries.
+ Changed the ZipOutputStream behavior:
  Now it writes the Size, Crc, Compressed size in the header, if the baseOutputStream is able to
  seek (which should be true for all files). Some crunchers had problems unpacking the files which had
  the Size, Crc, Compressed size fields in the data descriptor after the file data.
+ CompressionMethod is now an enumeration instead of a int.
+ Changed many internal Get/Set methods into C# properties.
+ The base methods in the Deflater/Inflater Streams are now called correctly; it should 
  work to use this construct (at least in my CVS library it does):
  new InflaterInputStream(new DeflaterOutputStream(new IOStream());
+ Fixed bug: DeflateFast had a bug which is now (hopefully) gone. This bug was in the original
  Java version too. (But please test fast deflate (compression level 1-3))

