| |
| Apache Commons Compress |
| Version 1.26.1 |
| Release Notes |
| |
| INTRODUCTION |
| ------------ |
| |
| Apache Commons Compress 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. |
| |
| Minor feature and maintenance release. |
| |
| Changes in this version |
| ----------------------- |
| |
| Changes in this version include the following. |
| |
| |
| Fixed Bugs |
| ---------- |
| |
| * COMPRESS-659: TarArchiveOutputStream should use Commons IO Charsets instead of Commons Codec Charsets. Thanks to David Handermann, Gary Gregory. |
| * COMPRESS-660: Add org.apache.commons.codec to OSGi imports #482. Thanks to 660, Gary Gregory. |
| * COMPRESS-664: Return null value from getNextEntry() for empty file #486. Thanks to Radek Kraus. |
| * COMPRESS-664: Remove unused variables in tests #487. Thanks to Elliotte Rusty Harold. |
| * COMPRESS-666: Multithreaded access to Tar archive throws java.util.zip.ZipException: Corrupt GZIP trailer. Thanks to Cosmin Carabet, Gary Gregory. |
| * COMPRESS-644: ArchiveStreamFactory.detect(InputStream) returns TAR for ICO file #386. Thanks to Tim Allison, Gary Gregory. |
| * COMPRESS-661: ArchiveInputStream markSupported should always return false. Thanks to Alexander Veit, Tilman Hausherr, Gary Gregory. |
| |
| |
| Removed |
| ------- |
| |
| * COMPRESS-662: Remove out of date jar and scripts #483. Thanks to Christoph Loy, Gary Gregory. |
| Resources |
| --------- |
| |
| Historical list of changes: https://commons.apache.org/proper/commons-compress/changes-report.html |
| |
| 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/proper/commons-compress/ |
| |
| Download page: https://commons.apache.org/proper/commons-compress/download_io.cgi |
| |
| Have fun! |
| -Apache Commons Team |
| |
| ----------------------------------------------------------------------------- |
| |
| Apache Commons Compress |
| Version 1.26.0 |
| Release Notes |
| |
| INTRODUCTION |
| ------------ |
| |
| Apache Commons Compress 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. |
| |
| Minor feature and maintenance release. |
| |
| Changes in this version include: |
| |
| New Features |
| ------------ |
| * Add and use ZipFile.builder(), ZipFile.Builder, and deprecate constructors. Thanks to Gary Gregory. |
| * Add and use SevenZFile.builder(), SevenZFile.Builder, and deprecate constructors. Thanks to Gary Gregory. |
| * Add and use ArchiveInputStream.getCharset(). Thanks to Gary Gregory. |
| * Add and use ArchiveEntry.resolveIn(Path). Thanks to Gary Gregory. |
| * Add Maven property project.build.outputTimestamp for build reproducibility. Thanks to Gary Gregory. |
| |
| Fixed Bugs |
| --------- |
| |
| * COMPRESS-632: Check for invalid PAX values in TarArchiveEntry #438. Thanks to Yakov Shafranovich, Gary Gregory. |
| * COMPRESS-632: Fix for zero size headers in ArjInputStream #439. Thanks to Yakov Shafranovich, Gary Gregory. |
| * COMPRESS-632: Fixes and tests for ArInputStream #440. Thanks to Yakov Shafranovich. |
| * COMPRESS-632: Fixes for dump file parsing #442. Thanks to Yakov Shafranovich, Gary Gregory. |
| * COMPRESS-632: Improve CPIO exception detection and handling #441. Thanks to Yakov Shafranovich, Gary Gregory. |
| * Deprecate SkipShieldingInputStream without replacement (no longer used). Thanks to Gary Gregory. |
| * Reuse commons-codec, don't duplicate class PureJavaCrc32C (removed package-private class). Thanks to Gary Gregory. |
| * Reuse commons-codec, don't duplicate class XXHash32 (deprecated class). Thanks to Gary Gregory. |
| * Reuse commons-io, don't duplicate class Charsets (deprecated class). Thanks to Gary Gregory. |
| * Reuse commons-io, don't duplicate class IOUtils (deprecated methods). Thanks to Gary Gregory. |
| * Reuse commons-io, don't duplicate class BoundedInputStream (deprecated class). Thanks to Gary Gregory. |
| * Reuse commons-io, don't duplicate class FileTimes (deprecated TimeUtils methods). Thanks to Gary Gregory. |
| * Reuse Arrays.equals(byte[], byte[]) and deprecate ArchiveUtils.isEqual(byte[], byte[]). Thanks to Gary Gregory. |
| * Add a null-check for the class loader of OsgiUtils #451. Thanks to alumi, Gary Gregory. |
| * Add a null-check in Pack200.newInstance(String, String). Thanks to alumi, Gary Gregory. |
| * Deprecate ChecksumCalculatingInputStream in favor of java.util.zip.CheckedInputStream. Thanks to Gary Gregory. |
| * Deprecate CRC32VerifyingInputStream.CRC32VerifyingInputStream(InputStream, long, int). Thanks to Gary Gregory. |
| * COMPRESS-655: FramedSnappyCompressorOutputStream produces incorrect output when writing a large buffer #457. Thanks to cpreisler, Gary Gregory. |
| * COMPRESS-657: Fix TAR directory entries being misinterpreted as files #460. Thanks to Sebastian Schuberth, Gary Gregory. |
| * Deprecate unused method FileNameUtils.getBaseName(String). Thanks to Gary Gregory. |
| * Deprecate unused method FileNameUtils.getExtension(String). Thanks to Gary Gregory. |
| * ArchiveInputStream.BoundedInputStream.read() incorrectly adds 1 for EOF to the bytes read count. Thanks to Gary Gregory. |
| * Deprecate IOUtils.read(File, byte[]). Thanks to Gary Gregory. |
| * Deprecate IOUtils.copyRange(InputStream, long, OutputStream, int). Thanks to Gary Gregory. |
| * COMPRESS-653: ZipArchiveOutputStream multi archive updates metadata in incorrect file #455. Thanks to Zbynek Vyskovsky, Gary Gregory. |
| * Deprecate ByteUtils.InputStreamByteSupplier. Thanks to Gary Gregory. |
| * Deprecate ByteUtils.fromLittleEndian(InputStream, int). Thanks to Gary Gregory. |
| * Deprecate ByteUtils.toLittleEndian(DataOutput, long, int). Thanks to Gary Gregory. |
| * Reduce duplication by having ArchiveInputStream extend FilterInputStream. Thanks to Gary Gregory. |
| * Support preamble garbage in ZipArchiveInputStream #471. Thanks to Zbynek Vyskovsky, Gary Gregory. |
| * COMPRESS-658: Fix formatting the lowest expressable DOS time #472. Thanks to Arnout Engelen. |
| * Drop reflection from ExtraFieldUtils static initialization #480. Thanks to Romain Manni-Bucau, Gary Gregory. |
| * Preserve exception causation in ExtraFieldUtils.register(Class). Thanks to Gary Gregory. |
| |
| Changes |
| ------- |
| |
| * Bump commons-lang3 from 3.13.0 to 3.14.0. Thanks to Gary Gregory. |
| * Bump com.github.marschall:memoryfilesystem from 2.6.1 to 2.8.0 #444, #458. Thanks to Dependabot. |
| * Bump commons-io from 2.15.0 to 2.15.1. Thanks to Gary Gregory. |
| * Bump org.apache.commons:commons-parent from 64 to 66. Thanks to Dependabot. |
| * Bump com.github.luben:zstd-jni from 1.5.5-10 to 1.5.5-11 #448. Thanks to Dependabot. |
| * Bump org.slf4j:slf4j-api from 2.0.9 to 2.0.12. Thanks to Dependabot. |
| * Add dependency on commons-codec:commons-codec:1.16.1. |
| * Add dependency on org.apache.commons:commons-lang3:3.14.0. |
| * Add dependency on commons-io:commons-io:2.15.1. |
| |
| |
| Resources |
| --------- |
| |
| Historical list of changes: https://commons.apache.org/proper/commons-compress/changes-report.html |
| |
| 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/proper/commons-compress/ |
| |
| Download page: https://commons.apache.org/proper/commons-compress/download_io.cgi |
| |
| Have fun! |
| -Apache Commons Team |
| |
| ----------------------------------------------------------------------------- |
| |
| Apache Commons Compress |
| Version 1.25.0 |
| Release Notes |
| |
| INTRODUCTION: |
| |
| Apache Commons Compress 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. |
| |
| Minor feature and maintenance release. |
| |
| Changes in this version include: |
| |
| New features |
| ------------ |
| * Add GzipParameters.getFileName() and deprecate getFilename(). Thanks to Gary Gregory. |
| * Add GzipParameters.setFileName(String) and deprecate setFilename(String). Thanks to Gary Gregory. |
| * Add FileNameUtil.getCompressedFileName(String) and deprecate getCompressedFilename(String). Thanks to Gary Gregory. |
| * Add FileNameUtil.getUncompressedFileName(String) and deprecate getUncompressedFilename(String). Thanks to Gary Gregory. |
| * Add FileNameUtil.isCompressedFileName(String) and deprecate isCompressedFilename(String). Thanks to Gary Gregory. |
| * Add BZip2Utils.getCompressedFileName(String) and deprecate getCompressedFilename(String). Thanks to Gary Gregory. |
| * Add BZip2Utils.getUncompressedFileName(String) and deprecate getUncompressedFilename(String). Thanks to Gary Gregory. |
| * Add BZip2Utils.isCompressedFileName(String) and deprecate isCompressedFilename(String). Thanks to Gary Gregory. |
| * Add LZMAUtils.getCompressedFileName(String) and deprecate getCompressedFilename(String). Thanks to Gary Gregory. |
| * Add LZMAUtils.getUncompressedFileName(String) and deprecate getUncompressedFilename(String). Thanks to Gary Gregory. |
| * Add LZMAUtils.isCompressedFileName(String) and deprecate isCompressedFilename(String). Thanks to Gary Gregory. |
| * Add XYUtils.getCompressedFileName(String) and deprecate getCompressedFilename(String). Thanks to Gary Gregory. |
| * Add XYUtils.getUncompressedFileName(String) and deprecate getUncompressedFilename(String). Thanks to Gary Gregory. |
| * Add XYUtils.isCompressedFileName(String) and deprecate isCompressedFilename(String). Thanks to Gary Gregory. |
| * Add GzipUtils.getCompressedFileName(String) and deprecate getCompressedFilename(String). Thanks to Gary Gregory. |
| * Add GzipUtils.getUncompressedFileName(String) and deprecate getUncompressedFilename(String). Thanks to Gary Gregory. |
| * Add GzipUtils.isCompressedFileName(String) and deprecate isCompressedFilename(String). Thanks to Gary Gregory. |
| * Add SevenZOutputFile.putArchiveEntry(SevenZArchiveEntry) and deprecate putArchiveEntry(ArchiveEntry). Thanks to Gary Gregory. |
| * Add generics to ChangeSet and ChangeSetPerformer. Thanks to Gary Gregory. |
| * Add generics to ArchiveStreamProvider and friends. Thanks to Gary Gregory. |
| * Add a generic type parameter to ArchiveOutputStream and avoid unchecked/unconfirmed type casts in subclasses. Thanks to Gary Gregory. |
| * Add a generic type parameter to ArchiveInputStream and deprecate redundant get methods in subclasses. Thanks to Gary Gregory. |
| * COMPRESS-648: Add ability to restrict autodetection in CompressorStreamFactory #433. Thanks to Yakov Shafranovich, Gary Gregory. |
| |
| Fixed Bugs |
| ---------- |
| * Precompile regular expression in ArArchiveInputStream.isBSDLongName(String). Thanks to Gary Gregory. |
| * Precompile regular expression in ArArchiveInputStream.isGNULongName(String). Thanks to Gary Gregory. |
| * Precompile regular expression in TarArchiveEntry.parseInstantFromDecimalSeconds(String). Thanks to Gary Gregory. |
| * Precompile regular expression in ChangeSet.addDeletion(Change). Thanks to Gary Gregory. |
| * COMPRESS-649: Improve performance in BlockLZ4CompressorOutputStream. Thanks to Gary Gregory. |
| * Null-guard Lister.main(String[]) for programmatic invocation. Thanks to Gary Gregory. |
| * NPE in pack200.NewAttributeBands.Reference.addAttributeToBand(NewAttribute, InputStream). Thanks to Gary Gregory. |
| * Incorrect lazy initialization and update of static field in pack200.CodecEncoding.getSpecifier(Codec, Codec). Thanks to Gary Gregory. |
| * Incorrect string comparison in unpack200.AttributeLayout.numBackwardsCallables(). Thanks to Gary Gregory. |
| * Inefficient use of keySet iterator instead of entrySet iterator in pack200.PackingOptions.addOrUpdateAttributeActions(List, Map, int). Thanks to Gary Gregory. |
| * Package private class pack200.IcBands.IcTuple should be a static inner class. Thanks to Gary Gregory. |
| * Private class ZipFile.BoundedFileChannelInputStream should be a static inner class. Thanks to Gary Gregory. |
| * Refactor internal SevenZ AES256SHA256Decoder InputStream into a named static inner class. Thanks to Gary Gregory. |
| * Refactor internal SevenZ AES256SHA256Decoder OutputStream into a named static inner class. Thanks to Gary Gregory. |
| * Use the root Locale for string conversion of command line options in org.apache.commons.compress.archivers.sevenz.CLI. Thanks to Gary Gregory. |
| * Calling PackingUtils.config(PackingOptions) with null now closes the internal FileHandler. Thanks to Gary Gregory. |
| * COMPRESS-650: LZ4 compressor throws IndexOutOfBoundsException. Thanks to Chad Preisler. |
| * COMPRESS-632: LZWInputStream.initializeTables(int) should throw IllegalArgumentException instead of ArrayIndexOutOfBoundsException. Thanks to Yakov Shafranovich, Gary Gregory. |
| * COMPRESS-647: Throw IOException instead of ArrayIndexOutOfBoundsException when reading Zip with data descriptor entries. Thanks to Robin Schimpf, Gary Gregory. |
| |
| Changes |
| ------- |
| * Bump org.slf4j:slf4j-api from 2.0.8 to 2.0.9 #413. Thanks to Dependabot. |
| * Bump commons-io:commons-io from 2.13.0 to 2.15.0. Thanks to Gary Gregory. |
| * Bump com.github.luben:zstd-jni from 1.5.5-5 to 1.5.5-10 #422, #431. Thanks to Dependabot. |
| * Bump org.ow2.asm:asm from 9.5 to 9.6 #421. Thanks to Dependabot. |
| * Bump org.apache.commons:commons-parent from 62 to 64 #421. Thanks to Dependabot, Gary Gregory. |
| |
| |
| Historical list of changes: https://commons.apache.org/proper/commons-compress/changes-report.html |
| |
| 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/proper/commons-compress/ |
| |
| Download page: https://commons.apache.org/proper/commons-compress/download_io.cgi |
| |
| Have fun! |
| -Apache Commons Team |
| |
| ----------------------------------------------------------------------------- |
| |
| Apache Commons Compress 1.24.0 RELEASE NOTES |
| |
| Apache Commons Compress 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. |
| |
| New features |
| ------------ |
| * Make ZipArchiveEntry.getLocalHeaderOffset() public. Thanks to Gary Gregory. |
| |
| Fixed Bugs |
| ---------- |
| * Use try-with-resources in ArchiveStreamFactory #391. Thanks to Daniele Galloppo. |
| * Javadoc and code comments: Sanitize grammar issues and typos #393. Thanks to Martin Wiesner. |
| * Remove redundant (null) initializations #394. Thanks to Martin Wiesner. |
| * [StepSecurity] ci: Harden GitHub Actions #396. Thanks to step-security-bot, Gary Gregory. |
| |
| Changes |
| ------- |
| * Bump zstd-jni from 1.5.4-2 to 1.5.5-5 #377, #383, #388, #390, #400. Thanks to Dependabot. |
| * Bump memoryfilesystem from 2.5.0 to 2.6.1 #381, #385, #387. Thanks to Dependabot. |
| * Bump commons-parent from 56 to 61 #384. Thanks to Dependabot, Gary Gregory. |
| * Bump commons-io:commons-io from 2.11.0 to 2.13.0. Thanks to Gary Gregory. |
| * Bump commons-lang3 from 3.12.0 to 3.13.0. Thanks to Gary Gregory. |
| * Bump org.slf4j:slf4j-api from 2.0.7 to 2.0.8. Thanks to Gary Gregory. |
| |
| 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/ |
| |
| Download it from https://commons.apache.org/compress/download_compress.cgi |
| |
| ----------------------------------------------------------------------------- |
| |
| Apache Commons Compress 1.23.0 RELEASE NOTES |
| |
| Apache Commons Compress 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. |
| |
| New features |
| ------------ |
| * Use FileTime for time fields in SevenZipArchiveEntry #256. |
| Issue: COMPRESS-614. Thanks to Andre Brait, Gary Gregory. |
| * Fix calculation the offset of the first ZIP central directory entry #334. |
| Issue: COMPRESS-621. Thanks to Glavo. |
| * Add encryption support for SevenZ #332. |
| Issue: COMPRESS-633. Thanks to Daniel Santos, Bruno P. Kinoshita, Gary Gregory. |
| * Support for extra time data in Zip archives #345. |
| Issue: COMPRESS-613. Thanks to Andre Brait, Gary Gregory, Bruno P. Kinoshita. |
| * Add org.apache.commons.compress.archivers.zip.DefaultBackingStoreSupplier to write to a custom folder instead of the default temporary folder. |
| Issue: COMPRESS-621. Thanks to Gary Gregory. |
| * Add capability to configure Deflater strategy in GzipCompressorOutputStream: GzipParameters.setDeflateStrategy(int). |
| Issue: COMPRESS-600. Thanks to Gary Gregory, Pascal Davoust. |
| |
| Fixed Bugs |
| ---------- |
| * Implicit narrowing conversion in compound assignment. Thanks to CodeQL, Gary Gregory. |
| * Avoid NPE in FileNameUtils.getBaseName(Path) for paths with zero elements like root paths. Thanks to CodeQL, Gary Gregory. |
| * Avoid NPE in FileNameUtils.getExtension(Path) for paths with zero elements like root paths. Thanks to CodeQL, Gary Gregory. |
| * LZMA2Decoder.decode() looses original exception. Thanks to Gary Gregory. |
| * Extract conditions and avoid duplicate code. #297. Thanks to Arturo Bernal. |
| * Remove duplicate conditions. Use switch instead. #298. Thanks to Arturo Bernal. |
| * Replace JUnit 3 and 4 with JUnit 5 #344, #346. Thanks to Robin Schimpf. |
| * Make 'ZipFile.offsetComparator' static #353. Thanks to Glavo. |
| * The GzipCompressorOutputStream#writeHeader() uses ISO_8859_1 to write the file name and comment. |
| If the strings contains non-ISO_8859_1 characters, unknown characters are displayed after decompression. |
| Use percent encoding for non ISO_8859_1 characters. |
| Issue: COMPRESS-638. Thanks to Radar wen, Gary Gregory, Michael Osipov. |
| * Port some code from IO to NIO APIs. Thanks to Jonathan Leitschuh, Gary Gregory. |
| * pack200: Fix FileBands misusing InputStream#read(byte[]) #360. Thanks to Una, Gary Gregory, Jochen Wiedmann, quaternary, Bruno P. Kinoshita. |
| * Add TarArchiveEntry.getLinkFlag() #365. |
| Issue: COMPRESS-641. Thanks to XenoAmess, Gary Gregory, Bruno P. Kinoshita. |
| * Integer overflow ArithmeticException in TarArchiveOutputStream #368. |
| Issue: COMPRESS-642. Thanks to Anton Klarén, Gary Gregory. |
| * org.apache.commons.compress.archivers.zip.ZipFile.finalize() should not write to std err. |
| Issue: COMPRESS-642. Thanks to Dominik Stadler, Stefan Bodewig, Gary Gregory. |
| |
| Changes |
| ------- |
| * Bump mockito.version from 4.8.0 to 4.11.0 #328, #331, #340, #348. Thanks to Dependabot. |
| * Bump pmd from 6.50.0 to 6.53.0. Thanks to Gary Gregory. |
| * Bump memoryfilesystem from 2.3.0 to 2.5.0 #330, #359. Thanks to Dependabot. |
| * Bump slf4j-api from 2.0.3 to 2.0.7 #329, #333, #341, #371. Thanks to Dependabot. |
| * Bump japicmp from 0.16.0 to 0.17.1. Thanks to Gary Gregory. |
| * Bump commons-parent from 54 to 56 #339, #349. Thanks to Dependabot. |
| * Bump zstd-jni from 1.5.2-5 to 1.5.4-2 #362, #364. Thanks to Dependabot. |
| |
| Removed: |
| * Remove BZip2CompressorOutputStream.finalize() which only wrote to std err. Thanks to Gary Gregory. |
| 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/ |
| |
| Download it from https://commons.apache.org/compress/download_compress.cgi |
| |
| ----------------------------------------------------------------------------- |
| |
| Release 1.22 |
| ------------ |
| |
| New features |
| ------------ |
| * Migrate zip package to use NIO #236. |
| Issue: COMPRESS-602. Thanks to Postelnicu George, Gary Gregory. |
| * Add APK file extension constants: ArchiveStreamFactory.APK, APKM, APKS, XAPK. Thanks to Gary Gregory. |
| * ArchiveStreamFactory.createArchiveInputStream(String, InputStream, String) supports the "APK" format (it's a JAR). Thanks to Gary Gregory. |
| * Expander example now has NIO Path versions of IO File APIs. Thanks to Gary Gregory. |
| * Improve TAR support for file times #254. |
| Issue: COMPRESS-612. Thanks to Andre Brait, Gary Gregory. |
| * Add SevenZArchiveEntry.setContentMethods(SevenZMethodConfiguration...). Thanks to Gary Gregory. |
| |
| Fixed Bugs |
| ---------- |
| * Fix some compiler warnings in pack200 packages. Thanks to Gary Gregory. |
| * Close File input stream after unpacking in Pack200UnpackerAdapter.unpack(File, JarOutputStream). Thanks to Gary Gregory. |
| * Pack200UnpackerAdapter.unpack(InputStream, JarOutputStream) should not close its given input stream. Thanks to Gary Gregory. |
| * Fix minor problem in examples. |
| Issue: COMPRESS-596. Thanks to Tamas Mucs. |
| * Add a limit to the copy buffer in IOUtils.readRange() to |
| avoid reading more from a channel than asked for. |
| Github Pull Request #214. |
| Issue: COMPRESS-584. Thanks to Matthijs Laan, Peter Lee. |
| * Documentation nits #217. Thanks to Helder Magalhães, Gary Gregory, PeterAlfredLee. |
| * Replace wrapper Collections.sort is with an instance method directly. #245. Thanks to Arturo Bernal. |
| * Replace manual comparisons with Comparator.comparingInt() #244. Thanks to Arturo Bernal. |
| * Replace manual copy of array contents with System.arraycopy() #246. Thanks to Arturo Bernal. |
| * Fix thread safety issues when encoding 7z password #248. Thanks to Glavo, Bruno P. Kinoshita, PeterAlfredLee, Gary Gregory. |
| * bzip2: calculate median-of-3 on unsigned values #242. Thanks to Peter Dettman. |
| * Use Math.min and Math.max calculations. #247. Thanks to Arturo Bernal, Gary Gregory, Bruno P. Kinoshita. |
| * Expander should be able to work if an entry's name is "./". |
| Issue: COMPRESS-603. Thanks to Matt Sicker. |
| * Ensure compatibility with Java 8 #252. |
| Issue: COMPRESS-604. Thanks to Andre Brait. |
| * Use StringBuilder instead of StringBuffer. #284. Thanks to Arturo Bernal. |
| * Inline variable. Remove redundant local variable. #283. Thanks to Arturo Bernal. |
| * Use compare method #285. Thanks to Arturo Bernal. |
| * Remove Unnecessary interface modifiers #281. Thanks to Arturo Bernal. |
| * Avoid use C-style array declaration. #282. Thanks to Arturo Bernal. |
| * ChecksumVerifyingInputStream.read() does not always validate checksum at end-of-stream. Thanks to Gary Gregory. |
| * Fix TarFileTest #289. Thanks to Matt Juntunen. |
| * Update Wikipedia link in TarUtils.java:627. |
| Issue: COMPRESS-625. Thanks to MrBump, Gary Gregory. |
| * OutOfMemoryError on malformed pack200 input (attributes). |
| Issue: COMPRESS-626. Thanks to Andrii Hudz, Gary Gregory. |
| * OutOfMemoryError on malformed pack200 input (org.apache.commons.compress.harmony.pack200.NewAttributeBands.readNextUnionCase). |
| Issue: COMPRESS-628. Thanks to Andrii Hudz, Gary Gregory. |
| * OutOfMemoryError on malformed unpack200 input (org.apache.commons.compress.harmony.unpack200.NewAttributeBands.readNextUnionCase). |
| Issue: COMPRESS-628. Thanks to Gary Gregory. |
| * Some input streams are not closed in org.apache.commons.compress.harmony.pack200.PackingUtils. Thanks to Gary Gregory. |
| * Pack200 causes a 'archive.3E' error if it?s not in the system class loader. |
| Issue: COMPRESS-627. Thanks to anatawa12, Gary Gregory. |
| |
| Changes |
| ------- |
| * Bump actions/cache from 2.1.6 to 3.0.10 #230, #257, #305, #320. Thanks to Dependabot, Gary Gregory. |
| * Bump actions/checkout from 2.3.4 to 3.1.0 #226, #227, #251, #300, #321. Thanks to Dependabot, Gary Gregory. |
| * Bump actions/setup-java from 2 to 3.5.1 #278. Thanks to Dependabot. |
| * Bump github/codeql-action from 1 to 2 #287. Thanks to Dependabot. |
| * Bump mockito-core from 3.11.1 to 4.6.1 #209, #224, #231, #235, #243, #253, #286, #294. Thanks to Dependabot. |
| * Bump org.apache.felix.framework from 7.0.0 to 7.0.1 #208. Thanks to Dependabot. |
| * Bump memoryfilesystem from 2.1.0 to 2.3.0 #212, #237. Thanks to Dependabot. |
| * Bump zstd-jni from 1.5.0-2 to 1.5.2-5 #215, #233, #238, #240, #250, #291, #326. Thanks to Dependabot, Gary Gregory. |
| * Bump Pack200 packages from ASM 3.2 to 9.2 #216. |
| Breaks binary compatibility in the internals of the pack200 implementation: |
| - org.apache.commons.compress.harmony.pack200.Segment |
| - org.apache.commons.compress.harmony.pack200.SegmentMethodVisitor |
| - org.apache.commons.compress.harmony.pack200.SegmentAnnotationVisitor |
| - org.apache.commons.compress.harmony.pack200.SegmentFieldVisitor |
| Issue: COMPRESS-582. Thanks to Alex Landau, Stephan, Gary Gregory. |
| * Bump asm from 9.2 to 9.4 #279, #322. Thanks to Dependabot. |
| * Bump maven-javadoc-plugin from 3.3.0 to 3.4.1 #221, #249, #288, #308. Thanks to Dependabot. |
| * Bump maven-pmd-plugin from 3.14.0 to 3.19.0 #296, #309, #311. Thanks to Gary Gregory, Dependabot. |
| * Bump pmd from 6.44.0 to 6.50.0. Thanks to Gary Gregory. |
| * Bump commons.japicmp.version from 0.15.3 to 0.16.0. Thanks to Gary Gregory. |
| * Bump maven-bundle-plugin from 5.1.2 to 5.1.8 #234, #239, #290, #292, #301, #304. Thanks to Dependabot. |
| * Bump org.apache.felix.framework from 7.0.1 to 7.0.5 #232, #295. Thanks to Dependabot. |
| * Bump slf4j-api from 1.7.30 to 2.0.3 #213, #241, #258, #310, #314, #315, #318. Thanks to Dependabot. |
| * Bump commons-parent from 52 to 54 #280. Thanks to Dependabot, Gary Gregory. |
| * Bump commons.jacoco.version from 0.8.7 to 0.8.8. Thanks to Gary Gregory. |
| * Bump junit.version from 5.8.2 to 5.9.1 #302, #317. Thanks to Dependabot. |
| * Bump mockito.version from 4.6.1 to 4.8.0 #307, #312. Thanks to Dependabot. |
| * Bump maven-surefire-plugin from 3.0.0-M6 to 3.0.0-M7. Thanks to Gary Gregory. |
| |
| 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/ |
| |
| ----------------------------------------------------------------------------- |
| |
| Release 1.21 |
| ------------ |
| |
| Compress 1.21 is the first release to require Java 8 to build and run. |
| |
| SevenZFileOptions has a new setting that needs to be enabled |
| explicitly if SevenZFile should try to recover broken archives - a |
| feature introduced with Commons Compress 1.19. This is a breaking |
| change if you relied on the recovery attempt. The change was made to |
| detect broken archives sooner, and to mitigate the OOM exploit. |
| |
| Several formats now throw IOExceptions when reading broken archives or |
| streams that would have caused arbitrary RuntimeExceptions in earlier |
| versions of Compress. |
| |
| New features |
| ------------ |
| * Add writePreamble to ZipArchiveInputStream. This method could |
| write raw data to zip archive before any entry was written to |
| the zip archive. |
| For most of the time, this is used to create self-extracting |
| zip. |
| Github Pull Request #127. |
| Issue: COMPRESS-550. |
| Thanks to Scott Frederick. |
| * Added support for random access to the TAR packages. |
| Github Pull Request #113. |
| Issue: COMPRESS-540. |
| Thanks to Robin Schimpf. |
| * Added support for BufferPool in ZstdCompressorInputStream. |
| Github Pull Request #165. |
| Issue: COMPRESS-565. |
| Thanks to Michael L Heuer. |
| * Commons Compress cannot be built with JDK14 due to Pack200 removal. |
| Add Pack200 implementation from Apache Harmony. |
| Issue: COMPRESS-507. |
| Thanks to Gary Gregory, Apache Harmony. |
| * Add a new AlwaysWithCompatibility in Zip64Mode, this is a |
| compromise for some libraries including 7z and Expand-Archive |
| Powershell utility(and likely Excel). |
| |
| And we will encode both the LFH offset and Disk Number Start |
| in the ZIP64 Extended Information Extra Field - even if only |
| the disk number needs to be encoded. |
| |
| Github Pull Request #169. |
| Issue: COMPRESS-565. |
| Thanks to Evgenii Bovykin. |
| * gzip deflate buffer size is now configurable. |
| Issue: COMPRESS-566. |
| Thanks to Brett Okken. |
| |
| Fixed Bugs |
| ---------- |
| * Fix bugs in random access of 7z. Problems may happen |
| in a mixture use of random access and sequential access |
| of 7z. |
| Github Pull Request #95. |
| Issue: COMPRESS-505. |
| * Fix bugs in random access of 7z. Exceptions are thrown |
| when reading the first entry multiple times by random |
| access. |
| Issue: COMPRESS-510. |
| * Add '/' to directories with long name in tar. This is to |
| resolve the ambiguous behavior of the TarArchiveEntry.getName() |
| method between directory with short name and long name. |
| Issue: COMPRESS-509. |
| Thanks to Petr Vasak. |
| * Removed the PowerMock dependency. |
| Issue: COMPRESS-520. |
| Thanks to Robin Schimpf. |
| * Added improved checks to detect corrupted bzip2 streams and |
| throw the expected IOException rather than obscure |
| RuntimeExceptions. |
| See also COMPRESS-519. |
| Issue: COMPRESS-516. |
| * Improved parsing of X5455_ExtendedTimestamp ZIP extra field. |
| Issue: COMPRESS-517. |
| * ZipArchiveInputStream and ZipFile will now throw an |
| IOException rather than a RuntimeException if the zip64 extra |
| field of an entry could not be parsed. |
| Issue: COMPRESS-518. |
| * Improved detection of corrupt ZIP archives in ZipArchiveInputStream. |
| Issue: COMPRESS-523. |
| * Added improved checks to detect corrupted deflate64 streams and |
| throw the expected IOException rather than obscure |
| RuntimeExceptions. |
| Issues: COMPRESS-521, COMPRESS-522, COMPRESS-525, COMPRESS-526, and COMPRESS-527. |
| * Add the archive name in the exception in the constructor of |
| ZipFile to make it a more specific exception. |
| Github Pull Request #102. |
| Issue: COMPRESS-515. |
| Thanks to ian-lavallee. |
| * Throw IOException when it encounters a non-number while parsing pax |
| header. |
| Issue: COMPRESS-530. |
| * Throw IOException when a tar archive contains a PAX header |
| without any normal entry following it. |
| Issue: COMPRESS-531. |
| * Added improved checks to detect corrupted IMPLODED streams and |
| throw the expected IOException rather than obscure |
| RuntimeExceptions. |
| Issue: COMPRESS-532. |
| * Throw expected IOException instead of NumberFormatException if |
| it encounters non-numbers when parsing pax headers for tarball. |
| |
| Throw IllegalArgumentException instead of RuntimeExceptions if |
| the file name is longer than 100 bytes with the longFileMode |
| of LONGFILE_ERROR, and address this in java docs. |
| |
| Throw IllegalArgumentException instead of RuntimeExceptions if |
| the any of the numeric values of an entry exceeds the limits |
| of a traditional tar header while bigNumberMode is |
| BIGNUMBER_ERROR, and address this in java docs. |
| Issue: COMPRESS-529. |
| * Fix for test fails on Windows. The tests are failing because the |
| default charset is not UTF-8. |
| Issue: COMPRESS-543. |
| Thanks to wulf2333. |
| * TarArchiveInputStream can not detect a truncated tar in skip() |
| and skipRecordPadding(). |
| Issue: COMPRESS-544. |
| Thanks to Aditya Prasad. |
| * Make the memory allocation in SevenZFile.readFilesInfo a lazy |
| allocation to avoid OOM when dealing some giant 7z archives. |
| Github Pull Request #120. |
| |
| Also added sanity checks before even trying to parse an |
| archive and made SevenZFileOptions' maxMemorySizeInKb apply to |
| the stored metadata for an archive. |
| |
| And further added an option that needs to be enabled in order |
| to make SevenZFile try to recover a broken archive. This is a |
| backwards incompatible change. |
| Issue: COMPRESS-542. |
| Thanks to theobisproject. |
| * ZipArchiveInputStream should throw an exception if a corrputed |
| zip64 extra field is met. |
| Issue: COMPRESS-546. |
| Thanks to Maksim Zuev. |
| * Add a new maven profile in pom.xml for JDK14+ to ignore the |
| failing tests about Pack200. |
| |
| This has later been superseeded by adding the Apache Harmony |
| classes for Pack200 support. |
| * Throw an IOException when reading the zip extra field if the |
| length is too short. |
| Issue: COMPRESS-548. |
| Thanks to Maksim Zuev. |
| * Throw an declared IOException if a null entry is met when |
| reading a global pax header instead of a runtime NPE. |
| Issue: COMPRESS-554. |
| Thanks to Maksim Zuev. |
| * ZIP extraction could lead to ArrayIndexOutOfBoundsExceptions |
| rather than the expected IOException. |
| Issue: COMPRESS-545. |
| Thanks to Maksim Zuev. |
| * Add asserts for Arrays.copyOf in X0017_StrongEncryptionHeader. |
| Issue: COMPRESS-547. |
| Thanks to Maksim Zuev. |
| * Fix for the CFH signature detect in ZipArchiveInputStream. |
| The problem could be reproduced by a zip archive with Data |
| Descriptor and STORED, and without the Data Descriptor |
| signature. |
| * The length validation in TarArchiveInputStream.parsePaxHeaders |
| should also consider the headers with length smaller than 1 |
| and ignore these headers. |
| Issue: COMPRESS-553. |
| Thanks to Maksim Zuev. |
| * Fix accidentally added '/' to file names. |
| This problem is caused by the incomplete fix of COMPRESS-509. |
| Github Pull Request #151. |
| Issue: COMPRESS-558. |
| Thanks to Robin Schimpf. |
| * As sparse entries can be successfully parsed now, |
| TarArchiveInputStream.canReadEntryData should return |
| true if the entry is a sparse entry. |
| Github Pull Request #153. |
| Issue: COMPRESS-560. |
| Thanks to Robin Schimpf. |
| * SparseFilesTest#testExtractPaxGNU should be skipped |
| if the version of GNU tar binary is 1.28. |
| Github Pull Request #152. |
| Issue: COMPRESS-559. |
| Thanks to Robin Schimpf. |
| * Removed an empty loop that was just warming the planet for |
| certain ZIP archives. |
| Github Pull Request #172. |
| Thanks to Fabian Meumertzheim. |
| * Made some of the stream classes used internally throw |
| IOExceptions on illegal arguments rather than |
| RuntimeExceptions to make it more likely that corrupt archives |
| cause expected checked exceptions rather than RuntimException |
| for various formats. |
| |
| Fixes a specific case for ZIP but affects other formats as |
| well. |
| Issue: COMPRESS-567. |
| * Simplify Assertions #205. |
| Thanks to Arturo Bernal. |
| * Checked the sizes read for archive entries and reject archives |
| as broken with negative entry sizes. |
| |
| Fixes an infinite loop in the new TarFile class but affects |
| several formats. |
| Issue: COMPRESS-569. |
| * OSGi detection was broken and so we always cached whether |
| XZ/brotli/zstd/LZMA have been available even in OSGi |
| environments. |
| Issue: COMPRESS-552. |
| * SevenZFile.getEntries now return a copy of entries. |
| Issue: COMPRESS-571. |
| * Handling of sparse tar entries has been hardened to ensure bad |
| inputs cause expected IOExceptions rather than RuntimeExceptions. |
| Issue: COMPRESS-575. |
| * The parser for GNU sparse tar headers could throw a |
| NullPointerExcpetion rather than an IOException if the archive |
| ended while more sparse headers were expected. |
| |
| Changes |
| ------- |
| * Made sure ZstdCompressorOutputStream no longer used |
| deprecated ZstOutputStream constructors. |
| Github Pull Request #94. |
| Thanks to Peter Alfred Lee. |
| * Make compression level of ParallelScatterZipCreator |
| configurable via a new constructor. |
| Issue: COMPRESS-504. |
| * Made an inner class static |
| Github Pull Request #107. |
| Issue: COMPRESS-536. |
| Thanks to Jin Xu. |
| * added an early exit to a loop in BZip2CompressorOutputStream |
| Github Pull Request #106. |
| Issue: COMPRESS-535. |
| Thanks to Jin Xu. |
| * Update the class of variable file in TarArchiveEntry from |
| java.io.File to java.nio.file.Path. Corresponding constructors |
| and methods are also modified/added. |
| |
| NOTE: The userName, groupName, userID and groupID will also be |
| set if they are available. The userName and groupName was not |
| set previously, and the previous value of UserID:GroupID was |
| 0:0 by default. |
| Please note this may cause a reproducibility problem. |
| |
| Github Pull Request #97. |
| Issue: COMPRESS-404. |
| Thanks to theobisproject. |
| * Reuse the record buffer in TarArchiveInputStream. |
| Issue: COMPRESS-539. |
| Thanks to Robin Schimpf. |
| * Add SevenZOutputFile.write(InputStream). |
| Thanks to Gary Gregory. |
| * Add SevenZOutputFile.write(Path, OpenOption...). |
| Thanks to Gary Gregory. |
| * Add SevenZOutputFile.createArchiveEntry(Path, String, LinkOption...). |
| Thanks to Gary Gregory. |
| * Add ArArchiveOutputStream.createArchiveEntry(Path, String, LinkOption...). |
| Thanks to Gary Gregory. |
| * Add ArArchiveEntry(Path, String, LinkOption...). |
| Thanks to Gary Gregory. |
| * Add ctor CpioArchiveEntry(Path, String, LinkOption...). |
| Thanks to Gary Gregory. |
| * Add ctor CpioArchiveEntry(short, Path, String, LinkOption...). |
| Thanks to Gary Gregory. |
| * Add CpioArchiveEntry.setTime(FileTime). |
| Thanks to Gary Gregory. |
| * Add TarArchiveOutputStream.createArchiveEntry(Path, String, LinkOption...). |
| Thanks to Gary Gregory. |
| * Add ctor TarArchiveEntry(Path, String, LinkOption...). |
| Thanks to Gary Gregory. |
| * Add IOUtils.EMPTY_LINK_OPTIONS. |
| Thanks to Gary Gregory. |
| * Add Path support to ZipArchiveOutputStream #123. |
| Thanks to Gary Gregory. |
| * Some minor improvements. |
| Github Pull Request #157. |
| Issue: COMPRESS-561. |
| Thanks to Arturo Bernal. |
| * Update from Java 7 to 8. |
| * Update GitHub actions/checkout from v1 to v2.3.4, #114, #124, #139, #150. |
| Thanks to Dependabot. |
| * Update actions/setup-java from v1.4.0 to v2, #125, #133, #141. |
| Thanks to Dependabot, Gary Gregory. |
| * Update com.github.luben:zstd-jni from 1.4.4-7 to 1.5.0-2, #118, #159, #173, #174, #203. |
| Thanks to Dependabot, Gary Gregory. |
| * Update tests slf4j-api from 1.7.26 to 1.7.30 #117. |
| Thanks to Dependabot. |
| * Update maven-pmd-plugin from 3.12.0 to 3.14.0, #115, #154. |
| Thanks to Dependabot. |
| * Update maven-bundle-plugin from 3.5.1 to 5.1.2 #116, #180. |
| Thanks to Dependabot. |
| * Bump memoryfilesystem from 1.3.0 to 2.1.0 #131. |
| Thanks to Dependabot. |
| * Bump actions/cache from v2 to v2.1.6, #164, #200. |
| Thanks to Dependabot. |
| * Bump junit from 4.13 to 4.13.2, #143, #167. |
| Thanks to Dependabot. |
| * Bump mockito-core from 1.10.19 to 3.11.1, #161, #170, #204. |
| Thanks to Dependabot. |
| * Bump commons.jacoco.version from 0.8.5 to 0.8.7 (Java 16 builds). |
| Thanks to Gary Gregory. |
| * Bump org.apache.felix:org.apache.felix.framework from 6.0.3 to 7.0.0 (Java 16 builds). |
| Thanks to Gary Gregory. |
| * Bump commons.japicmp.version from 0.14.3 to 0.15.3 (Java 16 builds). |
| Thanks to Gary Gregory. |
| * Bump commons.javadoc.version from 3.2.0 to 3.3.0. |
| Thanks to Gary Gregory. |
| * Update com.github.luben:zstd-jni from 1.4.8-7 to 1.4.9-1 #176. |
| Thanks to Dependabot. |
| * Update org.tukaani:xz from 1.8 to 1.9 |
| * Some minor improvements. |
| Github Pull Request #193. |
| Issue: COMPRESS-577. |
| Thanks to Arturo Bernal. |
| * Java8 improvements. |
| Github Pull Request #194. |
| Issue: COMPRESS-578. |
| Thanks to Arturo Bernal. |
| * Remove redundant local variable. |
| Github Pull Request #195. |
| Issue: COMPRESS-579. |
| Thanks to Arturo Bernal. |
| * Remove redundant operation |
| Github Pull Request #196. |
| Issue: COMPRESS-580. |
| Thanks to Arturo Bernal. |
| |
| ----------------------------------------------------------------------------- |
| |
| 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 |
| ---------- |
| * SevenZFile could throw NullPointerException rather than |
| IOException for certain archives. In addition it now handles |
| certain empty archives more gracefully. |
| Issue: COMPRESS-492. |
| * Deflate64CompressorInputStream.read would return 0 for some |
| inputs in violation of the InputStream.read contract. |
| Issue: COMPRESS-491. |
| * SeekableInMemoryByteChannel's truncate didn't set position |
| according to the spec in an edge case. |
| Issue: COMPRESS-499. |
| * 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 |
| ------- |
| * Update optional library com.github.luben:zstd-jni from |
| 1.4.0-1 to 1.4.4-7. |
| Issue: COMPRESS-493. |
| * Update tests from org.apache.felix:org.apache.felix.framework |
| 6.0.2 to 6.0.3. |
| * 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. |
| * Added random access support to SevenZFile. |
| Issue: COMPRESS-342. |
| Thanks to Peter Alfred Lee. |
| * Added support for split ZIP archives. |
| Issue: COMPRESS-477. |
| Thanks to Peter Alfred Lee. |
| * Added support for reading sparse entries to the TAR package. |
| Issue: COMPRESS-124. |
| Thanks to Peter Alfred Lee. |
| * Update JUnit from 4.12 to 4.13. |
| |
| Removed |
| ------- |
| * 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 |
| ------------ |
| * 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. |
| * TarArchiveInputStream has a new constructor-arg lenient that |
| can be used to accept certain broken archives. |
| Issue: COMPRESS-469. |
| * ArjArchiveEntry and SevenZArchiveEntry now implement hashCode |
| and equals. |
| Issue: COMPRESS-475. |
| * 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 |
| ---------- |
| * ZipArchiveInputStream could forget the compression level has |
| changed under certain circumstances. |
| * Fixed another potential resource leak in |
| ParallelScatterZipCreator#writeTo. |
| Issue: COMPRESS-470. |
| * ArArchiveInputStream could think it had hit EOF prematurely. |
| Github Pull Request #74. |
| Thanks to Alex Bertram. |
| * Throw IOException rather than RuntimeExceptions for certain |
| malformed LZ4 or Snappy inputs. |
| Issue: COMPRESS-490. |
| * 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 |
| ------- |
| * 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. |
| * The ARJ package has been updated to contain constants for more |
| recent specifications. |
| Issue: COMPRESS-464. |
| Thanks to Rostislav Krasny. |
| * Update optional library zstd-jni from 1.3.3-3 to 1.4.0-1. |
| Issue: COMPRESS-484. |
| * 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. |
| * 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. |
| * 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. |
| * 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. |
| * 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 |
| ------------ |
| * 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 |
| ---------- |
| * 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. |
| * Changed the OSGi Import-Package to also optionally import |
| javax.crypto so encrypted archives can be read. |
| Issue: COMPRESS-456. |
| * 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. |
| * 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. |
| * The cpio streams didn't handle archives using a multi-byte |
| encoding properly. |
| Issue: COMPRESS-459. |
| Thanks to Jens Reimann. |
| * 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. |
| * ArArchiveInputStream#read would allow to read from the stream |
| without opening an entry at all. |
| Issue: COMPRESS-462. |
| |
| ----------------------------------------------------------------------------- |
| |
| Release 1.17 |
| ------------ |
| |
| New features |
| ------------ |
| * Added a unit test that is supposed to fail if we break the |
| OSGi manifest entries again. |
| Issue: COMPRESS-443. |
| * Add a new SkipShieldingInputStream class that can be used with |
| streams that throw an IOException when skip is invoked. |
| Issue: COMPRESS-449. |
| * 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 |
| ---------- |
| * Removed the objenesis dependency from the pom as it is not |
| needed at all. |
| * Fixed resource leak in ParallelScatterZipCreator#writeTo. |
| Issue: COMPRESS-446. |
| * 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. |
| * IOUtils.copy now verifies the buffer size is bigger than 0. |
| Issue: COMPRESS-451. |
| * ZipArchiveInputStream failed to read some files with stored |
| entries using a data descriptor. |
| Issue: COMPRESS-454. |
| |
| Changes |
| ------- |
| * Fixed some code examples. |
| Github Pull Request #63. |
| Thanks to Marchenko Sergey. |
| * 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. |
| * Added a workaround for a bug in AdoptOpenJDK for S/390 to |
| BZip2CompressorInputStream. |
| Issue: COMPRESS-453. |
| |
| ----------------------------------------------------------------------------- |
| |
| Release 1.16.1 |
| -------------- |
| |
| Fixed Bug |
| --------- |
| * Fixed the OSGi manifest entry for imports that has been broken |
| in 1.16. |
| Issue: COMPRESS-442. |
| |
| ----------------------------------------------------------------------------- |
| |
| Release 1.16 |
| ------------ |
| |
| New features |
| ------------ |
| * Add read-only support for Zstandard compression based on the |
| Zstd-jni project. |
| Issue: COMPRESS-423. Thanks to Andre F de Miranda. |
| * Added auto-detection for Zstandard compressed streams. |
| Issue: COMPRESS-425. |
| * Added write-support for Zstandard compression. |
| Issue: COMPRESS-426. |
| * Added read-only DEFLATE64 support to ZIP archives and as |
| stand-alone CompressorInputStream. |
| Issue: COMPRESS-380. Thanks to Christian Marquez Grabia. |
| * Added read-only DEFLATE64 support to 7z archives. |
| Issue: COMPRESS-437. |
| |
| Fixed Bugs |
| ---------- |
| * Synchronized iteration over a synchronizedList in |
| ParallelScatterZipCreator. |
| Issue: COMPRESS-430. Thanks to Bruno P. Kinoshita. |
| * ZipFile could get stuck in an infinite loop when parsing ZIP |
| archives with certain strong encryption headers. |
| Issue: COMPRESS-432. |
| * Added improved checks to detect corrupted bzip2 streams and |
| throw the expected IOException rather than obscure |
| RuntimeExceptions. |
| Issue: COMPRESS-424. |
| |
| Changes |
| ------- |
| * Replaces instanceof checks with a type marker in LZ77 support code. |
| Issue: COMPRESS-435. Thanks to BELUGA BEHR. |
| * Updated XZ for Java dependency to 1.8 in order to pick up bug fix |
| to LZMA2InputStream's available method. |
| * ZipArchiveEntry now exposes how the name or comment have been |
| determined when the entry was read. |
| Issue: COMPRESS-429. Thanks to Damiano Albani. |
| * ZipFile.getInputStream will now always buffer the stream |
| internally in order to improve read performance. |
| Issue: COMPRESS-438. |
| * Speed improvement for DEFLATE64 decompression. |
| Issue: COMPRESS-440. Thanks to Dawid Weiss. |
| * Added a few extra sanity checks for the rarer compression |
| methods used in ZIP archives. |
| Issue: COMPRESS-436. |
| * Simplified the special handling for the dummy byte required by |
| zlib when using java.util.zip.Inflater. |
| Issue: COMPRESS-441. |
| * Various code cleanups. |
| Github Pull Request #61. Thanks to Shahab Kondri. |
| * 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 |
| ------------ |
| * 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. |
| * 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. |
| * It is now possible to specify/read custom PAX headers when |
| writing/reading tar archives. |
| Issue: COMPRESS-400. Thanks to Simon Spero. |
| |
| Fixed Bugs |
| ---------- |
| * 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. |
| * 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. |
| * Travis build redundantly repeats compilation and tests redundantly |
| GitHub Pull Request #43. Thanks to Simon Spero. |
| Issue: COMPRESS-413 |
| * The MANIFEST of 1.14 lacks an OSGi Import-Package for XZ for |
| Java. |
| Issue: COMPRESS-396. |
| * BUILDING.md now passes the RAT check. |
| Issue: COMPRESS-406. Thanks to Simon Spero. |
| * Made sure ChecksumCalculatingInputStream receives valid |
| checksum and input stream instances via the constructor. |
| Issue: COMPRESS-412. Thanks to Michael Hausegger. |
| * 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. |
| * Fixed class names of CpioArchiveEntry and |
| CpioArchiveInputStream in various Javadocs. |
| Issue: COMPRESS-415. |
| * 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. |
| * Removed ZipEncoding code that became obsolete when we started |
| to require Java 5 as baseline long ago. |
| Issue: COMPRESS-410. Thanks to Simon Spero. |
| * 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. |
| * 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. |
| * Simplified TarArchiveOutputStream by replacing the internal |
| buffering with new class FixedLengthBlockOutputStream. |
| Issue: COMPRESS-409. |
| |
| ----------------------------------------------------------------------------- |
| |
| Release 1.14 |
| ------------ |
| |
| New features |
| ------------ |
| * Added write support for Snappy. |
| Issue: COMPRESS-246. |
| * Added support for LZ4 (block and frame format). |
| Issue: COMPRESS-271. |
| * Add static detect(InputStream in) to CompressorStreamFactory |
| and ArchiveStreamFactory |
| Issue: COMPRESS-385. |
| * Added a way to limit amount of memory ZCompressorStream may |
| use. |
| Issue: COMPRESS-382. Thanks to Tim Allison. |
| * Added a way to limit amount of memory ZCompressorStream may |
| use. |
| Issue: COMPRESS-386. Thanks to Tim Allison. |
| * Added a way to limit amount of memory LZMACompressorStream and |
| XZCompressorInputStream may use. |
| Issue: COMPRESS-382. Thanks to Tim Allison. |
| * Add Brotli decoder based on the Google Brotli library. |
| Issue: COMPRESS-392. Thanks to Philippe Mouawad. |
| * ZipEntry now exposes its data offset. |
| Issue: COMPRESS-390. Thanks to Zbynek Vyskovsky. |
| * 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 |
| ---------- |
| * SnappyCompressorInputStream slides the window too early |
| leading to ArrayIndexOutOfBoundsExceptions for some streams. |
| Issue: COMPRESS-378. |
| * 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é. |
| * Fixed an integer overflow in CPIO's CRC calculation. |
| Pull Request #17. Thanks to Daniel Collin. |
| * Make unit tests work on Windows paths with spaces in their names. |
| Issue: COMPRESS-387. |
| * Internal location pointer in ZipFile could get incremented |
| even if nothing had been read. |
| Issue: COMPRESS-389. |
| * LZMACompressorOutputStream#flush would throw an exception |
| rather than be the NOP it promised to be. |
| Issue: COMPRESS-393. |
| |
| Changes |
| ------- |
| * 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. |
| * BZip2CompressorInputstream now uses BitInputStream internally. |
| Pull Request #13. Thanks to Thomas Meyer. |
| * 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 |
| ------------ |
| * SevenZFile, SevenZOutputFile, ZipFile and |
| ZipArchiveOutputStream can now work on non-file resources if |
| they can be accessed via SeekableByteChannel. |
| Issue: COMPRESS-327. |
| * Allow compressor extensions through a standard JRE ServiceLoader. |
| Issue: COMPRESS-368. |
| * Allow archive extensions through a standard JRE ServiceLoader. |
| Issue: COMPRESS-369. |
| * Add write support for the legacy LZMA format, this requires XZ |
| for Java 1.6. |
| Issue: COMPRESS-373. |
| * Add write support for the legacy LZMA stream to 7z, this |
| requires XZ for Java 1.6. |
| Issue: COMPRESS-374. |
| * Allow the clients of ParallelScatterZipCreator to provide |
| ZipArchiveEntryRequestSupplier. |
| Issue: COMPRESS-375. Thanks to Plamen Totev. |
| * Add a version-independent link to the API docs of the latest |
| release. |
| Issue: COMPRESS-372. |
| |
| Fixed Bugs |
| ---------- |
| * BitInputStream could return bad results when overflowing |
| internally - if two consecutive reads tried to read more than |
| 64 bits. |
| Issue: COMPRESS-363. |
| * 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. |
| * 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. |
| * ScatterZipOutputStream didn't close the StreamCompressor |
| causing a potential resource leak. |
| Issue: COMPRESS-377. |
| |
| Changes |
| ------- |
| * Update Java requirement from 6 to 7. |
| Issue: COMPRESS-360. |
| * 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 |
| ------------ |
| * 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 |
| ---------- |
| * SevenZFile.read() throws an IllegalStateException for empty entries. |
| Issue: COMPRESS-348. |
| * TarArchiveInputStream failed to parse PAX headers that included |
| blank lines. |
| Issue: COMPRESS-355. Thanks to Jeremy Gustie. |
| * TarArchiveInputStream failed to parse PAX headers whose tar entry |
| name ended with a slash. |
| Issue: COMPRESS-356. Thanks to Jeremy Gustie. |
| |
| Changes |
| ------- |
| * Update requirement from Java 5 to 6. |
| Issue: COMPRESS-349. |
| * TarArchiveEntry wastefully allocates empty arrays. |
| Issue: COMPRESS-350. |
| * Javadoc for BZip2CompressorInputStream(InputStream, boolean) should |
| refer to IOEx, not NPE. |
| Issue: COMPRESS-353. |
| * PureJavaCrc32C in the snappy package is now final so it is now safe |
| to call a virtual method inside the constructor. |
| Issue: COMPRESS-354. |
| * 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. |
| * 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 |
| ------------ |
| * TarArchiveInputStream now supports reading global PAX headers. |
| Issue: COMPRESS-347. |
| * The PAX headers for sparse entries written by star are now |
| applied. |
| Issue: COMPRESS-346. |
| * GNU sparse files using one of the PAX formats are now |
| detected, but cannot be extracted. |
| Issue: COMPRESS-345. |
| * New method SevenZFile.getEntries can be used to list the |
| contents of a 7z archive. |
| Issue: COMPRESS-341. |
| * When using Zip64Mode.Always also use ZIP64 extensions inside |
| the central directory. |
| GitHub Pull Request #10 Thanks to Matt Hovey. |
| * ZipFile.getRawInputStream() is now part of the public API |
| Issue: COMPRESS-323. |
| * Allow byte-for-byte replication of Zip entries. |
| GitHub Pull Request #6. Thanks to Jason van Zyl. |
| * TarArchiveEntry's preserveLeadingSlashes is now a property and used |
| on later calls to setName, too. |
| This behavior is a breaking change. |
| Issue: COMPRESS-328. |
| * Added read-only support for bzip2 compression used inside of |
| ZIP archives. |
| GitHub Pull Request #4. Thanks to Sören Glimm. |
| |
| Fixed Bugs |
| ---------- |
| * ArArchiveInputStream can now read GNU extended names that are |
| terminated with a NUL byte rather than a linefeed. |
| Issue: COMPRESS-344. |
| * Native Memory Leak in Sevenz-DeflateDecoder. |
| Issue: COMPRESS-343. Thanks to Rene Preissel. |
| * 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. |
| * file names of tar archives using the xstar format are now |
| parsed properly. |
| Issue: COMPRESS-336. |
| * checksums of tars that pad the checksum field to the left are |
| now calculated properly. |
| Issue: COMPRESS-335. |
| * ArArchiveInputStream failed to read past the first entry when |
| BSD long names have been used. |
| Issue: COMPRESS-334. Thanks to Jeremy Gustie. |
| * Added buffering for random access which speeds up 7Z support. |
| Issue: COMPRESS-333. Thanks to Dawid Weiss. |
| * 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. |
| * SnappyCompressorInputStream and |
| FramedSnappyCompressorInputStream returned 0 at the end of the |
| stream under certain circumstances. |
| Issue: COMPRESS-332. |
| * Adjusted unit test to updates in Java8 and later that change |
| the logic of ZipEntry#getTime. |
| Issue: COMPRESS-326. |
| * 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. |
| * 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 |
| ------------ |
| * CompressorStreamFactory can now auto-detect DEFLATE streams |
| with ZLIB header. |
| Issue: COMPRESS-316. Thanks to Nick Burch. |
| * CompressorStreamFactory can now auto-detect LZMA streams. |
| Issue: COMPRESS-313. |
| * 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. |
| * 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. |
| * 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 |
| ---------- |
| * TarArchiveInputStream can now read entries with group or |
| user ids > 0x80000000. |
| Issue: COMPRESS-314. |
| * TarArchiveOutputStream can now write entries with group or |
| user ids > 0x80000000. |
| Issue: COMPRESS-315. |
| * TarArchiveEntry's constructor with a File and a String arg |
| didn't normalize the name. |
| Issue: COMPRESS-312. |
| * ZipEncodingHelper no longer reads system properties directly |
| to determine the default charset. |
| Issue: COMPRESS-308. |
| * BZip2CompressorInputStream#read would return -1 when asked to |
| read 0 bytes. |
| Issue: COMPRESS-309. |
| * ArchiveStreamFactory fails to pass on the encoding when creating |
| some streams. |
| * ArjArchiveInputStream |
| * CpioArchiveInputStream |
| * DumpArchiveInputStream |
| * JarArchiveInputStream |
| * TarArchiveInputStream |
| * JarArchiveOutputStream |
| Issue: COMPRESS-306. |
| * 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. |
| * 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. |
| * 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. |
| * 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. |
| * SevenZFile now throws the specific PasswordRequiredException |
| when it encounters an encrypted stream but no password has |
| been specified. |
| Issue: COMPRESS-298. |
| |
| Changes |
| ------- |
| * 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/ |
| |
| ----------------------------------------------------------------------------- |
| |
| Release 1.9 |
| ----------- |
| |
| New features |
| ------------ |
| * Added support for DEFLATE streams without any gzip framing. |
| Issue: COMPRESS-263. |
| Thanks to Matthias Stevens. |
| |
| Fixed Bugs |
| ---------- |
| * When reading 7z files unknown file properties and properties of type |
| kDummy are now ignored. |
| Issue: COMPRESS-287. |
| * Expanding 7z archives using LZMA compression could cause an |
| EOFException. |
| Issue: COMPRESS-286. |
| * 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 |
| ------- |
| * 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 |
| ------------ |
| * COMPRESS-272: CompressorStreamFactory can now auto-detect Unix compress |
| (".Z") streams. |
| |
| Fixed Bugs |
| ---------- |
| * COMPRESS-270: The snappy, ar and tar inputstreams might fail to read from a |
| non-buffered stream in certain cases. |
| * COMPRESS-277: IOUtils#skip might skip fewer bytes than requested even though |
| more could be read from the stream. |
| * COMPRESS-276: ArchiveStreams now validate there is a current entry before |
| reading or writing entry data. |
| * ArjArchiveInputStream#canReadEntryData tested the current |
| entry of the stream rather than its argument. |
| * COMPRESS-274: ChangeSet#delete and deleteDir now properly deal with unnamed |
| entries. |
| * COMPRESS-273: Added a few null checks to improve robustness. |
| * COMPRESS-278: TarArchiveInputStream failed to read archives with empty |
| gid/uid fields. |
| * COMPRESS-279: TarArchiveInputStream now again throws an exception when it |
| encounters a truncated archive while reading from the last |
| entry. |
| * COMPRESS-280: Adapted TarArchiveInputStream#skip to the modified |
| IOUtils#skip method. Thanks to BELUGA BEHR. |
| |
| Changes |
| ------- |
| * The dependency on org.tukaani:xz is now marked as optional. |
| |
| ----------------------------------------------------------------------------- |
| |
| Release 1.8 |
| ----------- |
| |
| New features |
| ------------ |
| * GzipCompressorInputStream now provides access to the same |
| metadata that can be provided via GzipParameters when writing |
| a gzip stream. |
| Issue: COMPRESS-260. |
| * SevenZOutputFile now supports chaining multiple |
| compression/encryption/filter methods and passing options to |
| the methods. |
| Issue: COMPRESS-266. |
| * The (compression) method(s) can now be specified per entry in |
| SevenZOutputFile. |
| Issue: COMPRESS-261. |
| * SevenZArchiveEntry "knows" which method(s) have been used to |
| write it to the archive. |
| Issue: COMPRESS-258. |
| * The 7z package now supports the delta filter as method. |
| * 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 |
| ---------- |
| * BZip2CompressorInputStream read fewer bytes than possible from |
| a truncated stream. |
| Issue: COMPRESS-253. |
| * 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. |
| * CompressorStreamFactory.createCompressorInputStream with |
| explicit compression did not honor decompressConcatenated |
| Issue: COMPRESS-259. |
| * TarArchiveInputStream will now read archives created by tar |
| implementations that encode big numbers by not adding a |
| trailing NUL. |
| Issue: COMPRESS-262. |
| * 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. |
| * When writing PAX/POSIX headers for TAR entries with |
| backslashes or certain non-ASCII characters in their name |
| TarArchiveOutputStream could fail. |
| Issue: COMPRESS-265. |
| * 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 |
| ------------ |
| * Read-Only support for Snappy compression. |
| Issue: COMPRESS-147. Thanks to BELUGA BEHR. |
| * Read-Only support for .Z compressed files. |
| Issue: COMPRESS-243. Thanks to Damjan Jovanovic. |
| * ZipFile and ZipArchiveInputStream now support reading entries |
| compressed using the SHRINKING method. Thanks to Damjan Jovanovic. |
| * 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. |
| * ZipFile and ZipArchiveInputStream now support reading entries |
| compressed using the IMPLODE method. |
| Issue: COMPRESS-115. Thanks to Emmanuel Bourg. |
| * ZipFile and the 7z file classes now implement Closeable and can be |
| used in try-with-resources constructs. |
| |
| Fixed Bugs |
| ---------- |
| * SevenZOutputFile#closeArchiveEntry throws an exception when using |
| LZMA2 compression on Java8. Issue: COMPRESS-241. |
| * 7z reading of big 64bit values could be wrong. |
| Issue: COMPRESS-244. Thanks to Nico Kruber. |
| * TarArchiveInputStream could fail to read an archive completely. |
| Issue: COMPRESS-245. |
| * 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. |
| * 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 |
| ------------ |
| * 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. |
| * Added read-only support for ARJ archives that don't use |
| compression. Issue: COMPRESS-226. Thanks to Damjan Jovanovic. |
| * DumpArchiveInputStream now supports an encoding parameter that |
| can be used to specify the encoding of file names. |
| * The CPIO streams now support an encoding parameter that can be |
| used to specify the encoding of file names. |
| * Read-only support for LZMA standalone compression has been added. |
| Issue: COMPRESS-111. |
| |
| Fixed Bugs |
| ---------- |
| * TarBuffer.tryToConsumeSecondEOFRecord could throw a |
| NullPointerException Issue: COMPRESS-223. Thanks to Jeremy Gustie. |
| * 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. |
| * 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. |
| * 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. |
| * CpioArchiveInputStream failed to read archives created by |
| Redline RPM. Issue: COMPRESS-236. Thanks to Andrew Duffy. |
| * TarArchiveOutputStream now properly handles link names that |
| are too long to fit into a traditional TAR header. Issue: |
| COMPRESS-237. Thanks to Emmanuel Bourg. |
| * The auto-detecting create*InputStream methods of Archive and |
| CompressorStreamFactory could fail to detect the format of |
| blocking input streams. Issue: COMPRESS-239. |
| |
| Changes |
| ------- |
| * Readabilty patch to TarArchiveInputStream. Issue: |
| COMPRESS-232. Thanks to BELUGA BEHR. |
| * Performance improvements to TarArchiveInputStream, in |
| particular to the skip method. Issue: COMPRESS-234. Thanks to |
| BELUGA BEHR. |
| |
| ----------------------------------------------------------------------------- |
| |
| Release 1.5 |
| ----------- |
| |
| New features |
| ------------ |
| * 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 |
| ---------- |
| * Typo in CompressorStreamFactory Javadoc |
| Issue: COMPRESS-218. |
| Thanks to Gili. |
| * ArchiveStreamFactory's tar stream detection created false positives |
| for AIFF files. |
| Issue: COMPRESS-191. |
| Thanks to Jukka Zitting. |
| * 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. |
| * 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. |
| * Writing TAR PAX headers failed if the generated entry name ended |
| with a "/". |
| Issue: COMPRESS-203. |
| * 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. |
| * TarArchiveInputStream ignored the encoding for GNU long name |
| entries. |
| Issue: COMPRESS-212. |
| * TarArchiveInputStream could leave the second EOF record inside the |
| stream it had just finished reading. |
| Issue: COMPRESS-206. |
| Thanks to Peter De Maeyer. |
| * DumpArchiveInputStream no longer implicitly closes the original |
| input stream when it reaches the end of the archive. |
| * ZipArchiveInputStream now consumes the remainder of the archive when |
| getNextZipEntry returns null. |
| * Unit tests could fail if the source tree was checked out to a |
| directory tree containign spaces. |
| Issue: COMPRESS-205. |
| Thanks to Daniel Lowe. |
| * Fixed a potential ArrayIndexOutOfBoundsException when reading STORED |
| entries from ZipArchiveInputStream. |
| Issue: COMPRESS-219. |
| * CompressorStreamFactory can now be used without XZ for Java being |
| available. |
| Issue: COMPRESS-221. |
| |
| Changes |
| ------- |
| * Improved exception message if a zip archive cannot be read because |
| of an unsupported compression method. |
| Issue: COMPRESS-188. |
| Thanks to Harald Kuhn. |
| * ArchiveStreamFactory has a setting for file name encoding that sets |
| up encoding for ZIP and TAR streams. |
| Issue: COMPRESS-192. |
| Thanks to Jukka Zitting. |
| * TarArchiveEntry now has a method to verify its checksum. |
| Issue: COMPRESS-191. |
| Thanks to Jukka Zitting. |
| * Split/spanned ZIP archives are now properly detected by |
| ArchiveStreamFactory but will cause an |
| UnsupportedZipFeatureException when read. |
| * 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. |
| * TarArchiveEntry has a new constructor that allows setting linkFlag |
| and preserveLeadingSlashes at the same time. |
| Issue: COMPRESS-201. |
| * ChangeSetPerformer has a new perform overload that uses a ZipFile |
| instance as input. |
| Issue: COMPRESS-159. |
| * Garbage collection pressure has been reduced by reusing temporary |
| byte arrays in classes. |
| Issue: COMPRESS-172. |
| Thanks to Thomas Mair. |
| * Can now handle zip extra field 0x5455 - Extended Timestamp. |
| Issue: COMPRESS-210. |
| Thanks to Julius Davies. |
| * handle zip extra field 0x7875 - Info Zip New Unix Extra Field. |
| Issue: COMPRESS-211. |
| Thanks to Julius Davies. |
| * ZipShort, ZipLong, ZipEightByteInteger should implement Serializable |
| Issue: COMPRESS-213. |
| Thanks to Julius Davies. |
| * better support for Unix symlinks in ZipFile entries. |
| Issue: COMPRESS-214. |
| Thanks to Julius Davies. |
| * ZipFile's initialization has been improved for non-Zip64 archives. |
| Issue: COMPRESS-215. |
| Thanks to Robin Power. |
| * 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 |
| ---------- |
| * Ported libbzip2's fallback sort algorithm to |
| BZip2CompressorOutputStream to speed up compression in certain |
| edge cases. |
| |
| ----------------------------------------------------------------------------- |
| |
| Release 1.4 |
| ----------- |
| |
| New features |
| ------------ |
| * COMPRESS-156: Support for the XZ format has been added. |
| |
| Fixed Bugs |
| ---------- |
| * 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. |
| * COMPRESS-184: TarArchiveInputStream failed to parse PAX headers that |
| contained non-ASCII characters. |
| * COMPRESS-178: TarArchiveInputStream throws IllegalArgumentException instead of IOException |
| * COMPRESS-179: TarUtils.formatLongOctalOrBinaryBytes() assumes the field will be 12 bytes long |
| * COMPRESS-175: GNU Tar sometimes uses binary encoding for UID and GID |
| * COMPRESS-171: ArchiveStreamFactory.createArchiveInputStream would claim |
| short text files were TAR archives. |
| * COMPRESS-164: ZipFile didn't work properly for archives using unicode extra |
| fields rather than UTF-8 filenames and the EFS-Flag. |
| * 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 |
| ------- |
| * 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. |
| * COMPRESS-181: Added a workaround for a Bug some tar implementations that add |
| a NUL byte as first byte in numeric header fields. |
| * COMPRESS-176: Added a workaround for a Bug in WinZIP which uses backslashes |
| as path separators in Unicode Extra Fields. |
| * COMPRESS-131: ArrayOutOfBounds while decompressing bz2. Added test case - code already seems to have been fixed. |
| * COMPRESS-146: BZip2CompressorInputStream now optionally supports reading of |
| concatenated .bz2 files. |
| * COMPRESS-154: GZipCompressorInputStream now optionally supports reading of |
| concatenated .gz files. |
| * 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. |
| * 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. |
| * 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 |
| ------------ |
| * Support for the Pack200 format has been added. Issue: COMPRESS-142. |
| * Read-only support for the format used by the Unix dump(8) tool |
| has been added. Issue: COMPRESS-132. |
| |
| Fixed Bugs |
| ---------- |
| * BZip2CompressorInputStream's getBytesRead method always |
| returned 0. |
| * ZipArchiveInputStream and ZipArchiveOutputStream could leak |
| resources on some JDKs. Issue: COMPRESS-152. |
| * TarArchiveOutputStream's getBytesWritten method didn't count |
| correctly. Issue: COMPRESS-160. |
| |
| Changes |
| ------- |
| * The ZIP package now supports Zip64 extensions. Issue: COMPRESS-36. |
| * 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 |
| ------------ |
| * 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. |
| * 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: |
| * COMPRESS-129: ZipArchiveInputStream could fail with a "Truncated ZIP" error |
| message for entries between 2 GByte and 4 GByte in size. |
| * COMPRESS-145: TarArchiveInputStream now detects sparse entries using the |
| oldgnu format and properly reports it cannot extract their |
| contents. |
| * COMPRESS-130: The Javadoc for ZipArchiveInputStream#skip now matches the |
| implementation, the code has been made more defensive. |
| * COMPRESS-140: ArArchiveInputStream fails if entries contain only blanks for |
| userId or groupId. Thanks to Trejkaz. |
| * COMPRESS-139: ZipFile may leak resources on some JDKs. |
| * COMPRESS-125: BZip2CompressorInputStream throws IOException if |
| underlying stream returns available() == 0. |
| Removed the check. |
| * COMPRESS-127: Calling close() on inputStream returned by |
| CompressorStreamFactory.createCompressorInputStream() |
| does not close the underlying input stream. |
| * COMPRESS-119: TarArchiveOutputStream#finish now writes all buffered |
| data to the stream |
| |
| Changes |
| ------- |
| * ZipFile now implements finalize which closes the underlying |
| file. |
| * COMPRESS-117: Certain tar files not recognised by |
| ArchiveStreamFactory. |
| |
| ----------------------------------------------------------------------------- |
| |
| Release 1.1 |
| ----------- |
| |
| New features |
| ------------ |
| * COMPRESS-108: Command-line interface to list archive contents. |
| Usage: java -jar commons-compress-n.m.jar archive-name [zip|tar|etc] |
| * COMPRESS-109: Tar implementation does not support Pax headers |
| Added support for reading pax headers. |
| Note: does not support global pax headers |
| * 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. |
| * 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). |
| * 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. |
| * 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. |
| * COMPRESS-89: The ZIP classes now detect encrypted entries. |
| * COMPRESS-97: Added autodetection of compression format to |
| CompressorStreamFactory. |
| * COMPRESS-95: Improve ExceptionMessages in ArchiveStreamFactory Thanks to Joerg Bellmann. |
| * 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. |
| * ArchiveEntry now has a getLastModifiedDate method. |
| * COMPRESS-78: Add a BZip2Utils class modelled after GZipUtils Thanks to Jukka Zitting. |
| |
| Fixed Bugs |
| ---------- |
| * COMPRESS-72: Move acknowledgements from NOTICE to README |
| * COMPRESS-113: TarArchiveEntry.parseTarHeader() includes the trailing space/NUL when parsing the octal size |
| * COMPRESS-118: TarUtils.parseName does not properly handle characters outside the range 0-127 |
| * COMPRESS-107: ArchiveStreamFactory does not recognise tar files created by Ant |
| * COMPRESS-110: Support "ustar" prefix field, which is used when file paths are longer |
| than 100 characters. |
| * 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. |
| * COMPRESS-101: ZipArchiveInputStream should now properly read archives that |
| use data descriptors but without the "unofficial" signature. |
| * COMPRESS-74: ZipArchiveInputStream failed to update the number of bytes |
| read properly. |
| * 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. |
| * 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. |
| * COMPRESS-73: ZipArchiveEntry, ZipFile and ZipArchiveInputStream are now |
| more lenient when parsing extra fields. |
| * COMPRESS-82: cpio is terribly slow. |
| Documented that buffered streams are needed for performance |
| * Improved exception message if the extra field data in ZIP |
| archives cannot be parsed. |
| * COMPRESS-17: Tar format unspecified - current support documented. |
| * 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. |
| * COMPRESS-87: ZipArchiveInputStream could repeatedly return 0 on read() when |
| the archive was truncated. Thanks to Antoni Mylka. |
| * 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. |
| * COMPRESS-83: Delegate all read and write methods in GZip stream in order to |
| speed up operations. |
| * The ar and cpio streams now properly read and write last |
| modified times. |
| * COMPRESS-81: TarOutputStream can leave garbage at the end of the archive |
| |
| Changes |
| ------- |
| * COMPRESS-112: ArArchiveInputStream does not handle GNU extended filename records (//) |
| * 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. |
| * COMPRESS-79: Move DOS/Java time conversions into Zip utility class. |
| * COMPRESS-75: ZipArchiveInputStream does not show location in file |
| where a problem occurred. |
| |
| ----------------------------------------------------------------------------- |