## Licensed to the Apache Software Foundation (ASF) under one
|
## or more contributor license agreements. See the NOTICE file
|
## distributed with this work for additional information
|
## regarding copyright ownership. The ASF licenses this file
|
## to you under the Apache License, Version 2.0 (the
|
## "License"); you may not use this file except in compliance
|
## with the License. You may obtain a copy of the License at
|
##
|
## http://www.apache.org/licenses/LICENSE-2.0
|
##
|
## Unless required by applicable law or agreed to in writing,
|
## software distributed under the License is distributed on an
|
## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
## KIND, either express or implied. See the License for the
|
## specific language governing permissions and limitations
|
## under the License.
|
${project.name} RELEASE NOTES
|
|
$introduction.replaceAll("(?<!\015)\012", "
|
")
|
|
## N.B. the available variables are described here:
|
## http://maven.apache.org/plugins/maven-changes-plugin/examples/using-a-custom-announcement-template.html
|
## Hack to improve layout: replace all pairs of spaces with a single new-line
|
$release.description.replaceAll(" ", "
|
")
|
|
## Fix up indentation for multi-line action descriptions
|
#macro ( indent )
|
#set($action=$action.replaceAll("(?m)^ +"," "))
|
#end
|
#if ($release.getActions().size() == 0)
|
No changes defined in this version.
|
#else
|
#if ($release.getActions('add').size() !=0)
|
New features:
|
#foreach($actionItem in $release.getActions('add'))
|
## Use replaceAll to fix up LF-only line ends on Windows.
|
#set($action=$actionItem.getAction().replaceAll("\n","
|
"))
|
#indent()
|
#if ($actionItem.getIssue())
|
#set($issue=$actionItem.getIssue())
|
#else
|
#set($issue="")
|
#end
|
#if ($actionItem.getDueTo())
|
#set($dueto=$actionItem.getDueTo())
|
#else
|
#set($dueto="")
|
#end
|
o ${action}##
|
#if($!issue != "")
|
|
Issue: $issue. #if($!dueto != "")Thanks to $dueto. #end
|
#else#if($!dueto != "") Thanks to $dueto. #end
|
#end
|
|
#set($issue="")
|
#set($dueto="")
|
#end
|
#end
|
|
#if ($release.getActions('fix').size() !=0)
|
Fixed Bugs:
|
#foreach($actionItem in $release.getActions('fix'))
|
## Use replaceAll to fix up LF-only line ends on Windows.
|
#set($action=$actionItem.getAction().replaceAll("\n","
|
"))
|
#indent()
|
#if ($actionItem.getIssue())
|
#set($issue=$actionItem.getIssue())
|
#else
|
#set($issue="")
|
#end
|
#if ($actionItem.getDueTo())
|
#set($dueto=$actionItem.getDueTo())
|
#else
|
#set($dueto="")
|
#end
|
o ${action}##
|
#if($!issue != "")
|
|
Issue: $issue. #if($!dueto != "")Thanks to $dueto. #end
|
#else#if($!dueto != "") Thanks to $dueto. #end
|
#end
|
|
#set($issue="")
|
#set($dueto="")
|
#end
|
#end
|
|
#if ($release.getActions('update').size() !=0)
|
Changes:
|
#foreach($actionItem in $release.getActions('update'))
|
## Use replaceAll to fix up LF-only line ends on Windows.
|
#set($action=$actionItem.getAction().replaceAll("\n","
|
"))
|
#indent()
|
#if ($actionItem.getIssue())
|
#set($issue=$actionItem.getIssue())
|
#else
|
#set($issue="")
|
#end
|
#if ($actionItem.getDueTo())
|
#set($dueto=$actionItem.getDueTo())
|
#else
|
#set($dueto="")
|
#end
|
o ${action}##
|
#if($!issue != "")
|
|
Issue: $issue. #if($!dueto != "")Thanks to $dueto. #end
|
#else#if($!dueto != "") Thanks to $dueto. #end
|
#end
|
|
#set($issue="")
|
#set($dueto="")
|
#end
|
#end
|
|
#if ($release.getActions('remove').size() !=0)
|
Removed:
|
#foreach($actionItem in $release.getActions('remove'))
|
## Use replaceAll to fix up LF-only line ends on Windows.
|
#set($action=$actionItem.getAction().replaceAll("\n","
|
"))
|
#indent()
|
#if ($actionItem.getIssue())
|
#set($issue=$actionItem.getIssue())
|
#else
|
#set($issue="")
|
#end
|
#if ($actionItem.getDueTo())
|
#set($dueto=$actionItem.getDueTo())
|
#else
|
#set($dueto="")
|
#end
|
o ${action}##
|
#if($!issue != "")
|
|
Issue: $issue. #if($!dueto != "")Thanks to $dueto. #end
|
#else#if($!dueto != "") Thanks to $dueto. #end
|
#end
|
|
#set($issue="")
|
#set($dueto="")
|
#end
|
#end
|
## End of main loop
|
#end
|
#macro ( fixurl $url )
|
$url.replaceAll("proper/commons-","")
|
#end
|
For complete information on ${project.name}, including instructions
|
on how to submit bug reports, patches, or suggestions for improvement,
|
see the ${project.name} website:
|
|
#fixurl ( ${project.url} )
|
|
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.
|