              Apache Commons Compress RELEASE NOTES

Apache Commons Compress software defines an API for working with
compression and archive formats.  These include: bzip2, gzip, pack200,
lzma, xz, Snappy, traditional Unix Compress, DEFLATE, DEFLATE64, LZ4,
Brotli, Zstandard and ar, cpio, jar, tar, zip, dump, 7z, arj.

Release 1.20
------------

Commons Compress 1.20 like any version of Commons Compress since 1.3
can not be built from sources using Java 14 as Java 14 removes
support for the Pack200 format. We will address this issue with the
next release.

Fixed Bugs:
o SevenZFile could throw NullPointerException rather than
  IOException for certain archives. In addition it now handles
  certain empty archives more gracefully.
  Issue: COMPRESS-492.
o Deflate64CompressorInputStream.read would return 0 for some
  inputs in violation of the InputStream.read contract.
  Issue: COMPRESS-491.
o SeekableInMemoryByteChannel's truncate didn't set position
  according to the spec in an edge case.
  Issue: COMPRESS-499.
o BZip2CompressorInputStream now incorporates a similar patch as
  the one that fixed CVE-2019-12900 in libbzip2.

  Commons Compress has not been vulnerable to this CVE as it
  would have rejected a file with too many selectors. With this
  patch Commons Compress will be able to read certain archives
  that would have caused errors in Compress 1.19. Thanks to Joseph Allemandou.

Changes:
o Update optional library com.github.luben:zstd-jni from
  1.4.0-1 to 1.4.4-7.
  Issue: COMPRESS-493.
o Update tests from org.apache.felix:org.apache.felix.framework
  6.0.2 to 6.0.3.
o SevenZFile can now recover from a certain corruption that
  seems to happen occasionally when split archives are created.
  Issue: COMPRESS-497.
  Thanks to Stefan Schlott.
o Added random access support to SevenZFile.
  Issue: COMPRESS-342.
  Thanks to Peter Alfred Lee.
o Added support for split ZIP archives.
  Issue: COMPRESS-477.
  Thanks to Peter Alfred Lee.
o Added support for reading sparse entries to the TAR package.
  Issue: COMPRESS-124.
  Thanks to Peter Alfred Lee.
o Update JUnit from 4.12 to 4.13.

Removed:
o Removed the extraction code from the example CLI class inside
  of the SevenZ package. Not only is it superseeded by the
  examples package, its implementation was vulnerable to the
  ZipSlip attack.
  Issue: COMPRESS-495.

Release 1.19
------------

ZipArchiveInputStream and ZipFile will no longer throw an exception if
an extra field generally understood by Commons Compress is malformed
but rather turn them into UnrecognizedExtraField instances.  You can
influence the way extra fields are parsed in more detail by using the
new getExtraFields(ExtraFieldParsingBehavior) method of
ZipArchiveEntry now.

Some of the ZIP extra fields related to strong encryption will now
throw ZipExceptions rather than ArrayIndexOutOfBoundsExceptions in
certain cases when used directly. There is no practical difference
when they are read via ZipArchiveInputStream or ZipFile.

New features:
o It is now possible to skip parsing of local file headers when
  using ZipFile which may speed up reading the archive at the
  cost of potentially missing important information. See the
  javadocs of the ZipFile class for details.
  Issue: COMPRESS-466.
o TarArchiveInputStream has a new constructor-arg lenient that
  can be used to accept certain broken archives.
  Issue: COMPRESS-469.
o ArjArchiveEntry and SevenZArchiveEntry now implement hashCode
  and equals.
  Issue: COMPRESS-475.
o Added a MultiReadOnlySeekableByteChannel class
  that can be used to concatenate the parts of a multi volume 7z
  archive so that SevenZFile can read them.
  Issue: COMPRESS-231.
  Thanks to Tim Underwood.

Fixed Bugs:
o ZipArchiveInputStream could forget the compression level has
  changed under certain circumstances.
o Fixed another potential resource leak in
  ParallelScatterZipCreator#writeTo.
  Issue: COMPRESS-470.
o ArArchiveInputStream could think it had hit EOF prematurely.
  Github Pull Request #74.
  Thanks to Alex Bertram.
o Throw IOException rather than RuntimeExceptions for certain
  malformed LZ4 or Snappy inputs.
  Issue: COMPRESS-490.
o ZipArchiveInputStream failed to read stored entries with a
  data descriptor if the data descriptor didn't use the
  signature invented by InfoZIP.
  Issue: COMPRESS-482.

Changes:
o SevenZFile now provides a way to cap memory consumption for
  LZMA(2) compressed content.
  Github Pull Request #76.
  Issue: COMPRESS-481.
  Thanks to Robin Schimpf.
o The ARJ package has been updated to contain constants for more
  recent specifications.
  Issue: COMPRESS-464.
  Thanks to Rostislav Krasny.
o Update optional library zstd-jni from 1.3.3-3 to 1.4.0-1.
  Issue: COMPRESS-484.
o ParallelScatterZipCreator now writes the entries to the
  gathered output in the same order they have been added.
  Github Pull Requests #78 and #79.
  Issue: COMPRESS-485.
  Thanks to Hervé Boutemy, Tibor Digana.
o The Expander and Archive example classes can leak resources
  they have wrapped around passed in streams or channels. The
  methods consuming streams and channels have been adapted to
  give the calling code a chance to deal with those wrapper
  resources.
  Issue: COMPRESS-486.
o ZipArchiveInputStream and ZipFile no longer assume Commons
  Compress would understand extra fields better than the writer
  of the archive and silently turn extra fields that Commons
  Compress should understand into UnrecognizedExtraFields if
  parsing said fields fails.
  It is now possible to take more control over the extra field
  parsing process with a new overload of
  ZipArchiveEntry#getExtraFields.
  Issue: COMPRESS-479.
o ZipArchiveInputStream will now throw an exception if reading a
  stored entry with a data descriptor and the data descriptor
  doesn't match what it has actually read.

  The most common case for a situation like this is a stored ZIP
  archive inside of the archive ZipArchiveInputStream currently
  reads. In such a case ZipArchiveInputStream would happily
  extract the contained archive and stop once the central
  directory of the inner archive has been hit. This is a case
  where ZipArchiveInputStream simply can not be used and only
  ZipFile is able to read the archive.

  The only other explanation is a broken archive. So the
  exception prevents users from thinking they had successfully
  read the contents of the archive.
  Issue: COMPRESS-483.
o The 7zip tools provide a default name for archive entries
  without name; SevenZFile returns a null name for such
  entries. A new method getDefaultName has been added to derive
  the same name the 7zip tools would use and an option has been
  added that sets SevenZArchiveEntry's name to the default name
  if it is not contained inside the archive.
  Issue: COMPRESS-478.

Release 1.18
------------

This release changes the OSGi Manifest entry Bundle-SymbolicName from
org.apache.commons.compress to org.apache.commons.commons-compress.

New features:
o It is now possible to specify the arguments of zstd-jni's
  ZstdOutputStream constructors via Commons Compress as well.
  Issue: COMPRESS-460.
  Thanks to Carmi Grushko.

Fixed Bugs:
o The example Expander class has been vulnerable to a path
  traversal in the edge case that happens when the target
  directory has a sibling directory and the name of the target
  directory is a prefix of the sibling directory's name.
  Thanks to Didier Loiseau.
o Changed the OSGi Import-Package to also optionally import
  javax.crypto so encrypted archives can be read.
  Issue: COMPRESS-456.
o Changed various implementations of the close method to better
  ensure all held resources get closed even if exceptions are
  thrown during the closing the stream.
  Issue: COMPRESS-457.
o ZipArchiveInputStream can now detect the APK Signing Block
  used in signed Android APK files and treats it as an "end of
  archive" marker.
  Issue: COMPRESS-455.
o The cpio streams didn't handle archives using a multi-byte
  encoding properly.
  Issue: COMPRESS-459.
  Thanks to Jens Reimann.
o ZipArchiveInputStream#read would silently return -1 on a
  corrupted stored entry and even return > 0 after hitting the
  end of the archive.
  Issue: COMPRESS-463.
o ArArchiveInputStream#read would allow to read from the stream
  without opening an entry at all.
  Issue: COMPRESS-462.

Release 1.17
------------

New features:
o Added a unit test that is supposed to fail if we break the
  OSGi manifest entries again.
  Issue: COMPRESS-443.
o Add a new SkipShieldingInputStream class that can be used with
  streams that throw an IOException when skip is invoked.
  Issue: COMPRESS-449.
o New constructors have been added to SevenZFile that accept
  char[]s rather than byte[]s in order to avoid a common error
  of using the wrong encoding when creating the byte[].  This
  change may break source compatibility for client code that
  uses one of the constructors expecting a password and passes
  in null as password. We recommend to change the code to use a
  constructor without password argument.
  Issue: COMPRESS-452.

Fixed Bugs:
o Removed the objenesis dependency from the pom as it is not
  needed at all.
o Fixed resource leak in ParallelScatterZipCreator#writeTo.
  Issue: COMPRESS-446.
o Certain errors when parsing ZIP extra fields in corrupt
  archives are now turned into ZipException, they used to
  manifest as ArrayIndexOutOfBoundsException before.
  Issue: COMPRESS-447.
o IOUtils.copy now verifies the buffer size is bigger than 0.
  Issue: COMPRESS-451.
o ZipArchiveInputStream failed to read some files with stored
  entries using a data descriptor.
  Issue: COMPRESS-454.

Changes:
o Fixed some code examples.
  Github Pull Request #63.
  Thanks to Marchenko Sergey.
o The streams returned by ZipFile and most other decompressing
  streams now provide information about the number of compressed
  and uncompressed bytes read so far. This may be used to detect
  a ZipBomb if the compression ratio exceeds a certain
  threshold, for example.
  For SevenZFile a new method returns the statistics for the
  current entry.
  Issue: COMPRESS-445.
  Thanks to Andreas Beeker.
o Added a workaround for a bug in AdoptOpenJDK for S/390 to
  BZip2CompressorInputStream.
  Issue: COMPRESS-453.

Release 1.16.1
--------------

Fixed Bug:
o Fixed the OSGi manifest entry for imports that has been broken
  in 1.16.
  Issue: COMPRESS-442.

Release 1.16
------------

New features:
o Add read-only support for Zstandard compression based on the
  Zstd-jni project.
  Issue: COMPRESS-423. Thanks to Andre F de Miranda.
o Added auto-detection for Zstandard compressed streams.
  Issue: COMPRESS-425.
o Added write-support for Zstandard compression.
  Issue: COMPRESS-426.
o Added read-only DEFLATE64 support to ZIP archives and as
  stand-alone CompressorInputStream.
  Issue: COMPRESS-380. Thanks to Christian Marquez Grabia.
o Added read-only DEFLATE64 support to 7z archives.
  Issue: COMPRESS-437.

Fixed Bugs:
o Synchronized iteration over a synchronizedList in
  ParallelScatterZipCreator.
  Issue: COMPRESS-430. Thanks to Bruno P. Kinoshita.
o ZipFile could get stuck in an infinite loop when parsing ZIP
  archives with certain strong encryption headers.
  Issue: COMPRESS-432.
o Added improved checks to detect corrupted bzip2 streams and
  throw the expected IOException rather than obscure
  RuntimeExceptions.
  Issue: COMPRESS-424.

Changes:
o Replaces instanceof checks with a type marker in LZ77 support code.
  Issue: COMPRESS-435. Thanks to BELUGA BEHR.
o Updated XZ for Java dependency to 1.8 in order to pick up bug fix
  to LZMA2InputStream's available method.
o ZipArchiveEntry now exposes how the name or comment have been
  determined when the entry was read.
  Issue: COMPRESS-429. Thanks to Damiano Albani.
o ZipFile.getInputStream will now always buffer the stream
  internally in order to improve read performance.
  Issue: COMPRESS-438.
o Speed improvement for DEFLATE64 decompression.
  Issue: COMPRESS-440. Thanks to Dawid Weiss.
o Added a few extra sanity checks for the rarer compression
  methods used in ZIP archives.
  Issue: COMPRESS-436.
o Simplified the special handling for the dummy byte required by
  zlib when using java.util.zip.Inflater.
  Issue: COMPRESS-441.
o Various code cleanups.
  Github Pull Request #61. Thanks to Shahab Kondri.
o TarArchiveEntry's preserveLeadingSlashes constructor argument
  has been renamed and can now also be used to preserve the
  drive letter on Windows.

Release 1.15
------------

New features:
o Added magic MANIFEST entry Automatic-Module-Name so the module
  name will be org.apache.commons.compress when the jar is used
  as an automatic module in Java9.
  Issue: COMPRESS-397.
o Added a new utility class FixedLengthBlockOutputStream that
  can be used to ensure writing always happens in blocks of a
  given size.
  Issue: COMPRESS-405. Thanks to Simon Spero.
o It is now possible to specify/read custom PAX headers when
  writing/reading tar archives.
  Issue: COMPRESS-400. Thanks to Simon Spero.

Fixed Bugs:
o Make sure "version needed to extract" in local file header and
  central directory of a ZIP archive agree with each other.
  Also ensure the version is set to 2.0 if DEFLATE is used.
  Issue: COMPRESS-394.
o Don't use a data descriptor in ZIP archives when copying a raw
  entry that already knows its size and CRC information.
  Issue: COMPRESS-395.
o Travis build redundantly repeats compilation and tests redundantly
  GitHub Pull Request #43. Thanks to Simon Spero.
  Issue: COMPRESS-413
o The MANIFEST of 1.14 lacks an OSGi Import-Package for XZ for
  Java.
  Issue: COMPRESS-396.
o BUILDING.md now passes the RAT check.
  Issue: COMPRESS-406. Thanks to Simon Spero.
o Made sure ChecksumCalculatingInputStream receives valid
  checksum and input stream instances via the constructor.
  Issue: COMPRESS-412. Thanks to Michael Hausegger.
o TarArchiveOutputStream now verifies the block and record sizes
  specified at construction time are compatible with the tar
  specification. In particular 512 is the only record size
  accepted and the block size must be a multiple of 512.
  Issue: COMPRESS-407. Thanks to Simon Spero.
o Fixed class names of CpioArchiveEntry and
  CpioArchiveInputStream in various Javadocs.
  Issue: COMPRESS-415.
o The code of the extended timestamp zip extra field incorrectly
  assumed the time was stored as unsigned 32-bit int and thus
  created incorrect results for years after 2037.
  Issue: COMPRESS-416. Thanks to Simon Spero.
o Removed ZipEncoding code that became obsolete when we started
  to require Java 5 as baseline long ago.
  Issue: COMPRESS-410. Thanks to Simon Spero.
o The tar package will no longer try to parse the major and
  minor device numbers unless the entry represents a character
  or block special file.
  Issue: COMPRESS-417.
o When reading tar headers with name fields containing embedded
  NULs, the name will now be terminated at the first NUL byte.
  Issue: COMPRESS-421. Thanks to Roel Spilker.
o Simplified TarArchiveOutputStream by replacing the internal
  buffering with new class FixedLengthBlockOutputStream.
  Issue: COMPRESS-409.

Release 1.14
------------

New features:
o Added write support for Snappy.
  Issue: COMPRESS-246.
o Added support for LZ4 (block and frame format).
  Issue: COMPRESS-271.
o Add static detect(InputStream in) to CompressorStreamFactory
  and ArchiveStreamFactory
  Issue: COMPRESS-385.
o Added a way to limit amount of memory ZCompressorStream may
  use.
  Issue: COMPRESS-382. Thanks to Tim Allison.
o Added a way to limit amount of memory ZCompressorStream may
  use.
  Issue: COMPRESS-386. Thanks to Tim Allison.
o Added a way to limit amount of memory LZMACompressorStream and
  XZCompressorInputStream may use.
  Issue: COMPRESS-382. Thanks to Tim Allison.
o Add Brotli decoder based on the Google Brotli library.
  Issue: COMPRESS-392. Thanks to Philippe Mouawad.
o ZipEntry now exposes its data offset.
  Issue: COMPRESS-390. Thanks to Zbynek Vyskovsky.
o Using ZipArchiveEntry's setAlignment it is now possible to
  ensure the data offset of an entry starts at a file position
  that at word or page boundaries.
  A new extra field has been added for this purpose.
  Issue: COMPRESS-391. Thanks to Zbynek Vyskovsky.

Fixed Bugs:
o SnappyCompressorInputStream slides the window too early
  leading to ArrayIndexOutOfBoundsExceptions for some streams.
  Issue: COMPRESS-378.
o ZipArchiveEntry#isUnixSymlink now only returns true if the
  corresponding link flag is the only file-type flag set.
  Issue: COMPRESS-379. Thanks to Guillaume Boué.
o Fixed an integer overflow in CPIO's CRC calculation.
  Pull Request #17. Thanks to Daniel Collin.
o Make unit tests work on Windows paths with spaces in their names.
  Issue: COMPRESS-387.
o Internal location pointer in ZipFile could get incremented
  even if nothing had been read.
  Issue: COMPRESS-389.
o LZMACompressorOutputStream#flush would throw an exception
  rather than be the NOP it promised to be.
  Issue: COMPRESS-393.

Changes:
o The blocksize for FramedSnappyCompressorInputStream can now be
  configured as some IWA files seem to be using blocks larger
  than the default 32k.
  Issue: COMPRESS-358.
o BZip2CompressorInputstream now uses BitInputStream internally.
  Pull Request #13. Thanks to Thomas Meyer.
o Improved performance for concurrent reads from ZipFile when
  reading from a file.
  Issue: COMPRESS-388. Thanks to Zbynek Vyskovsky.

Release 1.13
------------

Commons Compress 1.13 is the first version to require Java 7 at
runtime.

Changes in this version include:

New features:
o SevenZFile, SevenZOutputFile, ZipFile and
  ZipArchiveOutputStream can now work on non-file resources if
  they can be accessed via SeekableByteChannel.
  Issue: COMPRESS-327.
o Allow compressor extensions through a standard JRE ServiceLoader.
  Issue: COMPRESS-368.
o Allow archive extensions through a standard JRE ServiceLoader.
  Issue: COMPRESS-369.
o Add write support for the legacy LZMA format, this requires XZ
  for Java 1.6.
  Issue: COMPRESS-373.
o Add write support for the legacy LZMA stream to 7z, this
  requires XZ for Java 1.6.
  Issue: COMPRESS-374.
o Allow the clients of ParallelScatterZipCreator to provide
  ZipArchiveEntryRequestSupplier.
  Issue: COMPRESS-375. Thanks to Plamen Totev.
o Add a version-independent link to the API docs of the latest
  release.
  Issue: COMPRESS-372.

Fixed Bugs:
o BitInputStream could return bad results when overflowing
  internally - if two consecutive reads tried to read more than
  64 bits.
  Issue: COMPRESS-363.
o ZipArchiveInputStream.closeEntry does not properly advance to
  next entry if there are junk bytes at end of data section.
  Issue: COMPRESS-364. Thanks to Mike Mole.
o ZipArchiveInputStream now throws an Exception if it encounters
  a broken ZIP archive rather than signaling end-of-archive.
  Issue: COMPRESS-367. Thanks to Mike Mole.
o ScatterZipOutputStream didn't close the StreamCompressor
  causing a potential resource leak.
  Issue: COMPRESS-377.

Changes:
o Update Java requirement from 6 to 7.
  Issue: COMPRESS-360.
o Clarified which TarArchiveEntry methods are useless for
  entries read from an archive.
  Issue: COMPRESS-366.

Release 1.12
------------

Commons Compress 1.12 is the first version to require Java 6 at
runtime.

Release 1.12 changes the behavior of BZip2CompressorOutputStream's
finalize method so that it no longer invokes finish. This is going to
break code that relied on the finalizer to clean up an unfinished
stream. The code will need to be changed to call finish or close
itself. Note that a finalizer is not guaranteed to run, so the feature
was not 100% effective in any case.

New features:

o FramedSnappyCompressorInputStream now supports the dialect of
  Snappy used by the IWA files contained within the zip archives
  used in Apple's iWork 13 files.
  Issue: COMPRESS-352.

Fixed Bugs:

o SevenZFile.read() throws an IllegalStateException for empty entries.
  Issue: COMPRESS-348.
o TarArchiveInputStream failed to parse PAX headers that included
  blank lines.
  Issue: COMPRESS-355. Thanks to Jeremy Gustie.
o TarArchiveInputStream failed to parse PAX headers whose tar entry
  name ended with a slash.
  Issue: COMPRESS-356. Thanks to Jeremy Gustie.

Changes:
o Update requirement from Java 5 to 6.
  Issue: COMPRESS-349.
o TarArchiveEntry wastefully allocates empty arrays.
  Issue: COMPRESS-350.
o Javadoc for BZip2CompressorInputStream(InputStream, boolean) should
  refer to IOEx, not NPE.
  Issue: COMPRESS-353.
o PureJavaCrc32C in the snappy package is now final so it is now safe
  to call a virtual method inside the constructor.
  Issue: COMPRESS-354.

o ZipArchiveInputStream and CpioArchiveInputStream could throw
  exceptions who's messages contained potentially corrupt entry names
  read from a broken archive. They will now sanitize the names by
  replacing unprintable characters and restricting the length to 255
  characters.
  Issue: COMPRESS-351.
o BZip2CompressorOutputStream no longer tries to finish the output
  stream in finalize. This is a breaking change for code that relied
  on the finalizer.
  Issue: COMPRESS-357.


Release 1.11
------------

New features:
o TarArchiveInputStream now supports reading global PAX headers.
  Issue: COMPRESS-347.
o The PAX headers for sparse entries written by star are now
  applied.
  Issue: COMPRESS-346.
o GNU sparse files using one of the PAX formats are now
  detected, but cannot be extracted.
  Issue: COMPRESS-345.
o New method SevenZFile.getEntries can be used to list the
  contents of a 7z archive.
  Issue: COMPRESS-341.
o When using Zip64Mode.Always also use ZIP64 extensions inside
  the central directory.
  GitHub Pull Request #10 Thanks to Matt Hovey.
o ZipFile.getRawInputStream() is now part of the public API
  Issue: COMPRESS-323.
o Allow byte-for-byte replication of Zip entries.
  GitHub Pull Request #6. Thanks to Jason van Zyl.
o TarArchiveEntry's preserveLeadingSlashes is now a property and used
  on later calls to setName, too.
  This behavior is a breaking change.
  Issue: COMPRESS-328.
o Added read-only support for bzip2 compression used inside of
  ZIP archives.
  GitHub Pull Request #4. Thanks to Sören Glimm.

Fixed Bugs:
o ArArchiveInputStream can now read GNU extended names that are
  terminated with a NUL byte rather than a linefeed.
  Issue: COMPRESS-344.
o Native Memory Leak in Sevenz-DeflateDecoder.
  Issue: COMPRESS-343. Thanks to Rene Preissel.
o SevenZFile will now only try to drain an entry's content when
  moving on to the next entry if data is read from the next
  entry. This should improve performance for applications that
  try to skip over entries.
  Issue: COMPRESS-340. Thanks to Dawid Weiss.
o file names of tar archives using the xstar format are now
  parsed properly.
  Issue: COMPRESS-336.
o checksums of tars that pad the checksum field to the left are
  now calculated properly.
  Issue: COMPRESS-335.
o ArArchiveInputStream failed to read past the first entry when
  BSD long names have been used.
  Issue: COMPRESS-334. Thanks to Jeremy Gustie.
o Added buffering for random access which speeds up 7Z support.
  Issue: COMPRESS-333. Thanks to Dawid Weiss.
o The checksum validation of TararchiveEntry is now as strict as
  the validation of GNU tar, which eliminates a few cases of
  false positives of ArchiveStreamFactory.
  This behavior is a breaking change since the check has become
  more strict but any archive that fails the checksum test now
  would also fail it when extracted with other tools and must be
  considered an invalid archive.
  Issue: COMPRESS-331.
o SnappyCompressorInputStream and
  FramedSnappyCompressorInputStream returned 0 at the end of the
  stream under certain circumstances.
  Issue: COMPRESS-332.
o Adjusted unit test to updates in Java8 and later that change
  the logic of ZipEntry#getTime.
  Issue: COMPRESS-326.
o TarArchiveOutputStream will now recognize GNU long name and
  link entries even if the special entry has a different name
  than GNU tar uses itself.  This seems to be the case for
  archives created by star.
  Issue: COMPRESS-324.
o ArrayIndexOutOfBoundsException when InfoZIP type 7875 extra
  fields are read from the central directory.
  Issue: COMPRESS-321.

Release 1.10
------------

Release 1.10 moves the former
org.apache.commons.compress.compressors.z._internal_ package which
breaks backwards compatibility for code which used the old package.

This also changes the superclass of ZCompressorInputStream which makes
this class binary incompatible with the one of Compress 1.9.  Code
that extends ZCompressorInputStream will need to be recompiled in
order to work with Compress 1.10.

New features:
o CompressorStreamFactory can now auto-detect DEFLATE streams
  with ZLIB header.
  Issue: COMPRESS-316. Thanks to Nick Burch.
o CompressorStreamFactory can now auto-detect LZMA streams.
  Issue: COMPRESS-313.
o Added support for parallel compression. This low-level API allows
  a client to build a zip/jar file by using the class
  org.apache.commons.compress.archivers.zip.ParallelScatterZipCreator.

  Zip documentation updated with further notes about parallel features.

  Please note that some aspects of jar creation need to be
  handled by client code and is not part of commons-compress for this
  release.
  Issue: COMPRESS-296. Thanks to Kristian Rosenvold.
o Cut overall object instantiation in half by changing file
  header generation algorithm, for a 10-15 percent performance
  improvement.

  Also extracted two private methods createLocalFileHeader
  and createCentralFileHeader in ZipArchiveOutputStream.
  These may have some interesting additional usages in the
  near future. Thanks to Kristian Rosenvold.
o New methods in ZipArchiveOutputStream and ZipFile allows
  entries to be copied from one archive to another without
  having to re-compress them.
  Issue: COMPRESS-295. Thanks to Kristian Rosenvold.

Fixed Bugs:
o TarArchiveInputStream can now read entries with group or
  user ids > 0x80000000.
  Issue: COMPRESS-314.
o TarArchiveOutputStream can now write entries with group or
  user ids > 0x80000000.
  Issue: COMPRESS-315.
o TarArchiveEntry's constructor with a File and a String arg
  didn't normalize the name.
  Issue: COMPRESS-312.
o ZipEncodingHelper no longer reads system properties directly
  to determine the default charset.
  Issue: COMPRESS-308.
o BZip2CompressorInputStream#read would return -1 when asked to
  read 0 bytes.
  Issue: COMPRESS-309.
o ArchiveStreamFactory fails to pass on the encoding when creating
  some streams.
    * ArjArchiveInputStream
    * CpioArchiveInputStream
    * DumpArchiveInputStream
    * JarArchiveInputStream
    * TarArchiveInputStream
    * JarArchiveOutputStream
  Issue: COMPRESS-306.
o Restore immutability/thread-safety to ArchiveStreamFactory.
  The class is now immutable provided that the method setEntryEncoding
  is not used. The class is thread-safe.
  Issue: COMPRESS-302.
o Restore immutability/thread-safety to CompressorStreamFactory.
  The class is now immutable provided that the method
  setDecompressConcatenated is not used.  The class is thread-safe.
  Issue: COMPRESS-303.
o ZipFile logs a warning in its finalizer when its constructor
  has thrown an exception reading the file - for example if the
  file doesn't exist.
  Issue: COMPRESS-297.
o Improved error message when tar encounters a groupId that is
  too big to write without using the STAR or POSIX format.
  Issue: COMPRESS-290. Thanks to Kristian Rosenvold.
o SevenZFile now throws the specific PasswordRequiredException
  when it encounters an encrypted stream but no password has
  been specified.
  Issue: COMPRESS-298.

Changes:
o Moved the package
  org.apache.commons.compress.compressors.z._internal_ to
  org.apache.commons.compress.compressors.lzw and made it part
  of the API that is officially supported.  This will break
  existing code that uses the old package. Thanks to Damjan Jovanovic.

For complete information on Apache Commons Compress, including instructions
on how to submit bug reports, patches, or suggestions for improvement,
see the Apache Commons Compress website:

https://commons.apache.org/compress/

Old Release Notes
=================

Release 1.9
-----------

New features:
o Added support for DEFLATE streams without any gzip framing.
  Issue: COMPRESS-263.
  Thanks to Matthias Stevens.

Fixed Bugs:
o When reading 7z files unknown file properties and properties of type
  kDummy are now ignored.
  Issue: COMPRESS-287.
o Expanding 7z archives using LZMA compression could cause an
  EOFException.
  Issue: COMPRESS-286.
o Long-Name and -link or PAX-header entries in TAR archives always had
  the current time as last modfication time, creating archives that
  are different at the byte level each time an archive was built.
  Issue: COMPRESS-289.
  Thanks to Bob Robertson.

Changes:
o Checking for XZ for Java may be expensive.  The result will now be
  cached outside of an OSGi environment.  You can use the new
  XZUtils#setCacheXZAvailability to overrride this default behavior.
  Issue: COMPRESS-285.

Release 1.8.1
-------------

New features:
o COMPRESS-272:  CompressorStreamFactory can now auto-detect Unix compress
                 (".Z") streams.

Fixed Bugs:
o COMPRESS-270:  The snappy, ar and tar inputstreams might fail to read from a
                 non-buffered stream in certain cases.
o COMPRESS-277:  IOUtils#skip might skip fewer bytes than requested even though
                 more could be read from the stream.
o COMPRESS-276:  ArchiveStreams now validate there is a current entry before
                 reading or writing entry data.
o ArjArchiveInputStream#canReadEntryData tested the current
                 entry of the stream rather than its argument.
o COMPRESS-274:  ChangeSet#delete and deleteDir now properly deal with unnamed
                 entries.
o COMPRESS-273:  Added a few null checks to improve robustness.
o COMPRESS-278:  TarArchiveInputStream failed to read archives with empty
                 gid/uid fields.
o COMPRESS-279:  TarArchiveInputStream now again throws an exception when it
                 encounters a truncated archive while reading from the last
                 entry.
o COMPRESS-280:  Adapted TarArchiveInputStream#skip to the modified
                 IOUtils#skip method. Thanks to BELUGA BEHR.

Changes:
o The dependency on org.tukaani:xz is now marked as optional.

Release 1.8
-----------

New features:
o GzipCompressorInputStream now provides access to the same
  metadata that can be provided via GzipParameters when writing
  a gzip stream.
  Issue: COMPRESS-260.
o SevenZOutputFile now supports chaining multiple
  compression/encryption/filter methods and passing options to
  the methods.
  Issue: COMPRESS-266.
o The (compression) method(s) can now be specified per entry in
  SevenZOutputFile.
  Issue: COMPRESS-261.
o SevenZArchiveEntry "knows" which method(s) have been used to
  write it to the archive.
  Issue: COMPRESS-258.
o The 7z package now supports the delta filter as method.
o The 7z package now supports BCJ filters for several platforms.
  You will need a version >= 1.5 of XZ for Java to read archives
  using BCJ, though.
  Issue: COMPRESS-257.

Fixed Bugs:
o BZip2CompressorInputStream read fewer bytes than possible from
  a truncated stream.
  Issue: COMPRESS-253.
o SevenZFile failed claiming the dictionary was too large when
  archives used LZMA compression for headers and content and
  certain non-default dictionary sizes.
  Issue: COMPRESS-253.
o CompressorStreamFactory.createCompressorInputStream with
  explicit compression did not honor decompressConcatenated
  Issue: COMPRESS-259.
o TarArchiveInputStream will now read archives created by tar
  implementations that encode big numbers by not adding a
  trailing NUL.
  Issue: COMPRESS-262.
o ZipArchiveInputStream would return NUL bytes for the first 512
  bytes of a STORED entry if it was the very first entry of the
  archive.
  Issue: COMPRESS-264.
o When writing PAX/POSIX headers for TAR entries with
  backslashes or certain non-ASCII characters in their name
  TarArchiveOutputStream could fail.
  Issue: COMPRESS-265.
o ArchiveStreamFactory now throws a StreamingNotSupported - a
  new subclass of ArchiveException - if it is asked to read from
  or write to a stream and Commons Compress doesn't support
  streaming for the format.  This currently only applies to the
  7z format.
  Issue: COMPRESS-267.

Release 1.7
-----------

New features:
o Read-Only support for Snappy compression.
  Issue: COMPRESS-147. Thanks to BELUGA BEHR.
o Read-Only support for .Z compressed files.
  Issue: COMPRESS-243. Thanks to Damjan Jovanovic.
o ZipFile and ZipArchiveInputStream now support reading entries
  compressed using the SHRINKING method. Thanks to Damjan Jovanovic.
o GzipCompressorOutputStream now supports setting the compression
  level and the header metadata (filename, comment, modification time,
  operating system and extra flags)
  Issue: COMPRESS-250. Thanks to Emmanuel Bourg.
o ZipFile and ZipArchiveInputStream now support reading entries
  compressed using the IMPLODE method.
  Issue: COMPRESS-115. Thanks to Emmanuel Bourg.
o ZipFile and the 7z file classes now implement Closeable and can be
  used in try-with-resources constructs.

Fixed Bugs:
o SevenZOutputFile#closeArchiveEntry throws an exception when using
  LZMA2 compression on Java8.  Issue: COMPRESS-241.
o 7z reading of big 64bit values could be wrong.
  Issue: COMPRESS-244. Thanks to Nico Kruber.
o TarArchiveInputStream could fail to read an archive completely.
  Issue: COMPRESS-245.
o The time-setters in X5455_ExtendedTimestamp now set the
  corresponding flags explicitly - i.e. they set the bit if the valus
  is not-null and reset it otherwise.  This may cause
  incompatibilities if you use setFlags to unset a bit and later set
  the time to a non-null value - the flag will now be set.
  Issue: COMPRESS-242.
o SevenZOutputFile would create invalid archives if more than six
  empty files or directories were included.  Issue: COMPRESS-252.

Release 1.6
-----------

Version 1.6 introduces changes to the internal API of the tar package that
break backwards compatibility in the following rare cases.  This version
removes the package private TarBuffer class along with the protected "buffer"
members in TarArchiveInputStream and TarArchiveOutputStream.  This change will
only affect you if you have created a subclass of one of the stream classes
and accessed the buffer member or directly used the TarBuffer class.

Changes in this version include:

New features:
o Added support for 7z archives.  Most compression algorithms
  can be read and written, LZMA and encryption are only
  supported when reading.  Issue: COMPRESS-54. Thanks to Damjan Jovanovic.
o Added read-only support for ARJ archives that don't use
  compression.  Issue: COMPRESS-226. Thanks to Damjan Jovanovic.
o DumpArchiveInputStream now supports an encoding parameter that
  can be used to specify the encoding of file names.
o The CPIO streams now support an encoding parameter that can be
  used to specify the encoding of file names.
o Read-only support for LZMA standalone compression has been added.
  Issue: COMPRESS-111.

Fixed Bugs:
o TarBuffer.tryToConsumeSecondEOFRecord could throw a
  NullPointerException  Issue: COMPRESS-223. Thanks to Jeremy Gustie.
o Parsing of zip64 extra fields has become more lenient in order
  to be able to read archives created by DotNetZip and maybe
  other archivers as well.  Issue: COMPRESS-228.
o TAR will now properly read the names of symbolic links with
  long names that use the GNU variant to specify the long file
  name.  Issue: COMPRESS-229. Thanks to Christoph Gysin.
o ZipFile#getInputStream could return null if the archive
  contained duplicate entries.
  The class now also provides two new methods to obtain all
  entries of a given name rather than just the first one.
  Issue: COMPRESS-227.
o CpioArchiveInputStream failed to read archives created by
  Redline RPM.  Issue: COMPRESS-236. Thanks to Andrew Duffy.
o TarArchiveOutputStream now properly handles link names that
  are too long to fit into a traditional TAR header.  Issue:
  COMPRESS-237. Thanks to Emmanuel Bourg.
o The auto-detecting create*InputStream methods of Archive and
  CompressorStreamFactory could fail to detect the format of
  blocking input streams.  Issue: COMPRESS-239.

Changes:
o Readabilty patch to TarArchiveInputStream.  Issue:
  COMPRESS-232. Thanks to BELUGA BEHR.
o Performance improvements to TarArchiveInputStream, in
  particular to the skip method.  Issue: COMPRESS-234. Thanks to
  BELUGA BEHR.

Release 1.5
-----------

New features:

o CompressorStreamFactory has an option to create decompressing
  streams that decompress the full input for formats that support
  multiple concatenated streams.
  Issue: COMPRESS-220.

Fixed Bugs:

o Typo in CompressorStreamFactory Javadoc
  Issue: COMPRESS-218.
  Thanks to Gili.
o ArchiveStreamFactory's tar stream detection created false positives
  for AIFF files.
  Issue: COMPRESS-191.
  Thanks to Jukka Zitting.
o XZ for Java didn't provide an OSGi bundle.  Compress' dependency on
  it has now been marked optional so Compress itself can still be used
  in an OSGi context.
  Issue: COMPRESS-199.
  Thanks to Jukka Zitting.
o When specifying the encoding explicitly TarArchiveOutputStream would
  write unreadable names in GNU mode or even cause errors in POSIX
  mode for file names longer than 66 characters.
  Issue: COMPRESS-200.
  Thanks to Christian Schlichtherle.
o Writing TAR PAX headers failed if the generated entry name ended
  with a "/".
  Issue: COMPRESS-203.
o ZipArchiveInputStream sometimes failed to provide input to the
  Inflater when it needed it, leading to reads returning 0.
  Issue: COMPRESS-189.
  Thanks to Daniel Lowe.
o TarArchiveInputStream ignored the encoding for GNU long name
  entries.
  Issue: COMPRESS-212.
o TarArchiveInputStream could leave the second EOF record inside the
  stream it had just finished reading.
  Issue: COMPRESS-206.
  Thanks to Peter De Maeyer.
o DumpArchiveInputStream no longer implicitly closes the original
  input stream when it reaches the end of the archive.
o ZipArchiveInputStream now consumes the remainder of the archive when
  getNextZipEntry returns null.
o Unit tests could fail if the source tree was checked out to a
  directory tree containign spaces.
  Issue: COMPRESS-205.
  Thanks to Daniel Lowe.
o Fixed a potential ArrayIndexOutOfBoundsException when reading STORED
  entries from ZipArchiveInputStream.
  Issue: COMPRESS-219.
o CompressorStreamFactory can now be used without XZ for Java being
  available.
  Issue: COMPRESS-221.

Changes:

o Improved exception message if a zip archive cannot be read because
  of an unsupported compression method.
  Issue: COMPRESS-188.
  Thanks to Harald Kuhn.
o ArchiveStreamFactory has a setting for file name encoding that sets
  up encoding for ZIP and TAR streams.
  Issue: COMPRESS-192.
  Thanks to Jukka Zitting.
o TarArchiveEntry now has a method to verify its checksum.
  Issue: COMPRESS-191.
  Thanks to Jukka Zitting.
o Split/spanned ZIP archives are now properly detected by
  ArchiveStreamFactory but will cause an
  UnsupportedZipFeatureException when read.
o ZipArchiveInputStream now reads archives that start with a "PK00"
  signature.  Archives with this signatures are created when the
  archiver was willing to split the archive but in the end only needed
  a single segment - so didn't split anything.
  Issue: COMPRESS-208.
o TarArchiveEntry has a new constructor that allows setting linkFlag
  and preserveLeadingSlashes at the same time.
  Issue: COMPRESS-201.
o ChangeSetPerformer has a new perform overload that uses a ZipFile
  instance as input.
  Issue: COMPRESS-159.
o Garbage collection pressure has been reduced by reusing temporary
  byte arrays in classes.
  Issue: COMPRESS-172.
  Thanks to Thomas Mair.
o Can now handle zip extra field 0x5455 - Extended Timestamp.
  Issue: COMPRESS-210.
  Thanks to Julius Davies.
o handle zip extra field 0x7875 - Info Zip New Unix Extra Field.
  Issue: COMPRESS-211.
  Thanks to Julius Davies.
o ZipShort, ZipLong, ZipEightByteInteger should implement Serializable
  Issue: COMPRESS-213.
  Thanks to Julius Davies.
o better support for unix symlinks in ZipFile entries.
  Issue: COMPRESS-214.
  Thanks to Julius Davies.
o ZipFile's initialization has been improved for non-Zip64 archives.
  Issue: COMPRESS-215.
  Thanks to Robin Power.
o Updated XZ for Java dependency to 1.2 as this version provides
  proper OSGi manifest attributes.

Release 1.4.1
-------------

This is a security bugfix release, see
https://commons.apache.org/proper/commons-compress/security.html#Fixed_in_Apache_Commons_Compress_1.4.1

Fixed Bugs:

o Ported libbzip2's fallback sort algorithm to
  BZip2CompressorOutputStream to speed up compression in certain
  edge cases.

Release 1.4
-----------

New features:
o COMPRESS-156:  Support for the XZ format has been added.

Fixed Bugs:
o COMPRESS-183:  The tar package now allows the encoding of file names to be
                 specified and can optionally use PAX extension headers to
                 write non-ASCII file names.
                 The stream classes now write (or expect to read) archives that
                 use the platform's native encoding for file names.  Apache
                 Commons Compress 1.3 used to strip everything but the lower
                 eight bits of each character which effectively only worked for
                 ASCII and ISO-8859-1 file names.
                 This new default behavior is a breaking change.
o COMPRESS-184:  TarArchiveInputStream failed to parse PAX headers that
                 contained non-ASCII characters.
o COMPRESS-178:  TarArchiveInputStream throws IllegalArgumentException instead of IOException
o COMPRESS-179:  TarUtils.formatLongOctalOrBinaryBytes() assumes the field will be 12 bytes long
o COMPRESS-175:  GNU Tar sometimes uses binary encoding for UID and GID
o COMPRESS-171:  ArchiveStreamFactory.createArchiveInputStream would claim
                 short text files were TAR archives.
o COMPRESS-164:  ZipFile didn't work properly for archives using unicode extra
                 fields rather than UTF-8 filenames and the EFS-Flag.
o COMPRESS-169:  For corrupt archives ZipFile would throw a RuntimeException in
                 some cases and an IOException in others.  It will now
                 consistently throw an IOException.

Changes:
o COMPRESS-182:  The tar package can now write archives that use star/GNU/BSD
                 extensions or use the POSIX/PAX variant to store numeric
                 values that don't fit into the traditional header fields.
o COMPRESS-181:  Added a workaround for a Bug some tar implementations that add
                 a NUL byte as first byte in numeric header fields.
o COMPRESS-176:  Added a workaround for a Bug in WinZIP which uses backslashes
                 as path separators in Unicode Extra Fields.
o COMPRESS-131:  ArrayOutOfBounds while decompressing bz2. Added test case - code already seems to have been fixed.
o COMPRESS-146:  BZip2CompressorInputStream now optionally supports reading of
                 concatenated .bz2 files.
o COMPRESS-154:  GZipCompressorInputStream now optionally supports reading of
                 concatenated .gz files.
o COMPRESS-16:  The tar package can now read archives that use star/GNU/BSD
                 extensions for files that are longer than 8 GByte as well as
                 archives that use the POSIX/PAX variant.
o COMPRESS-165:  The tar package can now write archives that use star/GNU/BSD
                 extensions for files that are longer than 8 GByte as well as
                 archives that use the POSIX/PAX variant.
o COMPRESS-166:  The tar package can now use the POSIX/PAX variant for writing
                 entries with names longer than 100 characters.

Release 1.3
-----------

Commons Compress 1.3 is the first version to require Java5 at runtime.

Changes in this version include:

New features:
o Support for the Pack200 format has been added.  Issue: COMPRESS-142.
o Read-only support for the format used by the Unix dump(8) tool
  has been added.  Issue: COMPRESS-132.

Fixed Bugs:
o BZip2CompressorInputStream's getBytesRead method always
  returned 0.
o ZipArchiveInputStream and ZipArchiveOutputStream could leak
  resources on some JDKs.  Issue: COMPRESS-152.
o TarArchiveOutputStream's getBytesWritten method didn't count
  correctly.  Issue: COMPRESS-160.

Changes:
o The ZIP package now supports Zip64 extensions.  Issue: COMPRESS-36.
o The AR package now supports the BSD dialect of storing file
  names longer than 16 chars (both reading and writing).
  Issue: COMPRESS-144.

Release 1.2
-----------

New features:
o COMPRESS-123:  ZipArchiveEntry has a new method getRawName that provides the
        original bytes that made up the name.  This may allow user
        code to detect the encoding.
o COMPRESS-122:  TarArchiveEntry provides access to the flags that determine
        whether it is an archived symbolic link, pipe or other
        "uncommon" file system object.

Fixed Bugs:
o COMPRESS-129:  ZipArchiveInputStream could fail with a "Truncated ZIP" error
        message for entries between 2 GByte and 4 GByte in size.
o COMPRESS-145:  TarArchiveInputStream now detects sparse entries using the
        oldgnu format and properly reports it cannot extract their
        contents.
o COMPRESS-130:  The Javadoc for ZipArchiveInputStream#skip now matches the
        implementation, the code has been made more defensive.
o COMPRESS-140:  ArArchiveInputStream fails if entries contain only blanks for
        userId or groupId. Thanks to Trejkaz.
o COMPRESS-139:  ZipFile may leak resources on some JDKs.
o COMPRESS-125:  BZip2CompressorInputStream throws IOException if
        underlying stream returns available() == 0.
        Removed the check.
o COMPRESS-127:  Calling close() on inputStream returned by
        CompressorStreamFactory.createCompressorInputStream()
        does not close the underlying input stream.
o COMPRESS-119:  TarArchiveOutputStream#finish now writes all buffered
        data to the stream

Changes:
o ZipFile now implements finalize which closes the underlying
        file.
o COMPRESS-117:  Certain tar files not recognised by
        ArchiveStreamFactory.

Release 1.1
-----------

New features:
o COMPRESS-108:  Command-line interface to list archive contents.
       Usage: java -jar commons-compress-n.m.jar archive-name [zip|tar|etc]
o COMPRESS-109:  Tar implementation does not support Pax headers
       Added support for reading pax headers.
       Note: does not support global pax headers
o COMPRESS-103:  ZipArchiveInputStream can optionally extract data that used
        the STORED compression method and a data descriptor.
        Doing so in a stream is not safe in general, so you have to
        explicitly enable the feature.  By default the stream will
        throw an exception if it encounters such an entry.
o COMPRESS-98:  The ZIP classes will throw specialized exceptions if any
        attempt is made to read or write data that uses zip features
        not supported (yet).
o COMPRESS-99:  ZipFile#getEntries returns entries in a predictable order -
        the order they appear inside the central directory.
        A new method getEntriesInPhysicalOrder returns entries in
        order of the entry data, i.e. the order ZipArchiveInputStream
        would see.
o The Archive*Stream and ZipFile classes now have
        can(Read|Write)EntryData methods that can be used to check
        whether a given entry's data can be read/written.
        The method currently returns false for ZIP archives if an
        entry uses an unsupported compression method or encryption.
o COMPRESS-89:  The ZIP classes now detect encrypted entries.
o COMPRESS-97:  Added autodetection of compression format to
        CompressorStreamFactory.
o COMPRESS-95:  Improve ExceptionMessages in ArchiveStreamFactory Thanks to Joerg Bellmann.
o A new constructor of TarArchiveEntry can create entries with
        names that start with slashes - the default is to strip
        leading slashes in order to create relative path names.
o ArchiveEntry now has a getLastModifiedDate method.
o COMPRESS-78:  Add a BZip2Utils class modelled after GZipUtils Thanks to Jukka Zitting.

Fixed Bugs:
o COMPRESS-72:  Move acknowledgements from NOTICE to README
o COMPRESS-113:  TarArchiveEntry.parseTarHeader() includes the trailing space/NUL when parsing the octal size
o COMPRESS-118:  TarUtils.parseName does not properly handle characters outside the range 0-127
o COMPRESS-107:  ArchiveStreamFactory does not recognise tar files created by Ant
o COMPRESS-110:  Support "ustar" prefix field, which is used when file paths are longer
       than 100 characters.
o COMPRESS-100:  ZipArchiveInputStream will throw an exception if it detects an
        entry that uses a data descriptor for a STORED entry since it
        cannot reliably find the end of data for this "compression"
        method.
o COMPRESS-101:  ZipArchiveInputStream should now properly read archives that
        use data descriptors but without the "unofficial" signature.
o COMPRESS-74:  ZipArchiveInputStream failed to update the number of bytes
        read properly.
o ArchiveInputStream has a new method getBytesRead that should
        be preferred over getCount since the later may truncate the
        number of bytes read for big archives.
o COMPRESS-85:  The cpio archives created by CpioArchiveOutputStream couldn't
        be read by many existing native implementations because the
        archives contained multiple entries with the same inode/device
        combinations and weren't padded to a blocksize of 512 bytes.
o COMPRESS-73:  ZipArchiveEntry, ZipFile and ZipArchiveInputStream are now
        more lenient when parsing extra fields.
o COMPRESS-82:  cpio is terribly slow.
        Documented that buffered streams are needed for performance
o Improved exception message if the extra field data in ZIP
        archives cannot be parsed.
o COMPRESS-17:  Tar format unspecified - current support documented.
o COMPRESS-94:  ZipArchiveEntry's equals method was broken for entries created
        with the String-arg constructor.  This lead to broken ZIP
        archives if two different entries had the same hash code. Thanks to Anon Devs.
o COMPRESS-87:  ZipArchiveInputStream could repeatedly return 0 on read() when
        the archive was truncated. Thanks to Antoni Mylka.
o COMPRESS-86:  Tar archive entries holding the file name for names longer
        than 100 characters in GNU longfile mode didn't properly
        specify they'd be using the "oldgnu" extension.
o COMPRESS-83:  Delegate all read and write methods in GZip stream in order to
        speed up operations.
o The ar and cpio streams now properly read and write last
        modified times.
o COMPRESS-81:  TarOutputStream can leave garbage at the end of the archive

Changes:
o COMPRESS-112:  ArArchiveInputStream does not handle GNU extended filename records (//)
o COMPRESS-105:  Document that the name of an ZipArchiveEntry determines whether
       an entry is considered a directory or not.
       If you don't use the constructor with the File argument the entry's
        name must end in a "/" in order for the entry to be known as a directory.
o COMPRESS-79:  Move DOS/Java time conversions into Zip utility class.
o COMPRESS-75:  ZipArchiveInputStream does not show location in file
       where a problem occurred.

