blob: d9ce1e771642fd19bf13d8d35bd0dfcf763a9663 [file] [log] [blame]
Stefan Bodewigbdd4bd62015-01-30 08:14:03 +00001 Apache Commons Compress RELEASE NOTES
Sebastian Bazley48882f12010-04-13 21:02:37 +00002
Stefan Bodewig4a154172013-10-13 04:06:16 +00003Apache Commons Compress software defines an API for working with
4compression and archive formats. These include: bzip2, gzip, pack200,
Stefan Bodewigde633062014-10-09 12:00:48 +00005lzma, xz, Snappy, traditional Unix Compress, DEFLATE and ar, cpio,
6jar, tar, zip, dump, 7z, arj.
7
Stefan Bodewig3623ee72016-06-18 17:25:37 +02008Release 1.12
Stefan Bodewig4c11f122016-06-18 17:17:37 +02009------------
10
11Commons Compress 1.12 is the first version to require Java6 at
12runtime.
13
14Release 1.12 changes the behavior of BZip2CompressorOutputStream's
15finalize method so that it no longer invokes finish. This is going to
16break code that relied on the finalizer to clean up an unfinished
17stream. The code will need to be changed to call finish or close
18itself. Note that a finalizer is not guaranteed to run, so the feature
19was not 100% effective in any case.
20
21New features:
22
23o FramedSnappyCompressorInputStream now supports the dialect of
24 Snappy used by the IWA files contained within the zip archives
25 used in Apple's iWork 13 files.
26 Issue: COMPRESS-352.
27
28Fixed Bugs:
29
30o SevenZFile.read() throws an IllegalStateException for empty entries.
31 Issue: COMPRESS-348.
32o TarArchiveInputStream failed to parse PAX headers that included
33 blank lines.
34 Issue: COMPRESS-355. Thanks to Jeremy Gustie.
35o TarArchiveInputStream failed to parse PAX headers whose tar entry
36 name ended with a slash.
37 Issue: COMPRESS-356. Thanks to Jeremy Gustie.
38
39Changes:
40o Update requirement from Java 5 to 6.
41 Issue: COMPRESS-349.
42o TarArchiveEntry wastefully allocates empty arrays.
43 Issue: COMPRESS-350.
44o Javadoc for BZip2CompressorInputStream(InputStream, boolean) should
45 refer to IOEx, not NPE.
46 Issue: COMPRESS-353.
47o PureJavaCrc32C in the snappy package is now final so it is now safe
48 to call a virtual method inside the constructor.
49 Issue: COMPRESS-354.
50
51o ZipArchiveInputStream and CpioArchiveInputStream could throw
52 exceptions who's messages contained potentially corrupt entry names
53 read from a broken archive. They will now sanitize the names by
54 replacing unprintable characters and restricting the length to 255
55 characters.
56 Issue: COMPRESS-351.
57o BZip2CompressorOutputStream no longer tries to finish the output
58 stream in finalize. This is a breaking change for code that relied
59 on the finalizer.
60 Issue: COMPRESS-357.
61
62
Stefan Bodewigff38bf52016-03-30 15:12:33 +020063Release 1.11
Torsten Curdt68db5fa2016-01-15 15:35:17 +010064------------
65
Stefan Bodewigff38bf52016-03-30 15:12:33 +020066New features:
67o TarArchiveInputStream now supports reading global PAX headers.
68 Issue: COMPRESS-347.
69o The PAX headers for sparse entries written by star are now
70 applied.
71 Issue: COMPRESS-346.
72o GNU sparse files using one of the PAX formats are now
73 detected, but cannot be extracted.
74 Issue: COMPRESS-345.
75o New method SevenZFile.getEntries can be used to list the
76 contents of a 7z archive.
77 Issue: COMPRESS-341.
78o When using Zip64Mode.Always also use ZIP64 extensions inside
79 the central directory.
80 GitHub Pull Request #10 Thanks to Matt Hovey.
81o ZipFile.getRawInputStream() is now part of the public API
82 Issue: COMPRESS-323.
83o Allow byte-for-byte replication of Zip entries.
84 GitHub Pull Request #6. Thanks to Jason van Zyl.
Torsten Curdt68db5fa2016-01-15 15:35:17 +010085o TarArchiveEntry's preserveLeadingSlashes is now a property and used
86 on later calls to setName, too.
87 This behavior is a breaking change.
Stefan Bodewigff38bf52016-03-30 15:12:33 +020088 Issue: COMPRESS-328.
89o Added read-only support for bzip2 compression used inside of
90 ZIP archives.
91 GitHub Pull Request #4. Thanks to Sören Glimm.
92
93Fixed Bugs:
94o ArArchiveInputStream can now read GNU extended names that are
95 terminated with a NUL byte rather than a linefeed.
96 Issue: COMPRESS-344.
97o Native Memory Leak in Sevenz-DeflateDecoder.
98 Issue: COMPRESS-343. Thanks to Rene Preissel.
99o SevenZFile will now only try to drain an entry's content when
100 moving on to the next entry if data is read from the next
101 entry. This should improve performance for applications that
102 try to skip over entries.
103 Issue: COMPRESS-340. Thanks to Dawid Weiss.
104o file names of tar archives using the xstar format are now
105 parsed properly.
106 Issue: COMPRESS-336.
107o checksums of tars that pad the checksum field to the left are
108 now calculated properly.
109 Issue: COMPRESS-335.
110o ArArchiveInputStream failed to read past the first entry when
111 BSD long names have been used.
112 Issue: COMPRESS-334. Thanks to Jeremy Gustie.
113o Added buffering for random access which speeds up 7Z support.
114 Issue: COMPRESS-333. Thanks to Dawid Weiss.
115o The checksum validation of TararchiveEntry is now as strict as
116 the validation of GNU tar, which eliminates a few cases of
117 false positives of ArchiveStreamFactory.
118 This behavior is a breaking change since the check has become
119 more strict but any archive that fails the checksum test now
120 would also fail it when extracted with other tools and must be
121 considered an invalid archive.
122 Issue: COMPRESS-331.
123o SnappyCompressorInputStream and
124 FramedSnappyCompressorInputStream returned 0 at the end of the
125 stream under certain circumstances.
126 Issue: COMPRESS-332.
127o Adjusted unit test to updates in Java8 and later that change
128 the logic of ZipEntry#getTime.
129 Issue: COMPRESS-326.
130o TarArchiveOutputStream will now recognize GNU long name and
131 link entries even if the special entry has a different name
132 than GNU tar uses itself. This seems to be the case for
133 archives created by star.
134 Issue: COMPRESS-324.
135o ArrayIndexOutOfBoundsException when InfoZIP type 7875 extra
136 fields are read from the central directory.
137 Issue: COMPRESS-321.
Torsten Curdt68db5fa2016-01-15 15:35:17 +0100138
Stefan Bodewigec075142015-01-26 05:12:09 +0000139Release 1.10
140------------
141
142Release 1.10 moves the former
143org.apache.commons.compress.compressors.z._internal_ package which
144breaks backwards compatibility for code which used the old package.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000145
146This also changes the superclass of ZCompressorInputStream which makes
147this class binary incompatible with the one of Compress 1.9. Code
148that extends ZCompressorInputStream will need to be recompiled in
149order to work with Compress 1.10.
Stefan Bodewigc100d2e2015-01-30 08:24:54 +0000150
Stefan Bodewigec075142015-01-26 05:12:09 +0000151New features:
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000152o CompressorStreamFactory can now auto-detect DEFLATE streams
153 with ZLIB header.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100154 Issue: COMPRESS-316. Thanks to Nick Burch.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000155o CompressorStreamFactory can now auto-detect LZMA streams.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100156 Issue: COMPRESS-313.
Stefan Bodewigec075142015-01-26 05:12:09 +0000157o Added support for parallel compression. This low-level API allows
158 a client to build a zip/jar file by using the class
159 org.apache.commons.compress.archivers.zip.ParallelScatterZipCreator.
160
161 Zip documentation updated with further notes about parallel features.
162
163 Please note that some aspects of jar creation need to be
164 handled by client code and is not part of commons-compress for this
165 release.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100166 Issue: COMPRESS-296. Thanks to Kristian Rosenvold.
Stefan Bodewigec075142015-01-26 05:12:09 +0000167o Cut overall object instantiation in half by changing file
168 header generation algorithm, for a 10-15 percent performance
169 improvement.
170
171 Also extracted two private methods createLocalFileHeader
172 and createCentralFileHeader in ZipArchiveOutputStream.
173 These may have some interesting additional usages in the
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100174 near future. Thanks to Kristian Rosenvold.
Stefan Bodewigec075142015-01-26 05:12:09 +0000175o New methods in ZipArchiveOutputStream and ZipFile allows
176 entries to be copied from one archive to another without
177 having to re-compress them.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100178 Issue: COMPRESS-295. Thanks to Kristian Rosenvold.
Stefan Bodewigec075142015-01-26 05:12:09 +0000179
180Fixed Bugs:
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000181o TarArchiveInputStream can now read entries with group or
182 user ids > 0x80000000.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100183 Issue: COMPRESS-314.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000184o TarArchiveOutputStream can now write entries with group or
185 user ids > 0x80000000.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100186 Issue: COMPRESS-315.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000187o TarArchiveEntry's constructor with a File and a String arg
188 didn't normalize the name.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100189 Issue: COMPRESS-312.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000190o ZipEncodingHelper no longer reads system properties directly
191 to determine the default charset.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100192 Issue: COMPRESS-308.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000193o BZip2CompressorInputStream#read would return -1 when asked to
194 read 0 bytes.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100195 Issue: COMPRESS-309.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000196o ArchiveStreamFactory fails to pass on the encoding when creating
197 some streams.
198 * ArjArchiveInputStream
199 * CpioArchiveInputStream
200 * DumpArchiveInputStream
201 * JarArchiveInputStream
202 * TarArchiveInputStream
203 * JarArchiveOutputStream
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100204 Issue: COMPRESS-306.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000205o Restore immutability/thread-safety to ArchiveStreamFactory.
206 The class is now immutable provided that the method setEntryEncoding
207 is not used. The class is thread-safe.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100208 Issue: COMPRESS-302.
Stefan Bodewigb1e2a022015-08-18 17:49:15 +0000209o Restore immutability/thread-safety to CompressorStreamFactory.
210 The class is now immutable provided that the method
211 setDecompressConcatenated is not used. The class is thread-safe.
212 Issue: COMPRESS-303.
Stefan Bodewigec075142015-01-26 05:12:09 +0000213o ZipFile logs a warning in its finalizer when its constructor
214 has thrown an exception reading the file - for example if the
215 file doesn't exist.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100216 Issue: COMPRESS-297.
Stefan Bodewigec075142015-01-26 05:12:09 +0000217o Improved error message when tar encounters a groupId that is
218 too big to write without using the STAR or POSIX format.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100219 Issue: COMPRESS-290. Thanks to Kristian Rosenvold.
Stefan Bodewigec075142015-01-26 05:12:09 +0000220o SevenZFile now throws the specific PasswordRequiredException
221 when it encounters an encrypted stream but no password has
222 been specified.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100223 Issue: COMPRESS-298.
Stefan Bodewigec075142015-01-26 05:12:09 +0000224
225Changes:
226o Moved the package
227 org.apache.commons.compress.compressors.z._internal_ to
228 org.apache.commons.compress.compressors.lzw and made it part
229 of the API that is officially supported. This will break
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100230 existing code that uses the old package. Thanks to Damjan Jovanovic.
Stefan Bodewigec075142015-01-26 05:12:09 +0000231
232For complete information on Apache Commons Compress, including instructions
233on how to submit bug reports, patches, or suggestions for improvement,
234see the Apache Commons Compress website:
235
236http://commons.apache.org/compress/
237
238Old Release Notes
239=================
240
Stefan Bodewigde633062014-10-09 12:00:48 +0000241Release 1.9
242-----------
243
244New features:
245o Added support for DEFLATE streams without any gzip framing.
246 Issue: COMPRESS-263.
247 Thanks to Matthias Stevens.
248
249Fixed Bugs:
250o When reading 7z files unknown file properties and properties of type
251 kDummy are now ignored.
252 Issue: COMPRESS-287.
253o Expanding 7z archives using LZMA compression could cause an
254 EOFException.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100255 Issue: COMPRESS-286.
Stefan Bodewigde633062014-10-09 12:00:48 +0000256o Long-Name and -link or PAX-header entries in TAR archives always had
257 the current time as last modfication time, creating archives that
258 are different at the byte level each time an archive was built.
259 Issue: COMPRESS-289.
260 Thanks to Bob Robertson.
261
262Changes:
263o Checking for XZ for Java may be expensive. The result will now be
264 cached outside of an OSGi environment. You can use the new
265 XZUtils#setCacheXZAvailability to overrride this default behavior.
266 Issue: COMPRESS-285.
267
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000268Release 1.8.1
Stefan Bodewigde633062014-10-09 12:00:48 +0000269-------------
Sebastian Bazley48882f12010-04-13 21:02:37 +0000270
Stefan Bodewig48d74702013-03-10 17:10:57 +0000271New features:
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000272o COMPRESS-272: CompressorStreamFactory can now auto-detect Unix compress
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100273 (".Z") streams.
Stefan Bodewig48d74702013-03-10 17:10:57 +0000274
Sebastian Bazley48882f12010-04-13 21:02:37 +0000275Fixed Bugs:
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000276o COMPRESS-270: The snappy, ar and tar inputstreams might fail to read from a
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100277 non-buffered stream in certain cases.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000278o COMPRESS-277: IOUtils#skip might skip fewer bytes than requested even though
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100279 more could be read from the stream.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000280o COMPRESS-276: ArchiveStreams now validate there is a current entry before
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100281 reading or writing entry data.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000282o ArjArchiveInputStream#canReadEntryData tested the current
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100283 entry of the stream rather than its argument.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000284o COMPRESS-274: ChangeSet#delete and deleteDir now properly deal with unnamed
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100285 entries.
286o COMPRESS-273: Added a few null checks to improve robustness.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000287o COMPRESS-278: TarArchiveInputStream failed to read archives with empty
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100288 gid/uid fields.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000289o COMPRESS-279: TarArchiveInputStream now again throws an exception when it
290 encounters a truncated archive while reading from the last
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100291 entry.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000292o COMPRESS-280: Adapted TarArchiveInputStream#skip to the modified
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100293 IOUtils#skip method. Thanks to BELUGA BEHR.
Stefan Bodewig48d74702013-03-10 17:10:57 +0000294
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000295Changes:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100296o The dependency on org.tukaani:xz is now marked as optional.
Stefan Bodewigec5eebf2014-05-09 18:28:42 +0000297
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000298Release 1.8
299-----------
300
301New features:
302o GzipCompressorInputStream now provides access to the same
303 metadata that can be provided via GzipParameters when writing
304 a gzip stream.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100305 Issue: COMPRESS-260.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000306o SevenZOutputFile now supports chaining multiple
307 compression/encryption/filter methods and passing options to
308 the methods.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100309 Issue: COMPRESS-266.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000310o The (compression) method(s) can now be specified per entry in
311 SevenZOutputFile.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100312 Issue: COMPRESS-261.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000313o SevenZArchiveEntry "knows" which method(s) have been used to
314 write it to the archive.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100315 Issue: COMPRESS-258.
316o The 7z package now supports the delta filter as method.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000317o The 7z package now supports BCJ filters for several platforms.
318 You will need a version >= 1.5 of XZ for Java to read archives
319 using BCJ, though.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100320 Issue: COMPRESS-257.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000321
322Fixed Bugs:
323o BZip2CompressorInputStream read fewer bytes than possible from
324 a truncated stream.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100325 Issue: COMPRESS-253.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000326o SevenZFile failed claiming the dictionary was too large when
327 archives used LZMA compression for headers and content and
328 certain non-default dictionary sizes.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100329 Issue: COMPRESS-253.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000330o CompressorStreamFactory.createCompressorInputStream with
331 explicit compression did not honor decompressConcatenated
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100332 Issue: COMPRESS-259.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000333o TarArchiveInputStream will now read archives created by tar
334 implementations that encode big numbers by not adding a
335 trailing NUL.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100336 Issue: COMPRESS-262.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000337o ZipArchiveInputStream would return NUL bytes for the first 512
338 bytes of a STORED entry if it was the very first entry of the
339 archive.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100340 Issue: COMPRESS-264.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000341o When writing PAX/POSIX headers for TAR entries with
342 backslashes or certain non-ASCII characters in their name
343 TarArchiveOutputStream could fail.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100344 Issue: COMPRESS-265.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000345o ArchiveStreamFactory now throws a StreamingNotSupported - a
346 new subclass of ArchiveException - if it is asked to read from
347 or write to a stream and Commons Compress doesn't support
348 streaming for the format. This currently only applies to the
349 7z format.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100350 Issue: COMPRESS-267.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000351
352Release 1.7
353-----------
354
355New features:
356o Read-Only support for Snappy compression.
357 Issue: COMPRESS-147. Thanks to BELUGA BEHR.
358o Read-Only support for .Z compressed files.
359 Issue: COMPRESS-243. Thanks to Damjan Jovanovic.
360o ZipFile and ZipArchiveInputStream now support reading entries
361 compressed using the SHRINKING method. Thanks to Damjan Jovanovic.
362o GzipCompressorOutputStream now supports setting the compression
363 level and the header metadata (filename, comment, modification time,
364 operating system and extra flags)
365 Issue: COMPRESS-250. Thanks to Emmanuel Bourg.
366o ZipFile and ZipArchiveInputStream now support reading entries
367 compressed using the IMPLODE method.
368 Issue: COMPRESS-115. Thanks to Emmanuel Bourg.
369o ZipFile and the 7z file classes now implement Closeable and can be
370 used in try-with-resources constructs.
371
372Fixed Bugs:
373o SevenZOutputFile#closeArchiveEntry throws an exception when using
374 LZMA2 compression on Java8. Issue: COMPRESS-241.
375o 7z reading of big 64bit values could be wrong.
376 Issue: COMPRESS-244. Thanks to Nico Kruber.
377o TarArchiveInputStream could fail to read an archive completely.
378 Issue: COMPRESS-245.
379o The time-setters in X5455_ExtendedTimestamp now set the
380 corresponding flags explicitly - i.e. they set the bit if the valus
381 is not-null and reset it otherwise. This may cause
382 incompatibilities if you use setFlags to unset a bit and later set
383 the time to a non-null value - the flag will now be set.
384 Issue: COMPRESS-242.
385o SevenZOutputFile would create invalid archives if more than six
386 empty files or directories were included. Issue: COMPRESS-252.
387
388Release 1.6
389-----------
390
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100391Version 1.6 introduces changes to the internal API of the tar package that
392break backwards compatibility in the following rare cases. This version
393removes the package private TarBuffer class along with the protected "buffer"
394members in TarArchiveInputStream and TarArchiveOutputStream. This change will
395only affect you if you have created a subclass of one of the stream classes
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000396and accessed the buffer member or directly used the TarBuffer class.
397
398Changes in this version include:
399
400New features:
401o Added support for 7z archives. Most compression algorithms
402 can be read and written, LZMA and encryption are only
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100403 supported when reading. Issue: COMPRESS-54. Thanks to Damjan Jovanovic.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000404o Added read-only support for ARJ archives that don't use
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100405 compression. Issue: COMPRESS-226. Thanks to Damjan Jovanovic.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000406o DumpArchiveInputStream now supports an encoding parameter that
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100407 can be used to specify the encoding of file names.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000408o The CPIO streams now support an encoding parameter that can be
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100409 used to specify the encoding of file names.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000410o Read-only support for LZMA standalone compression has been added.
411 Issue: COMPRESS-111.
412
413Fixed Bugs:
414o TarBuffer.tryToConsumeSecondEOFRecord could throw a
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100415 NullPointerException Issue: COMPRESS-223. Thanks to Jeremy Gustie.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000416o Parsing of zip64 extra fields has become more lenient in order
417 to be able to read archives created by DotNetZip and maybe
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100418 other archivers as well. Issue: COMPRESS-228.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000419o TAR will now properly read the names of symbolic links with
420 long names that use the GNU variant to specify the long file
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100421 name. Issue: COMPRESS-229. Thanks to Christoph Gysin.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000422o ZipFile#getInputStream could return null if the archive
423 contained duplicate entries.
424 The class now also provides two new methods to obtain all
425 entries of a given name rather than just the first one.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100426 Issue: COMPRESS-227.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000427o CpioArchiveInputStream failed to read archives created by
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100428 Redline RPM. Issue: COMPRESS-236. Thanks to Andrew Duffy.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000429o TarArchiveOutputStream now properly handles link names that
430 are too long to fit into a traditional TAR header. Issue:
431 COMPRESS-237. Thanks to Emmanuel Bourg.
432o The auto-detecting create*InputStream methods of Archive and
433 CompressorStreamFactory could fail to detect the format of
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100434 blocking input streams. Issue: COMPRESS-239.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000435
436Changes:
437o Readabilty patch to TarArchiveInputStream. Issue:
438 COMPRESS-232. Thanks to BELUGA BEHR.
439o Performance improvements to TarArchiveInputStream, in
440 particular to the skip method. Issue: COMPRESS-234. Thanks to
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100441 BELUGA BEHR.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000442
443Release 1.5
444-----------
445
446New features:
447
448o CompressorStreamFactory has an option to create decompressing
449 streams that decompress the full input for formats that support
450 multiple concatenated streams.
451 Issue: COMPRESS-220.
452
453Fixed Bugs:
454
455o Typo in CompressorStreamFactory Javadoc
456 Issue: COMPRESS-218.
457 Thanks to Gili.
458o ArchiveStreamFactory's tar stream detection created false positives
459 for AIFF files.
460 Issue: COMPRESS-191.
461 Thanks to Jukka Zitting.
462o XZ for Java didn't provide an OSGi bundle. Compress' dependency on
463 it has now been marked optional so Compress itself can still be used
464 in an OSGi context.
465 Issue: COMPRESS-199.
466 Thanks to Jukka Zitting.
467o When specifying the encoding explicitly TarArchiveOutputStream would
468 write unreadable names in GNU mode or even cause errors in POSIX
469 mode for file names longer than 66 characters.
470 Issue: COMPRESS-200.
471 Thanks to Christian Schlichtherle.
472o Writing TAR PAX headers failed if the generated entry name ended
473 with a "/".
474 Issue: COMPRESS-203.
475o ZipArchiveInputStream sometimes failed to provide input to the
476 Inflater when it needed it, leading to reads returning 0.
477 Issue: COMPRESS-189.
478 Thanks to Daniel Lowe.
479o TarArchiveInputStream ignored the encoding for GNU long name
480 entries.
481 Issue: COMPRESS-212.
482o TarArchiveInputStream could leave the second EOF record inside the
483 stream it had just finished reading.
484 Issue: COMPRESS-206.
485 Thanks to Peter De Maeyer.
486o DumpArchiveInputStream no longer implicitly closes the original
487 input stream when it reaches the end of the archive.
488o ZipArchiveInputStream now consumes the remainder of the archive when
489 getNextZipEntry returns null.
490o Unit tests could fail if the source tree was checked out to a
491 directory tree containign spaces.
492 Issue: COMPRESS-205.
493 Thanks to Daniel Lowe.
494o Fixed a potential ArrayIndexOutOfBoundsException when reading STORED
495 entries from ZipArchiveInputStream.
496 Issue: COMPRESS-219.
497o CompressorStreamFactory can now be used without XZ for Java being
498 available.
499 Issue: COMPRESS-221.
500
501Changes:
502
503o Improved exception message if a zip archive cannot be read because
504 of an unsupported compression method.
505 Issue: COMPRESS-188.
506 Thanks to Harald Kuhn.
507o ArchiveStreamFactory has a setting for file name encoding that sets
508 up encoding for ZIP and TAR streams.
509 Issue: COMPRESS-192.
510 Thanks to Jukka Zitting.
511o TarArchiveEntry now has a method to verify its checksum.
512 Issue: COMPRESS-191.
513 Thanks to Jukka Zitting.
514o Split/spanned ZIP archives are now properly detected by
515 ArchiveStreamFactory but will cause an
516 UnsupportedZipFeatureException when read.
517o ZipArchiveInputStream now reads archives that start with a "PK00"
518 signature. Archives with this signatures are created when the
519 archiver was willing to split the archive but in the end only needed
520 a single segment - so didn't split anything.
521 Issue: COMPRESS-208.
522o TarArchiveEntry has a new constructor that allows setting linkFlag
523 and preserveLeadingSlashes at the same time.
524 Issue: COMPRESS-201.
525o ChangeSetPerformer has a new perform overload that uses a ZipFile
526 instance as input.
527 Issue: COMPRESS-159.
528o Garbage collection pressure has been reduced by reusing temporary
529 byte arrays in classes.
530 Issue: COMPRESS-172.
531 Thanks to Thomas Mair.
532o Can now handle zip extra field 0x5455 - Extended Timestamp.
533 Issue: COMPRESS-210.
534 Thanks to Julius Davies.
535o handle zip extra field 0x7875 - Info Zip New Unix Extra Field.
536 Issue: COMPRESS-211.
537 Thanks to Julius Davies.
538o ZipShort, ZipLong, ZipEightByteInteger should implement Serializable
539 Issue: COMPRESS-213.
540 Thanks to Julius Davies.
541o better support for unix symlinks in ZipFile entries.
542 Issue: COMPRESS-214.
543 Thanks to Julius Davies.
544o ZipFile's initialization has been improved for non-Zip64 archives.
545 Issue: COMPRESS-215.
546 Thanks to Robin Power.
547o Updated XZ for Java dependency to 1.2 as this version provides
548 proper OSGi manifest attributes.
549
550Release 1.4.1
551-------------
552
553This is a security bugfix release, see
554http://commons.apache.org/proper/commons-compress/security.html#Fixed_in_Apache_Commons_Compress_1.4.1
555
556Fixed Bugs:
557
558o Ported libbzip2's fallback sort algorithm to
559 BZip2CompressorOutputStream to speed up compression in certain
560 edge cases.
561
562Release 1.4
563-----------
564
565New features:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100566o COMPRESS-156: Support for the XZ format has been added.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000567
568Fixed Bugs:
569o COMPRESS-183: The tar package now allows the encoding of file names to be
570 specified and can optionally use PAX extension headers to
571 write non-ASCII file names.
572 The stream classes now write (or expect to read) archives that
573 use the platform's native encoding for file names. Apache
574 Commons Compress 1.3 used to strip everything but the lower
575 eight bits of each character which effectively only worked for
576 ASCII and ISO-8859-1 file names.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100577 This new default behavior is a breaking change.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000578o COMPRESS-184: TarArchiveInputStream failed to parse PAX headers that
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100579 contained non-ASCII characters.
580o COMPRESS-178: TarArchiveInputStream throws IllegalArgumentException instead of IOException
581o COMPRESS-179: TarUtils.formatLongOctalOrBinaryBytes() assumes the field will be 12 bytes long
582o COMPRESS-175: GNU Tar sometimes uses binary encoding for UID and GID
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000583o COMPRESS-171: ArchiveStreamFactory.createArchiveInputStream would claim
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100584 short text files were TAR archives.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000585o COMPRESS-164: ZipFile didn't work properly for archives using unicode extra
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100586 fields rather than UTF-8 filenames and the EFS-Flag.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000587o COMPRESS-169: For corrupt archives ZipFile would throw a RuntimeException in
588 some cases and an IOException in others. It will now
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100589 consistently throw an IOException.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000590
591Changes:
592o COMPRESS-182: The tar package can now write archives that use star/GNU/BSD
593 extensions or use the POSIX/PAX variant to store numeric
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100594 values that don't fit into the traditional header fields.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000595o COMPRESS-181: Added a workaround for a Bug some tar implementations that add
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100596 a NUL byte as first byte in numeric header fields.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000597o COMPRESS-176: Added a workaround for a Bug in WinZIP which uses backslashes
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100598 as path separators in Unicode Extra Fields.
599o COMPRESS-131: ArrayOutOfBounds while decompressing bz2. Added test case - code already seems to have been fixed.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000600o COMPRESS-146: BZip2CompressorInputStream now optionally supports reading of
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100601 concatenated .bz2 files.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000602o COMPRESS-154: GZipCompressorInputStream now optionally supports reading of
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100603 concatenated .gz files.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000604o COMPRESS-16: The tar package can now read archives that use star/GNU/BSD
605 extensions for files that are longer than 8 GByte as well as
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100606 archives that use the POSIX/PAX variant.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000607o COMPRESS-165: The tar package can now write archives that use star/GNU/BSD
608 extensions for files that are longer than 8 GByte as well as
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100609 archives that use the POSIX/PAX variant.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000610o COMPRESS-166: The tar package can now use the POSIX/PAX variant for writing
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100611 entries with names longer than 100 characters.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000612
613Release 1.3
614-----------
615
616Commons Compress 1.3 is the first version to require Java5 at runtime.
617
618Changes in this version include:
619
620New features:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100621o Support for the Pack200 format has been added. Issue: COMPRESS-142.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000622o Read-only support for the format used by the Unix dump(8) tool
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100623 has been added. Issue: COMPRESS-132.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000624
625Fixed Bugs:
626o BZip2CompressorInputStream's getBytesRead method always
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100627 returned 0.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000628o ZipArchiveInputStream and ZipArchiveOutputStream could leak
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100629 resources on some JDKs. Issue: COMPRESS-152.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000630o TarArchiveOutputStream's getBytesWritten method didn't count
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100631 correctly. Issue: COMPRESS-160.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000632
633Changes:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100634o The ZIP package now supports Zip64 extensions. Issue: COMPRESS-36.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000635o The AR package now supports the BSD dialect of storing file
636 names longer than 16 chars (both reading and writing).
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100637 Issue: COMPRESS-144.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000638
639Release 1.2
640-----------
641
642New features:
643o COMPRESS-123: ZipArchiveEntry has a new method getRawName that provides the
644 original bytes that made up the name. This may allow user
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100645 code to detect the encoding.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000646o COMPRESS-122: TarArchiveEntry provides access to the flags that determine
647 whether it is an archived symbolic link, pipe or other
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100648 "uncommon" file system object.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000649
650Fixed Bugs:
651o COMPRESS-129: ZipArchiveInputStream could fail with a "Truncated ZIP" error
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100652 message for entries between 2 GByte and 4 GByte in size.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000653o COMPRESS-145: TarArchiveInputStream now detects sparse entries using the
654 oldgnu format and properly reports it cannot extract their
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100655 contents.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000656o COMPRESS-130: The Javadoc for ZipArchiveInputStream#skip now matches the
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100657 implementation, the code has been made more defensive.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000658o COMPRESS-140: ArArchiveInputStream fails if entries contain only blanks for
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100659 userId or groupId. Thanks to Trejkaz.
660o COMPRESS-139: ZipFile may leak resources on some JDKs.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000661o COMPRESS-125: BZip2CompressorInputStream throws IOException if
662 underlying stream returns available() == 0.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100663 Removed the check.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000664o COMPRESS-127: Calling close() on inputStream returned by
665 CompressorStreamFactory.createCompressorInputStream()
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100666 does not close the underlying input stream.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000667o COMPRESS-119: TarArchiveOutputStream#finish now writes all buffered
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100668 data to the stream
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000669
670Changes:
671o ZipFile now implements finalize which closes the underlying
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100672 file.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000673o COMPRESS-117: Certain tar files not recognised by
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100674 ArchiveStreamFactory.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000675
676Release 1.1
677-----------
678
679New features:
680o COMPRESS-108: Command-line interface to list archive contents.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100681 Usage: java -jar commons-compress-n.m.jar archive-name [zip|tar|etc]
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000682o COMPRESS-109: Tar implementation does not support Pax headers
683 Added support for reading pax headers.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100684 Note: does not support global pax headers
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000685o COMPRESS-103: ZipArchiveInputStream can optionally extract data that used
686 the STORED compression method and a data descriptor.
687 Doing so in a stream is not safe in general, so you have to
688 explicitly enable the feature. By default the stream will
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100689 throw an exception if it encounters such an entry.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000690o COMPRESS-98: The ZIP classes will throw specialized exceptions if any
691 attempt is made to read or write data that uses zip features
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100692 not supported (yet).
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000693o COMPRESS-99: ZipFile#getEntries returns entries in a predictable order -
694 the order they appear inside the central directory.
695 A new method getEntriesInPhysicalOrder returns entries in
696 order of the entry data, i.e. the order ZipArchiveInputStream
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100697 would see.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000698o The Archive*Stream and ZipFile classes now have
699 can(Read|Write)EntryData methods that can be used to check
700 whether a given entry's data can be read/written.
701 The method currently returns false for ZIP archives if an
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100702 entry uses an unsupported compression method or encryption.
703o COMPRESS-89: The ZIP classes now detect encrypted entries.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000704o COMPRESS-97: Added autodetection of compression format to
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100705 CompressorStreamFactory.
706o COMPRESS-95: Improve ExceptionMessages in ArchiveStreamFactory Thanks to Joerg Bellmann.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000707o A new constructor of TarArchiveEntry can create entries with
708 names that start with slashes - the default is to strip
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100709 leading slashes in order to create relative path names.
710o ArchiveEntry now has a getLastModifiedDate method.
711o COMPRESS-78: Add a BZip2Utils class modelled after GZipUtils Thanks to Jukka Zitting.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000712
713Fixed Bugs:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100714o COMPRESS-72: Move acknowledgements from NOTICE to README
715o COMPRESS-113: TarArchiveEntry.parseTarHeader() includes the trailing space/NUL when parsing the octal size
716o COMPRESS-118: TarUtils.parseName does not properly handle characters outside the range 0-127
717o COMPRESS-107: ArchiveStreamFactory does not recognise tar files created by Ant
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000718o COMPRESS-110: Support "ustar" prefix field, which is used when file paths are longer
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100719 than 100 characters.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000720o COMPRESS-100: ZipArchiveInputStream will throw an exception if it detects an
721 entry that uses a data descriptor for a STORED entry since it
722 cannot reliably find the end of data for this "compression"
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100723 method.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000724o COMPRESS-101: ZipArchiveInputStream should now properly read archives that
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100725 use data descriptors but without the "unofficial" signature.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000726o COMPRESS-74: ZipArchiveInputStream failed to update the number of bytes
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100727 read properly.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000728o ArchiveInputStream has a new method getBytesRead that should
729 be preferred over getCount since the later may truncate the
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100730 number of bytes read for big archives.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000731o COMPRESS-85: The cpio archives created by CpioArchiveOutputStream couldn't
732 be read by many existing native implementations because the
733 archives contained multiple entries with the same inode/device
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100734 combinations and weren't padded to a blocksize of 512 bytes.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000735o COMPRESS-73: ZipArchiveEntry, ZipFile and ZipArchiveInputStream are now
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100736 more lenient when parsing extra fields.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000737o COMPRESS-82: cpio is terribly slow.
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100738 Documented that buffered streams are needed for performance
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000739o Improved exception message if the extra field data in ZIP
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100740 archives cannot be parsed.
741o COMPRESS-17: Tar format unspecified - current support documented.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000742o COMPRESS-94: ZipArchiveEntry's equals method was broken for entries created
743 with the String-arg constructor. This lead to broken ZIP
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100744 archives if two different entries had the same hash code. Thanks to Anon Devs.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000745o COMPRESS-87: ZipArchiveInputStream could repeatedly return 0 on read() when
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100746 the archive was truncated. Thanks to Antoni Mylka.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000747o COMPRESS-86: Tar archive entries holding the file name for names longer
748 than 100 characters in GNU longfile mode didn't properly
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100749 specify they'd be using the "oldgnu" extension.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000750o COMPRESS-83: Delegate all read and write methods in GZip stream in order to
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100751 speed up operations.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000752o The ar and cpio streams now properly read and write last
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100753 modified times.
754o COMPRESS-81: TarOutputStream can leave garbage at the end of the archive
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000755
756Changes:
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100757o COMPRESS-112: ArArchiveInputStream does not handle GNU extended filename records (//)
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000758o COMPRESS-105: Document that the name of an ZipArchiveEntry determines whether
759 an entry is considered a directory or not.
760 If you don't use the constructor with the File argument the entry's
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100761 name must end in a "/" in order for the entry to be known as a directory.
762o COMPRESS-79: Move DOS/Java time conversions into Zip utility class.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000763o COMPRESS-75: ZipArchiveInputStream does not show location in file
Torsten Curdtce9e0ce2016-01-15 15:31:59 +0100764 where a problem occurred.
Stefan Bodewig0b71b472014-10-05 13:36:58 +0000765