Apache Commons Compress Release Notes
Release History
Version |
Date |
Description |
1.27.1 |
2024-08-16 |
This is a feature and maintenance release. Java 8 or later is required. |
1.27.0 |
2024-08-03 |
This is a feature and maintenance release. Java 8 or later is required. |
1.26.2 |
2024-05-18 |
Minor feature and maintenance release. |
1.26.1 |
2024-03-05 |
Minor feature and maintenance release. |
1.26.0 |
2024-02-17 |
Minor feature and maintenance release. |
1.25.0 |
2023-11-12 |
Minor feature and maintenance release. |
1.24.0 |
2023-09-04 |
Minor feature and maintenance release. |
1.23.0 |
2023-03-18 |
Minor feature and maintenance release. |
1.22 |
2022-11-01 |
Minor feature and maintenance release. |
1.21 |
2021-07-12 |
Release 1.21 (Java 8 or above) ---------------------------------------- SevenZFileOptions has a new setting that needs to be enabled explicity 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. |
1.20 |
2020-02-08 |
Release 1.20 (Java 7 or above) |
1.19 |
2019-08-27 |
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. |
1.18 |
2018-08-16 |
Release 1.18 ---------------------------------------- This release changes the OSGi Manifest entry Bundle-SymbolicName from org.apache.commons.compress to org.apache.commons.commons-compress. |
1.17 |
2018-06-03 |
Release 1.17 |
1.16.1 |
2018-02-10 |
Release 1.16.1 |
1.16 |
2018-02-05 |
Release 1.16 |
1.15 |
2017-10-17 |
Release 1.15 ---------------------------------------- TarArchiveOutputStream now ensures record size is 512 and block size is a multiple of 512 as any other value would create invalid tar archives. This may break compatibility for code that deliberately wanted to create such files. |
1.14 |
2017-05-14 |
Release 1.14 |
1.13 |
2016-12-29 |
Release 1.13 - API compatible to 1.12 but requires Java 7 at runtime. |
1.12 |
2016-06-21 |
Release 1.12 - API compatible to 1.11 but requires 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. |
1.11 |
2016-04-06 |
Release 1.11 |
1.10 |
2015-08-18 |
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. |
1.9 |
2014-10-09 |
Release 1.9 |
1.8.1 |
2014-05-14 |
Release 1.8.1 |
1.8 |
2014-03-12 |
Release 1.8 |
1.7 |
2014-01-20 |
Release 1.7 |
1.6 |
2013-10-26 |
Release 1.6 |
1.5 |
2013-03-14 |
Release 1.5 |
1.4.1 |
2012-05-23 |
Release 1.4.1 |
1.4 |
2012-04-11 |
Release 1.4 |
1.3 |
2011-11-01 |
Release 1.3 - API compatible to 1.2 but requires Java5 at runtime |
1.2 |
2011-07-31 |
Release 1.2 - a bugfix release, the last release expected to be compatible with Java 1.4 |
1.1 |
2010-08-13 |
Release 1.1 |
1.0 |
2009-05-21 |
First Public Release |
Release 1.27.1 – 2024-08-16
Type |
Changes |
By |
|
Compression into BZip2 format has unexpected end of file when using a BufferedOutputStream. Fixes COMPRESS-686. Thanks to Richard Blank, Gary Gregory. |
ggregory |
|
Bump org.apache.commons:commons-lang3 from 3.15.0 to 3.16.0 #556. Thanks to Dependabot, Gary Gregory. |
ggregory |
Release 1.27.0 – 2024-08-03
Type |
Changes |
By |
|
Fix PMD UnnecessaryFullyQualifiedName and others. Thanks to Gary Gregory. |
ggregory |
|
Support reading a 7z file that writing archive properties #541. Fixes COMPRESS-681. Thanks to joker53-1, Gary Gregory. |
ggregory |
|
Upgrade commons-io from 2.15.1 to 2.16.1 #513 Thanks to Mike Drob, Gary Gregory. |
ggregory |
|
CompressorOutputStream now extends FilterOutputStream. Thanks to Gary Gregory. |
ggregory |
|
ArchiveOutputStream now extends FilterOutputStream. Thanks to Gary Gregory. |
ggregory |
|
Update Javadoc description for GzipCompressorInputStream #551. Fixes COMPRESS-685. Thanks to Archie L. Cobbs, Gary Gregory. |
ggregory |
|
Replace FileNameUtil.getCompressedFileName(String) use of Locale.ENGLISH with Locale.ROOT. Thanks to Gary Gregory. |
ggregory |
|
Fix SpotBugs DLS_DEAD_LOCAL_STORE in SevenZFile.readPackInfo(ByteBuffer, Archive). Thanks to Gary Gregory. |
ggregory |
|
Fix SpotBugs NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE in ZipFile.openZipChannel(Path, long, OpenOption[]). Thanks to Gary Gregory. |
ggregory |
|
Fix SpotBugs UC_USELESS_OBJECT in unpack200.CpBands.parseCpSignature(InputStream). Thanks to Gary Gregory. |
ggregory |
|
Fix PMD UselessOverridingMethod in unpack200.bytecode.InnerClassesAttribute. Thanks to Gary Gregory. |
ggregory |
|
Fix PMD UselessOverridingMethod in unpack200.bytecode.LineNumberTableAttribute. Thanks to Gary Gregory. |
ggregory |
|
Fix PMD CheckSkipResult in ZipArchiveInputStream.closeEntry(). Thanks to Gary Gregory. |
ggregory |
|
Add ArchiveInputStream.forEach(IOConsumer). Thanks to Gary Gregory. |
ggregory |
|
Add ArchiveInputStream.iterator(). Thanks to Gary Gregory. |
ggregory |
|
Add ArchiveOutputStream.isFinished(). Thanks to Gary Gregory. |
ggregory |
|
Add ArchiveOutputStream.checkFinished(). Thanks to Gary Gregory. |
ggregory |
|
Replace assert with Exception. Fixes COMPRESS-684. |
sebb |
|
Bump org.apache.commons:commons-parent from 69 to 72 #537. Thanks to Dependabot, Gary Gregory. |
ggregory |
|
Bump PMD from 6.x to 7.2.0. Thanks to Dependabot, Gary Gregory. |
ggregory |
|
Bump commons-codec:commons-codec from 1.17.0 to 1.17.1 #544. Thanks to Dependabot, Gary Gregory. |
ggregory |
|
Bump org.apache.commons:commons-lang3 from 3.14.0 to 3.15.0 #545. Thanks to Dependabot, Gary Gregory. |
ggregory |
|
Bump com.github.luben:zstd-jni from 1.5.6-3 to 1.5.6-4 #548. Thanks to Dependabot, Gary Gregory. |
ggregory |
|
Bump org.tukaani:xz from 1.9 to 1.10 #550. Thanks to Dependabot, Gary Gregory. |
ggregory |
|
Bump org.hamcrest:hamcrest from 2.2 to 3.0 #552. Thanks to Dependabot, Gary Gregory. |
ggregory |
Release 1.26.2 – 2024-05-18
Type |
Changes |
By |
|
Deprecate org.apache.commons.compress.utils.CharsetNames in favor or java.nio.charset.StandardCharsets. Fixes COMPRESS-665. Thanks to Gary Gregory, Elliotte Rusty Harold. |
ggregory |
|
Validate TarArchiveEntry checksums #500. Fixes COMPRESS-674. Thanks to Gren Elliot. |
ggregory |
|
OSGi: Remove unresolvable dependencies in manifest and make the commons-io packages really optional. Fixes COMPRESS-676. Thanks to Martin Schneider. |
ecki |
|
Avoid possible NullPointerException in org.apache.commons.compress.utils.Sets.newHashSet(E...). Thanks to Gary Gregory. |
ggregory |
|
ZipArchiveOutputStream.setEncoding(String) with a null value throws IllegalArgumentException. Fixes COMPRESS-677. Thanks to Jeffrey Adamson, Gary Gregory. |
ggregory |
|
org.apache.commons.compress.harmony.unpack200.Archive.unpack() should not close streams it does not own (when constructed from Archive(InputStream, JarOutputStream)). Thanks to Gary Gregory. |
ggregory |
|
ArArchiveOutputStream doesn't pad correctly when a file name length is odd and greater than 16 (padding missing). Thanks to takaaki nakama, Gary Gregory. |
ggregory |
|
ArArchiveOutputStream should check that a file name length greater than 16 fits in a header. Fixes COMPRESS-678. Thanks to Gary Gregory. |
ggregory |
|
ArArchiveOutputStream implicit narrowing conversion in compound assignment. Thanks to Gary Gregory. |
ggregory |
|
Regression on parallel processing of 7zip files. Fixes COMPRESS-679. Thanks to Mikaël MECHOULAM, Gary Gregory. |
ggregory |
|
Regression in pack200's Archive class -- underlying InputStream is now closed. Fixes COMPRESS-675. Thanks to Tim Allison, Gary Gregory. |
ggregory |
|
Avoid NullPointerException in java.nio.channels.spi.AbstractInterruptibleChannel.close() when calling org.apache.commons.compress.archivers.zip.FileRandomAccessOutputStream.close(). Thanks to Gary Gregory. |
ggregory |
|
Fix SpotBugs NP_NULL_PARAM_DEREF in Sets.newHashSet(). Thanks to Gary Gregory. |
ggregory |
|
Private class' method PackingLogger.setVerbose(boolean) should be private. Thanks to Gary Gregory. |
ggregory |
|
Bump org.apache.commons:commons-parent from 66 to 69 #495, #508. Thanks to Dependabot, Gary Gregory. |
ggregory |
|
Bump org.ow2.asm:asm from 9.6 to 9.7 #504. Thanks to Dependabot, Gary Gregory. |
ggregory |
|
Bump com.github.luben:zstd-jni from 1.5.5-11 to 1.5.6-2 #510. Thanks to Gary Gregory, Dependabot. |
ggregory |
|
Bump commons-io:commons-io from 2.15.1 to 2.16.1 #514. Thanks to Gary Gregory, Dependabot. |
ggregory |
|
Bump org.slf4j:slf4j-api from 2.0.12 to 2.0.13 #519. Thanks to Dependabot. |
ggregory |
|
Bump commons-codec:commons-codec from 1.16.1 to 1.17.0. Thanks to Dependabot. |
ggregory |
Release 1.26.1 – 2024-03-05
Type |
Changes |
By |
|
TarArchiveOutputStream should use Commons IO Charsets instead of Commons Codec Charsets. Fixes COMPRESS-659. Thanks to David Handermann, Gary Gregory. |
ggregory |
|
Add org.apache.commons.codec to OSGi imports #482. Fixes COMPRESS-660. Thanks to 660, Gary Gregory. |
ggregory |
|
Return null value from getNextEntry() for empty file #486. Fixes COMPRESS-664. Thanks to Radek Kraus. |
ggregory |
|
Remove unused variables in tests #487. Fixes COMPRESS-664. Thanks to Elliotte Rusty Harold. |
ggregory |
|
Multithreaded access to Tar archive throws java.util.zip.ZipException: Corrupt GZIP trailer. Fixes COMPRESS-666. Thanks to Cosmin Carabet, Gary Gregory. |
ggregory |
|
ArchiveStreamFactory.detect(InputStream) returns TAR for ICO file #386. Fixes COMPRESS-644. Thanks to Tim Allison, Gary Gregory. |
ggregory |
|
ArchiveInputStream markSupported should always return false. Fixes COMPRESS-661. Thanks to Alexander Veit, Tilman Hausherr, Gary Gregory. |
ggregory |
|
Remove out of date jar and scripts #483. Fixes COMPRESS-662. Thanks to Christoph Loy, Gary Gregory. |
ggregory |
Release 1.26.0 – 2024-02-17
Type |
Changes |
By |
|
Check for invalid PAX values in TarArchiveEntry #438. Fixes COMPRESS-632. Thanks to Yakov Shafranovich, Gary Gregory. |
ggregory |
|
Fix for zero size headers in ArjInputStream #439. Fixes COMPRESS-632. Thanks to Yakov Shafranovich, Gary Gregory. |
ggregory |
|
Fixes and tests for ArInputStream #440. Fixes COMPRESS-632. Thanks to Yakov Shafranovich. |
ggregory |
|
Fixes for dump file parsing #442. Fixes COMPRESS-632. Thanks to Yakov Shafranovich, Gary Gregory. |
ggregory |
|
Improve CPIO exception detection and handling #441. Fixes COMPRESS-632. Thanks to Yakov Shafranovich, Gary Gregory. |
ggregory |
|
Deprecate SkipShieldingInputStream without replacement (no longer used). Thanks to Gary Gregory. |
ggregory |
|
Reuse commons-codec, don't duplicate class PureJavaCrc32C (removed package-private class). Thanks to Gary Gregory. |
ggregory |
|
Reuse commons-codec, don't duplicate class XXHash32 (deprecated class). Thanks to Gary Gregory. |
ggregory |
|
Reuse commons-io, don't duplicate class Charsets (deprecated class). Thanks to Gary Gregory. |
ggregory |
|
Reuse commons-io, don't duplicate class IOUtils (deprecated methods). Thanks to Gary Gregory. |
ggregory |
|
Reuse commons-io, don't duplicate class BoundedInputStream (deprecated class). Thanks to Gary Gregory. |
ggregory |
|
Reuse commons-io, don't duplicate class FileTimes (deprecated TimeUtils methods). Thanks to Gary Gregory. |
ggregory |
|
Reuse Arrays.equals(byte[], byte[]) and deprecate ArchiveUtils.isEqual(byte[], byte[]). Thanks to Gary Gregory. |
ggregory |
|
Add a null-check for the class loader of OsgiUtils #451. Thanks to alumi, Gary Gregory. |
ggregory |
|
Add a null-check in Pack200.newInstance(String, String). Thanks to alumi, Gary Gregory. |
ggregory |
|
Deprecate ChecksumCalculatingInputStream in favor of java.util.zip.CheckedInputStream. Thanks to Gary Gregory. |
ggregory |
|
Deprecate CRC32VerifyingInputStream.CRC32VerifyingInputStream(InputStream, long, int). Thanks to Gary Gregory. |
ggregory |
|
FramedSnappyCompressorOutputStream produces incorrect output when writing a large buffer #457. Fixes COMPRESS-655. Thanks to cpreisler, Gary Gregory. |
ggregory |
|
Fix TAR directory entries being misinterpreted as files #460. Fixes COMPRESS-657. Thanks to Sebastian Schuberth, Gary Gregory. |
ggregory |
|
Deprecate unused method FileNameUtils.getBaseName(String). Thanks to Gary Gregory. |
ggregory |
|
Deprecate unused method FileNameUtils.getExtension(String). Thanks to Gary Gregory. |
ggregory |
|
ArchiveInputStream.BoundedInputStream.read() incorrectly adds 1 for EOF to the bytes read count. Thanks to Gary Gregory. |
ggregory |
|
Deprecate IOUtils.read(File, byte[]). Thanks to Gary Gregory. |
ggregory |
|
Deprecate IOUtils.copyRange(InputStream, long, OutputStream, int). Thanks to Gary Gregory. |
ggregory |
|
ZipArchiveOutputStream multi archive updates metadata in incorrect file #455. Fixes COMPRESS-653. Thanks to Zbynek Vyskovsky, Gary Gregory. |
ggregory |
|
Deprecate ByteUtils.InputStreamByteSupplier. Thanks to Gary Gregory. |
ggregory |
|
Deprecate ByteUtils.fromLittleEndian(InputStream, int). Thanks to Gary Gregory. |
ggregory |
|
Deprecate ByteUtils.toLittleEndian(DataOutput, long, int). Thanks to Gary Gregory. |
ggregory |
|
Reduce duplication by having ArchiveInputStream extend FilterInputStream. Thanks to Gary Gregory. |
ggregory |
|
Support preamble garbage in ZipArchiveInputStream #471. Thanks to Zbynek Vyskovsky, Gary Gregory. |
ggregory |
|
Fix formatting the lowest expressable DOS time #472. Fixes COMPRESS-658. Thanks to Arnout Engelen. |
ggregory |
|
Drop reflection from ExtraFieldUtils static initialization #480. Thanks to Romain Manni-Bucau, Gary Gregory. |
ggregory |
|
Preserve exception causation in ExtraFieldUtils.register(Class). Thanks to Gary Gregory. |
ggregory |
|
Add and use ZipFile.builder(), ZipFile.Builder, and deprecate constructors. Thanks to Gary Gregory. |
ggregory |
|
Add and use SevenZFile.builder(), SevenZFile.Builder, and deprecate constructors. Thanks to Gary Gregory. |
ggregory |
|
Add and use ArchiveInputStream.getCharset(). Thanks to Gary Gregory. |
ggregory |
|
Add and use ArchiveEntry.resolveIn(Path). Thanks to Gary Gregory. |
ggregory |
|
Add Maven property project.build.outputTimestamp for build reproducibility. Thanks to Gary Gregory. |
ggregory |
|
Bump commons-lang3 from 3.13.0 to 3.14.0. Thanks to Gary Gregory. |
ggregory |
|
Bump com.github.marschall:memoryfilesystem from 2.6.1 to 2.8.0 #444, #458. Thanks to Dependabot. |
ggregory |
|
Bump commons-io from 2.15.0 to 2.15.1. Thanks to Gary Gregory. |
ggregory |
|
Bump org.apache.commons:commons-parent from 64 to 66. Thanks to Dependabot. |
ggregory |
|
Bump com.github.luben:zstd-jni from 1.5.5-10 to 1.5.5-11 #448. Thanks to Dependabot. |
ggregory |
|
Bump org.slf4j:slf4j-api from 2.0.9 to 2.0.12. Thanks to Dependabot. |
ggregory |
|
Bump commons-codec:commons-codec from 1.16.0 to 1.16.1. Thanks to Dependabot. |
ggregory |
|
Add dependency on commons-codec:commons-codec:1.16.1. Thanks to Gary Gregory. |
ggregory |
|
Add dependency on org.apache.commons:commons-lang3:3.14.0. Thanks to Gary Gregory. |
ggregory |
|
Add dependency on commons-io:commons-io:2.15.1. Thanks to Gary Gregory. |
ggregory |
Release 1.25.0 – 2023-11-12
Type |
Changes |
By |
|
Add GzipParameters.getFileName() and deprecate getFilename(). Thanks to Gary Gregory. |
ggregory |
|
Add GzipParameters.setFileName(String) and deprecate setFilename(String). Thanks to Gary Gregory. |
ggregory |
|
Add FileNameUtil.getCompressedFileName(String) and deprecate getCompressedFilename(String). Thanks to Gary Gregory. |
ggregory |
|
Add FileNameUtil.getUncompressedFileName(String) and deprecate getUncompressedFilename(String). Thanks to Gary Gregory. |
ggregory |
|
Add FileNameUtil.isCompressedFileName(String) and deprecate isCompressedFilename(String). Thanks to Gary Gregory. |
ggregory |
|
Add BZip2Utils.getCompressedFileName(String) and deprecate getCompressedFilename(String). Thanks to Gary Gregory. |
ggregory |
|
Add BZip2Utils.getUncompressedFileName(String) and deprecate getUncompressedFilename(String). Thanks to Gary Gregory. |
ggregory |
|
Add BZip2Utils.isCompressedFileName(String) and deprecate isCompressedFilename(String). Thanks to Gary Gregory. |
ggregory |
|
Add LZMAUtils.getCompressedFileName(String) and deprecate getCompressedFilename(String). Thanks to Gary Gregory. |
ggregory |
|
Add LZMAUtils.getUncompressedFileName(String) and deprecate getUncompressedFilename(String). Thanks to Gary Gregory. |
ggregory |
|
Add LZMAUtils.isCompressedFileName(String) and deprecate isCompressedFilename(String). Thanks to Gary Gregory. |
ggregory |
|
Add XYUtils.getCompressedFileName(String) and deprecate getCompressedFilename(String). Thanks to Gary Gregory. |
ggregory |
|
Add XYUtils.getUncompressedFileName(String) and deprecate getUncompressedFilename(String). Thanks to Gary Gregory. |
ggregory |
|
Add XYUtils.isCompressedFileName(String) and deprecate isCompressedFilename(String). Thanks to Gary Gregory. |
ggregory |
|
Add GzipUtils.getCompressedFileName(String) and deprecate getCompressedFilename(String). Thanks to Gary Gregory. |
ggregory |
|
Add GzipUtils.getUncompressedFileName(String) and deprecate getUncompressedFilename(String). Thanks to Gary Gregory. |
ggregory |
|
Add GzipUtils.isCompressedFileName(String) and deprecate isCompressedFilename(String). Thanks to Gary Gregory. |
ggregory |
|
Add SevenZOutputFile.putArchiveEntry(SevenZArchiveEntry) and deprecate putArchiveEntry(ArchiveEntry). Thanks to Gary Gregory. |
ggregory |
|
Add generics to ChangeSet and ChangeSetPerformer. Thanks to Gary Gregory. |
ggregory |
|
Add generics to ArchiveStreamProvider and friends. Thanks to Gary Gregory. |
ggregory |
|
Add a generic type parameter to ArchiveOutputStream and avoid unchecked/unconfirmed type casts in subclasses. Thanks to Gary Gregory. |
ggregory |
|
Add a generic type parameter to ArchiveInputStream and deprecate redundant get methods in subclasses. Thanks to Gary Gregory. |
ggregory |
|
Add ability to restrict autodetection in CompressorStreamFactory #433. Fixes COMPRESS-648. Thanks to Yakov Shafranovich, Gary Gregory. |
ggregory |
|
Precompile regular expression in ArArchiveInputStream.isBSDLongName(String). Thanks to Gary Gregory. |
ggregory |
|
Precompile regular expression in ArArchiveInputStream.isGNULongName(String). Thanks to Gary Gregory. |
ggregory |
|
Precompile regular expression in TarArchiveEntry.parseInstantFromDecimalSeconds(String). Thanks to Gary Gregory. |
ggregory |
|
Precompile regular expression in ChangeSet.addDeletion(Change). Thanks to Gary Gregory. |
ggregory |
|
Improve performance in BlockLZ4CompressorOutputStream. Fixes COMPRESS-649. Thanks to Gary Gregory. |
ggregory |
|
Null-guard Lister.main(String[]) for programmatic invocation. Thanks to Gary Gregory. |
ggregory |
|
NPE in pack200.NewAttributeBands.Reference.addAttributeToBand(NewAttribute, InputStream). Thanks to Gary Gregory. |
ggregory |
|
Incorrect lazy initialization and update of static field in pack200.CodecEncoding.getSpecifier(Codec, Codec). Thanks to Gary Gregory. |
ggregory |
|
Incorrect string comparison in unpack200.AttributeLayout.numBackwardsCallables(). Thanks to Gary Gregory. |
ggregory |
|
Inefficient use of keySet iterator instead of entrySet iterator in pack200.PackingOptions.addOrUpdateAttributeActions(List, Map, int). Thanks to Gary Gregory. |
ggregory |
|
Package private class pack200.IcBands.IcTuple should be a static inner class. Thanks to Gary Gregory. |
ggregory |
|
Private class ZipFile.BoundedFileChannelInputStream should be a static inner class. Thanks to Gary Gregory. |
ggregory |
|
Refactor internal SevenZ AES256SHA256Decoder InputStream into a named static inner class. Thanks to Gary Gregory. |
ggregory |
|
Refactor internal SevenZ AES256SHA256Decoder OutputStream into a named static inner class. Thanks to Gary Gregory. |
ggregory |
|
Use the root Locale for string conversion of command line options in org.apache.commons.compress.archivers.sevenz.CLI. Thanks to Gary Gregory. |
ggregory |
|
Calling PackingUtils.config(PackingOptions) with null now closes the internal FileHandler. Thanks to Gary Gregory. |
ggregory |
|
LZ4 compressor throws IndexOutOfBoundsException. Fixes COMPRESS-650. Thanks to Chad Preisler. |
ggregory |
|
LZWInputStream.initializeTables(int) should throw IllegalArgumentException instead of ArrayIndexOutOfBoundsException. Fixes COMPRESS-632. Thanks to Yakov Shafranovich, Gary Gregory. |
ggregory |
|
Throw IOException instead of ArrayIndexOutOfBoundsException when reading Zip with data descriptor entries. Fixes COMPRESS-647. Thanks to Robin Schimpf, Gary Gregory. |
ggregory |
|
Bump org.slf4j:slf4j-api from 2.0.8 to 2.0.9 #413. Thanks to Dependabot. |
ggregory |
|
Bump commons-io:commons-io from 2.13.0 to 2.15.0. Thanks to Gary Gregory. |
ggregory |
|
Bump com.github.luben:zstd-jni from 1.5.5-5 to 1.5.5-10 #422, #431. Thanks to Dependabot. |
ggregory |
|
Bump org.ow2.asm:asm from 9.5 to 9.6 #421. Thanks to Dependabot. |
ggregory |
|
Bump org.apache.commons:commons-parent from 62 to 64 #421. Thanks to Dependabot, Gary Gregory. |
ggregory |
Release 1.24.0 – 2023-09-04
Type |
Changes |
By |
|
Make ZipArchiveEntry.getLocalHeaderOffset() public. Thanks to Gary Gregory. |
kinow |
|
Use try-with-resources in ArchiveStreamFactory #391. Thanks to Daniele Galloppo. |
ggregory |
|
Javadoc and code comments: Sanitize grammar issues and typos #393. Thanks to Martin Wiesner. |
ggregory |
|
Remove redundant (null) initializations #394. Thanks to Martin Wiesner. |
ggregory |
|
[StepSecurity] ci: Harden GitHub Actions #396. Thanks to step-security-bot, Gary Gregory. |
ggregory |
|
Bump zstd-jni from 1.5.4-2 to 1.5.5-5 #377, #383, #388, #390, #400. Thanks to Dependabot. |
kinow |
|
Bump memoryfilesystem from 2.5.0 to 2.6.1 #381, #385, #387. Thanks to Dependabot. |
kinow |
|
Bump commons-parent from 56 to 61 #384. Thanks to Dependabot, Gary Gregory. |
kinow |
|
Bump commons-io:commons-io from 2.11.0 to 2.13.0. Thanks to Gary Gregory. |
ggregory |
|
Bump commons-lang3 from 3.12.0 to 3.13.0. Thanks to Gary Gregory. |
ggregory |
|
Bump org.slf4j:slf4j-api from 2.0.7 to 2.0.8. Thanks to Gary Gregory. |
ggregory |
Release 1.23.0 – 2023-03-18
Type |
Changes |
By |
|
Implicit narrowing conversion in compound assignment. Thanks to CodeQL, Gary Gregory. |
ggregory |
|
Avoid NPE in FileNameUtils.getBaseName(Path) for paths with zero elements like root paths. Thanks to CodeQL, Gary Gregory. |
ggregory |
|
Avoid NPE in FileNameUtils.getExtension(Path) for paths with zero elements like root paths. Thanks to CodeQL, Gary Gregory. |
ggregory |
|
LZMA2Decoder.decode() looses original exception. Thanks to Gary Gregory. |
ggregory |
|
Extract conditions and avoid duplicate code. #297. Thanks to Arturo Bernal. |
ggregory |
|
Remove duplicate conditions. Use switch instead. #298. Thanks to Arturo Bernal. |
ggregory |
|
Replace JUnit 3 and 4 with JUnit 5 #344, #346. Thanks to Robin Schimpf. |
ggregory |
|
Make 'ZipFile.offsetComparator' static #353. Thanks to Glavo. |
ggregory |
|
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. Fixes COMPRESS-638. Thanks to Radar wen, Gary Gregory, Michael Osipov. |
ggregory |
|
Port some code from IO to NIO APIs. Thanks to Jonathan Leitschuh, Gary Gregory. |
ggregory |
|
pack200: Fix FileBands misusing InputStream#read(byte[]) #360. Thanks to Una, Gary Gregory, Jochen Wiedmann, quaternary, Bruno P. Kinoshita. |
ggregory |
|
Add TarArchiveEntry.getLinkFlag() #365. Fixes COMPRESS-641. Thanks to XenoAmess, Gary Gregory, Bruno P. Kinoshita. |
ggregory |
|
Integer overflow ArithmeticException in TarArchiveOutputStream #368. Fixes COMPRESS-642. Thanks to Anton Klarén, Gary Gregory. |
ggregory |
|
org.apache.commons.compress.archivers.zip.ZipFile.finalize() should not write to std err. Fixes COMPRESS-502. Thanks to Dominik Stadler, Stefan Bodewig, Gary Gregory. |
ggregory |
|
Use FileTime for time fields in SevenZipArchiveEntry #256. Fixes COMPRESS-614. Thanks to Andre Brait, Gary Gregory. |
ggregory |
|
Fix calculation the offset of the first ZIP central directory entry #334. Fixes COMPRESS-621. Thanks to Glavo. |
ggregory |
|
Add encryption support for SevenZ #332. Fixes COMPRESS-633. Thanks to Daniel Santos, Bruno P. Kinoshita, Gary Gregory. |
ggregory |
|
Support for extra time data in Zip archives #345. Fixes COMPRESS-613. Thanks to Andre Brait, Gary Gregory, Bruno P. Kinoshita. |
ggregory |
|
Add org.apache.commons.compress.archivers.zip.DefaultBackingStoreSupplier to write to a custom folder instead of the default temporary folder. Fixes COMPRESS-621. Thanks to Gary Gregory. |
ggregory |
|
Add capability to configure Deflater strategy in GzipCompressorOutputStream: GzipParameters.setDeflateStrategy(int). Fixes COMPRESS-600. Thanks to Gary Gregory, Pascal Davoust. |
ggregory |
|
Remove BZip2CompressorOutputStream.finalize() which only wrote to std err. Thanks to Gary Gregory. |
ggregory |
|
Bump mockito.version from 4.8.0 to 4.11.0 #328, #331, #340, #348. Thanks to Dependabot. |
ggregory |
|
Bump pmd from 6.50.0 to 6.53.0. Thanks to Gary Gregory. |
ggregory |
|
Bump memoryfilesystem from 2.3.0 to 2.5.0 #330, #359. Thanks to Dependabot. |
ggregory |
|
Bump slf4j-api from 2.0.3 to 2.0.7 #329, #333, #341, #371. Thanks to Dependabot. |
kinow |
|
Bump japicmp from 0.16.0 to 0.17.1. Thanks to Gary Gregory. |
ggregory |
|
Bump commons-parent from 54 to 56 #339, #349. Thanks to Dependabot. |
ggregory |
|
Bump zstd-jni from 1.5.2-5 to 1.5.4-2 #362, #364. Thanks to Dependabot. |
kinow |
|
Bump asm from 9.4 to 9.5 #376. Thanks to Dependabot. |
kinow |
Release 1.22 – 2022-11-01
Type |
Changes |
By |
|
Fix some compiler warnings in pack200 packages. Thanks to Gary Gregory. |
ggregory |
|
Close File input stream after unpacking in Pack200UnpackerAdapter.unpack(File, JarOutputStream). Thanks to Gary Gregory. |
ggregory |
|
Pack200UnpackerAdapter.unpack(InputStream, JarOutputStream) should not close its given input stream. Thanks to Gary Gregory. |
ggregory |
|
Fix minor problem in examples. Fixes COMPRESS-596. Thanks to Tamas Mucs. |
Peter Lee |
|
Add a limit to the copy buffer in IOUtils.readRange() to
avoid reading more from a channel than asked for.
Github Pull Request #214. Fixes COMPRESS-584. Thanks to Matthijs Laan, Peter Lee. |
matthijsln |
|
Documentation nits #217. Thanks to Helder Magalhães, Gary Gregory, PeterAlfredLee. |
ggregory |
|
Replace wrapper Collections.sort is with an instance method directly. #245. Thanks to Arturo Bernal. |
ggregory |
|
Replace manual comparisons with Comparator.comparingInt() #244. Thanks to Arturo Bernal. |
ggregory |
|
Replace manual copy of array contents with System.arraycopy() #246. Thanks to Arturo Bernal. |
ggregory |
|
Fix thread safety issues when encoding 7z password #248. Thanks to Glavo, Bruno P. Kinoshita, PeterAlfredLee, Gary Gregory. |
ggregory |
|
bzip2: calculate median-of-3 on unsigned values #242. Thanks to Peter Dettman. |
ggregory |
|
Use Math.min and Math.max calculations. #247. Thanks to Arturo Bernal, Gary Gregory, Bruno P. Kinoshita. |
ggregory |
|
Expander should be able to work if an entry's name is "./". Fixes COMPRESS-603. Thanks to Matt Sicker. |
Peter Lee |
|
Ensure compatibility with Java 8 #252. Fixes COMPRESS-604. Thanks to Andre Brait. |
ggregory |
|
Use StringBuilder instead of StringBuffer. #284. Thanks to Arturo Bernal. |
ggregory |
|
Inline variable. Remove redundant local variable. #283. Thanks to Arturo Bernal. |
ggregory |
|
Use compare method #285. Thanks to Arturo Bernal. |
ggregory |
|
Remove Unnecessary interface modifiers #281. Thanks to Arturo Bernal. |
ggregory |
|
Avoid use C-style array declaration. #282. Thanks to Arturo Bernal. |
ggregory |
|
ChecksumVerifyingInputStream.read() does not always validate checksum at end-of-stream. Thanks to Gary Gregory. |
ggregory |
|
Fix TarFileTest #289. Thanks to Matt Juntunen. |
ggregory |
|
Update Wikipedia link in TarUtils.java:627. Fixes COMPRESS-625. Thanks to MrBump, Gary Gregory. |
ggregory |
|
OutOfMemoryError on malformed pack200 input (attributes). Fixes COMPRESS-626. Thanks to Andrii Hudz, Gary Gregory. |
ggregory |
|
OutOfMemoryError on malformed pack200 input (org.apache.commons.compress.harmony.pack200.NewAttributeBands.readNextUnionCase). Fixes COMPRESS-628. Thanks to Andrii Hudz, Gary Gregory. |
ggregory |
|
OutOfMemoryError on malformed unpack200 input (org.apache.commons.compress.harmony.unpack200.NewAttributeBands.readNextUnionCase). Fixes COMPRESS-628. Thanks to Gary Gregory. |
ggregory |
|
Some input streams are not closed in org.apache.commons.compress.harmony.pack200.PackingUtils. Thanks to Gary Gregory. |
ggregory |
|
Pack200 causes a 'archive.3E' error if it’s not in the system class loader. Fixes COMPRESS-627. Thanks to anatawa12, Gary Gregory. |
ggregory |
|
Migrate ZIP package to use NIO #236. Fixes COMPRESS-602. Thanks to Postelnicu George, Gary Gregory. |
ggregory |
|
Add APK file extension constants: ArchiveStreamFactory.APK, APKM, APKS, XAPK. Thanks to Gary Gregory. |
ggregory |
|
ArchiveStreamFactory.createArchiveInputStream(String, InputStream, String) supports the "APK" format (it's a JAR). Thanks to Gary Gregory. |
ggregory |
|
Expander example now has NIO Path versions of IO File APIs. Thanks to Gary Gregory. |
ggregory |
|
Improve TAR support for file times #254. Fixes COMPRESS-612. Thanks to Andre Brait, Gary Gregory. |
ggregory |
|
Add SevenZArchiveEntry.setContentMethods(SevenZMethodConfiguration...). Thanks to Gary Gregory. |
ggregory |
|
Bump actions/cache from 2.1.6 to 3.0.10 #230, #257, #305, #320. Thanks to Dependabot, Gary Gregory. |
kinow |
|
Bump actions/checkout from 2.3.4 to 3.1.0 #226, #227, #251, #300, #321. Thanks to Dependabot, Gary Gregory. |
ggregory |
|
Bump actions/setup-java from 2 to 3.5.1 #278. Thanks to Dependabot. |
kinow |
|
Bump github/codeql-action from 1 to 2 #287. Thanks to Dependabot. |
kinow |
|
Bump mockito-core from 3.11.1 to 4.6.1 #209, #224, #231, #235, #243, #253, #286, #294. Thanks to Dependabot. |
ggregory |
|
Bump org.apache.felix.framework from 7.0.0 to 7.0.1 #208. Thanks to Dependabot. |
ggregory |
|
Bump memoryfilesystem from 2.1.0 to 2.3.0 #212, #237. Thanks to Dependabot. |
ggregory |
|
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. |
ggregory |
|
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. Fixes COMPRESS-582. Thanks to Alex Landau, Stephan, Gary Gregory. |
ggregory |
|
Bump asm from 9.2 to 9.4 #279, #322. Thanks to Dependabot. |
kinow |
|
Bump maven-javadoc-plugin from 3.3.0 to 3.4.1 #221, #249, #288, #308. Thanks to Dependabot. |
ggregory |
|
Bump maven-pmd-plugin from 3.14.0 to 3.19.0 #296, #309, #311. Thanks to Gary Gregory, Dependabot. |
ggregory |
|
Bump pmd from 6.44.0 to 6.50.0. Thanks to Gary Gregory. |
ggregory |
|
Bump commons.japicmp.version from 0.15.3 to 0.16.0. Thanks to Gary Gregory. |
kinow |
|
Bump maven-bundle-plugin from 5.1.2 to 5.1.8 #234, #239, #290, #292, #301, #304. Thanks to Dependabot. |
ggregory |
|
Bump org.apache.felix.framework from 7.0.1 to 7.0.5 #232, #295. Thanks to Dependabot. |
ggregory |
|
Bump slf4j-api from 1.7.30 to 2.0.3 #213, #241, #258, #310, #314, #315, #318. Thanks to Dependabot. |
kinow |
|
Bump commons-parent from 52 to 54 #280. Thanks to Dependabot, Gary Gregory. |
kinow |
|
Bump commons.jacoco.version from 0.8.7 to 0.8.8. Thanks to Gary Gregory. |
ggregory |
|
Bump junit.version from 5.8.2 to 5.9.1 #302, #317. Thanks to Dependabot. |
kinow |
|
Bump mockito.version from 4.6.1 to 4.8.0 #307, #312. Thanks to Dependabot. |
kinow |
|
Bump maven-surefire-plugin from 3.0.0-M6 to 3.0.0-M7. Thanks to Gary Gregory. |
ggregory |
Release 1.21 – 2021-07-12
Type |
Changes |
By |
|
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. Fixes COMPRESS-504. |
|
|
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. Fixes COMPRESS-505. |
|
|
Fix bugs in random access of 7z. Exceptions are thrown
when reading the first entry multiple times by random
access. Fixes 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. Fixes COMPRESS-509. Thanks to Petr Vasak. |
PeterLee |
|
Removed the PowerMock dependency. Fixes 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. Fixes COMPRESS-516. |
|
|
Improved parsing of X5455_ExtendedTimestamp ZIP extra field. Fixes 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. Fixes COMPRESS-518. |
|
|
Improved detection of corrupt ZIP archives in ZipArchiveInputStream. Fixes COMPRESS-523. |
|
|
Added improved checks to detect corrupted deflate64 streams and
throw the expected IOException rather than obscure
RuntimeExceptions.
See also COMPRESS-522, COMPRESS-525, COMPRESS-526, and COMPRESS-527. Fixes COMPRESS-521. |
|
|
Add the archive name in the exception in the constructor of
ZipFile to make it a more specific exception.
Github Pull Request #102. Fixes COMPRESS-515. Thanks to ian-lavallee. |
|
|
Throw IOException when it encounters a non-number while parsing pax header. Fixes COMPRESS-530. |
|
|
Throw IOException when a tar archive contains a PAX header
without any normal entry following it. Fixes COMPRESS-531. |
|
|
Added improved checks to detect corrupted IMPLODED streams and
throw the expected IOException rather than obscure
RuntimeExceptions. Fixes 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. Fixes COMPRESS-529. |
|
|
Made an inner class static
Github Pull Request #107. Fixes COMPRESS-536. Thanks to Jin Xu. |
|
|
added an early exit to a loop in BZip2CompressorOutputStream
Github Pull Request #106. Fixes 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. Fixes COMPRESS-404. Thanks to theobisproject. |
|
|
Reuse the record buffer in TarArchiveInputStream. Fixes COMPRESS-539. Thanks to Robin Schimpf. |
|
|
Add SevenZOutputFile.write(InputStream). Thanks to Gary Gregory. |
ggregory |
|
Add SevenZOutputFile.write(Path, OpenOption...). Thanks to Gary Gregory. |
ggregory |
|
Add SevenZOutputFile.createArchiveEntry(Path, String, LinkOption...). Thanks to Gary Gregory. |
ggregory |
|
Add ArArchiveOutputStream.createArchiveEntry(Path, String, LinkOption...). Thanks to Gary Gregory. |
ggregory |
|
Add ArArchiveEntry(Path, String, LinkOption...). Thanks to Gary Gregory. |
ggregory |
|
Add ctor CpioArchiveEntry(Path, String, LinkOption...). Thanks to Gary Gregory. |
ggregory |
|
Add ctor CpioArchiveEntry(short, Path, String, LinkOption...). Thanks to Gary Gregory. |
ggregory |
|
Add CpioArchiveEntry.setTime(FileTime). Thanks to Gary Gregory. |
ggregory |
|
Add TarArchiveOutputStream.createArchiveEntry(Path, String, LinkOption...). Thanks to Gary Gregory. |
ggregory |
|
Add ctor TarArchiveEntry(Path, String, LinkOption...). Thanks to Gary Gregory. |
ggregory |
|
Add IOUtils.EMPTY_LINK_OPTIONS. Thanks to Gary Gregory. |
ggregory |
|
Add Path support to ZipArchiveOutputStream #123. Thanks to Gary Gregory. |
ggregory |
|
Fix for test fails on Windows. The tests are failing because the
default charset is not UTF-8. Fixes COMPRESS-543. Thanks to wulf2333. |
PeterLee |
|
TarArchiveInputStream can not detect a truncated tar in skip()
and skipRecordPadding(). Fixes COMPRESS-544. Thanks to Aditya Prasad. |
PeterLee |
|
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. Fixes COMPRESS-542. Thanks to theobisproject. |
theobisproject |
|
ZipArchiveInputStream should throw an exception if a corrputed
zip64 extra field is met. Fixes COMPRESS-546. Thanks to Maksim Zuev. |
PeterLee |
|
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. |
PeterLee |
|
Throw an IOException when reading the ZIP extra field if the
length is too short. Fixes COMPRESS-548. Thanks to Maksim Zuev. |
PeterLee |
|
Throw an declared IOException if a null entry is met when
reading a global pax header instead of a runtime NPE. Fixes COMPRESS-554. Thanks to Maksim Zuev. |
PeterLee |
|
ZIP extraction could lead to ArrayIndexOutOfBoundsExceptions
rather than the expected IOException. Fixes COMPRESS-545. Thanks to Maksim Zuev. |
PeterLee |
|
Add asserts for Arrays.copyOf in X0017_StrongEncryptionHeader. Fixes COMPRESS-547. Thanks to Maksim Zuev. |
PeterLee |
|
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. Fixes COMPRESS-550. Thanks to Scott Frederick. |
PeterLee |
|
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. |
PeterLee |
|
The length validation in TarArchiveInputStream.parsePaxHeaders
should also consider the headers with length smaller than 1
and ignore these headers. Fixes COMPRESS-553. Thanks to Maksim Zuev. |
PeterLee |
|
Fix accidentally added '/' to file names.
This problem is caused by the incomplete fix of
COMPRESS-509.
Github Pull Request #151. Fixes COMPRESS-558. Thanks to Robin Schimpf. |
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. Fixes COMPRESS-560. Thanks to Robin Schimpf. |
Robin Schimpf |
|
SparseFilesTest#testExtractPaxGNU should be skipped
if the version of GNU tar binary is 1.28.
Github Pull Request #152. Fixes COMPRESS-559. Thanks to Robin Schimpf. |
Robin Schimpf |
|
Some minor improvements.
Github Pull Request #157. Fixes COMPRESS-561. Thanks to Arturo Bernal. |
Arturo Bernal |
|
Added support for random access to the TAR packages.
Github Pull Request #113. Fixes COMPRESS-540. Thanks to Robin Schimpf. |
Robin Schimpf |
|
Added support for BufferPool in ZstdCompressorInputStream.
Github Pull Request #165. Fixes COMPRESS-565. Thanks to Michael L Heuer. |
PeterLee |
|
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. Fixes COMPRESS-567. |
|
|
Commons Compress cannot be built with JDK14 due to Pack200 removal.
Add Pack200 implementation from Apache Harmony. Fixes COMPRESS-507. Thanks to Gary Gregory, Apache Harmony. |
ggregory |
|
Simplify Assertions #205. Thanks to Arturo Bernal. |
ggregory |
|
Update from Java 7 to 8. |
|
|
Update GitHub actions/checkout from v1 to v2.3.4, #114, #124, #139, #150. Thanks to Dependabot. |
ggregory |
|
Update actions/setup-java from v1.4.0 to v2, #125, #133, #141. Thanks to Dependabot, Gary Gregory. |
ggregory |
|
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. |
ggregory |
|
Update tests slf4j-api from 1.7.26 to 1.7.30 #117. Thanks to Dependabot. |
ggregory |
|
Update maven-pmd-plugin from 3.12.0 to 3.14.0, #115, #154. Thanks to Dependabot. |
ggregory |
|
Update maven-bundle-plugin from 3.5.1 to 5.1.2 #116, #180. Thanks to Dependabot. |
ggregory |
|
Bump memoryfilesystem from 1.3.0 to 2.1.0 #131. Thanks to Dependabot. |
ggregory |
|
Bump actions/cache from v2 to v2.1.6, #164, #200. Thanks to Dependabot. |
ggregory |
|
Bump junit from 4.13 to 4.13.2, #143, #167. Thanks to Dependabot. |
ggregory |
|
Bump mockito-core from 1.10.19 to 3.11.1, #161, #170, #204. Thanks to Dependabot. |
ggregory |
|
Bump commons.jacoco.version from 0.8.5 to 0.8.7 (Java 16 builds). Thanks to Gary Gregory. |
ggregory |
|
Bump org.apache.felix:org.apache.felix.framework from 6.0.3 to 7.0.0 (Java 16 builds). Thanks to Gary Gregory. |
ggregory |
|
Bump commons.japicmp.version from 0.14.3 to 0.15.3 (Java 16 builds). Thanks to Gary Gregory. |
ggregory |
|
Bump commons.javadoc.version from 3.2.0 to 3.3.0. Thanks to Gary Gregory. |
ggregory |
|
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. Fixes COMPRESS-569. |
|
|
OSGi detection was broken and so we always cached whether
XZ/brotli/zstd/LZMA have been available even in OSGi
environments. Fixes COMPRESS-552. |
|
|
SevenZFile.getEntries now return a copy of entries. Fixes COMPRESS-571. |
|
|
Update com.github.luben:zstd-jni from 1.4.8-7 to 1.4.9-1 #176. Thanks to Dependabot. |
PeterLee |
|
Handling of sparse tar entries has been hardened to ensure bad
inputs cause expected IOExceptions rather than RuntimeExceptions. Fixes COMPRESS-575. |
|
|
Update org.tukaani:xz from 1.8 to 1.9 |
|
|
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. Fixes COMPRESS-565. Thanks to Evgenii Bovykin. |
PeterLee |
|
Some minor improvements.
Github Pull Request #193. Fixes COMPRESS-577. Thanks to Arturo Bernal. |
Arturo Bernal |
|
Java8 improvements.
Github Pull Request #194. Fixes COMPRESS-578. Thanks to Arturo Bernal. |
Arturo Bernal |
|
Remove redundant local variable.
Github Pull Request #195. Fixes COMPRESS-579. Thanks to Arturo Bernal. |
Arturo Bernal |
|
Remove redundant operation
Github Pull Request #196. Fixes COMPRESS-580. Thanks to Arturo Bernal. |
Arturo Bernal |
|
gzip deflate buffer size is now configurable. Fixes COMPRESS-566. Thanks to Brett Okken. |
|
|
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. |
|
|
Call enableRelaxedEndCondition() to enable decoding of 7z
files containing LZMA streams with end marker.
Github Pull Request #223. Fixes COMPRESS-591. Thanks to Lasse Collin. |
Peter Lee |
|
Use LinkedHashMap for fileMap in SevenZFile.readFilesInfo,
as it will be read in specific order. Fixes COMPRESS-592. Thanks to Roland Kreuzer. |
Peter Lee |
Release 1.20 – 2020-02-08
Type |
Changes |
By |
|
Update optional library com.github.luben:zstd-jni from 1.4.0-1 to 1.4.4-7. Fixes COMPRESS-493. |
|
|
Update tests from org.apache.felix:org.apache.felix.framework 6.0.2 to 6.0.3. |
|
|
SevenZFile could throw NullPointerException rather than
IOException for certain archives. In addition it now handles
certain empty archives more gracefully. Fixes COMPRESS-492. |
|
|
Deflate64CompressorInputStream.read would return 0 for some
inputs in violation of the InputStream.read contract. Fixes COMPRESS-491. |
|
|
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. Fixes COMPRESS-495. |
|
|
SevenZFile can now recover from a certain corruption that
seems to happen occasionally when split archives are created. Fixes COMPRESS-497. Thanks to Stefan Schlott. |
|
|
Added random access support to SevenZFile. Fixes COMPRESS-342. Thanks to Peter Alfred Lee. |
|
|
Added support for split ZIP archives. Fixes COMPRESS-477. Thanks to Peter Alfred Lee. |
|
|
Added support for reading sparse entries to the TAR package. Fixes COMPRESS-124. Thanks to Peter Alfred Lee. |
|
|
SeekableInMemoryByteChannel's truncate didn't set position
according to the spec in an edge case. Fixes 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. |
|
|
Update JUnit from 4.12 to 4.13. |
|
Release 1.19 – 2019-08-27
Type |
Changes |
By |
|
ZipArchiveInputStream could forget the compression level has
changed under certain circumstances. |
|
|
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. Fixes COMPRESS-466. |
|
|
TarArchiveInputStream has a new constructor-arg lenient that
can be used to accept certain broken archives. Fixes COMPRESS-469. |
|
|
Fixed another potential resource leak in
ParallelScatterZipCreator#writeTo. Fixes COMPRESS-470. |
|
|
ArjArchiveEntry and SevenZArchiveEntry now implement hashCode
and equals. Fixes COMPRESS-475. |
|
|
ArArchiveInputStream could think it had hit EOF prematurely.
Github Pull Request #74. Thanks to Alex Bertram. |
|
|
SevenZFile now provides a way to cap memory consumption for
LZMA(2) compressed content.
Github Pull Request #76. Fixes COMPRESS-481. Thanks to Robin Schimpf. |
|
|
The ARJ package has been updated to contain constants for more
recent specifications. Fixes COMPRESS-464. Thanks to Rostislav Krasny. |
|
|
Update optional library zstd-jni from 1.3.3-3 to 1.4.0-1. Fixes 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. Fixes COMPRESS-485. Thanks to Hervé Boutemy, Tibor Digana. |
|
|
Throw IOException rather than RuntimeExceptions for certain
malformed LZ4 or Snappy inputs. Fixes COMPRESS-490. |
|
|
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. Fixes 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. Fixes COMPRESS-479. |
|
|
ZipArchiveInputStream failed to read stored entries with a
data descriptor if the data descriptor didn't use the
signature invented by InfoZIP. Fixes COMPRESS-482. |
|
|
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. Fixes COMPRESS-483. |
|
|
Added a MultiReadOnlySeekableByteChannel class
that can be used to concatenate the parts of a multi volume 7z
archive so that SevenZFile can read them. Fixes COMPRESS-231. Thanks to Tim Underwood. |
|
|
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. Fixes COMPRESS-478. |
|
|
NioZipEncoding#encode could enter an infinite loop for certain
inputs. |
|
Release 1.18 – 2018-08-16
Type |
Changes |
By |
|
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 DidierLoiseau. |
|
|
Changed the OSGi Import-Package to also optionally import
javax.crypto so encrypted archives can be read. Fixes 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. Fixes 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. Fixes COMPRESS-455. |
|
|
The cpio streams didn't handle archives using a multi-byte
encoding properly. Fixes COMPRESS-459. Thanks to Jens Reimann. |
|
|
It is now possible to specify the arguments of zstd-jni's
ZstdOutputStream constructors via Commons Compress as well. Fixes COMPRESS-460. Thanks to Carmi Grushko. |
|
|
ZipArchiveInputStream#read would silently return -1 on a
corrupted stored entry and even return > 0 after hitting the
end of the archive. Fixes COMPRESS-463. |
|
|
ArArchiveInputStream#read would allow to read from the stream
without opening an entry at all. Fixes COMPRESS-462. |
|
Release 1.17 – 2018-06-03
Type |
Changes |
By |
|
Removed the objenesis dependency from the pom as it is not
needed at all. |
|
|
Fixed resource leak in ParallelScatterZipCreator#writeTo. Fixes COMPRESS-446. |
|
|
Fixed some code examples.
Github Pull Request #63. Thanks to Marchenko Sergey. |
|
|
Certain errors when parsing ZIP extra fields in corrupt
archives are now turned into ZipException, they used to
manifest as ArrayIndexOutOfBoundsException before. Fixes COMPRESS-447. |
|
|
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. Fixes COMPRESS-445. Thanks to Andreas Beeker. |
|
|
Added a unit test that is supposed to fail if we break the
OSGi manifest entries again. Fixes COMPRESS-443. |
|
|
Add a new SkipShieldingInputStream class that can be used with
streams that throw an IOException when skip is invoked. Fixes COMPRESS-449. |
|
|
IOUtils.copy now verifies the buffer size is bigger than 0. Fixes COMPRESS-451. |
|
|
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. Fixes COMPRESS-452. |
|
|
Added a workaround for a bug in AdoptOpenJDK for S/390 to
BZip2CompressorInputStream. Fixes COMPRESS-453. |
|
|
ZipArchiveInputStream failed to read some files with stored
entries using a data descriptor. Fixes COMPRESS-454. |
|
Release 1.16.1 – 2018-02-10
Type |
Changes |
By |
|
Fixed the OSGi manifest entry for imports that has been broken
in 1.16. Fixes COMPRESS-442. |
|
Release 1.16 – 2018-02-05
Type |
Changes |
By |
|
Add read-only support for Zstandard compression based on the
Zstd-jni project. Fixes COMPRESS-423. Thanks to Andre F de Miranda. |
|
|
Added auto-detection for Zstandard compressed streams. Fixes COMPRESS-425. |
|
|
Synchronized iteration over a synchronizedList in ParallelScatterZipCreator. Fixes COMPRESS-430. Thanks to Bruno P. Kinoshita. |
|
|
ZipFile could get stuck in an infinite loop when parsing ZIP
archives with certain strong encryption headers. Fixes COMPRESS-432. |
|
|
Replaces instanceof checks with a type marker in LZ77 support code. Fixes COMPRESS-435. Thanks to BELUGA BEHR. |
|
|
Added write-support for Zstandard compression. Fixes COMPRESS-426. |
|
|
Added improved checks to detect corrupted bzip2 streams and
throw the expected IOException rather than obscure
RuntimeExceptions. Fixes COMPRESS-424. |
|
|
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. Fixes COMPRESS-429. Thanks to Damiano Albani. |
|
|
Added read-only DEFLATE64 support to ZIP archives and as
stand-alone CompressorInputStream. Fixes COMPRESS-380. Thanks to Christian Marquez Grabia. |
|
|
ZipFile.getInputStream will now always buffer the stream
internally in order to improve read performance. Fixes COMPRESS-438. |
|
|
Speed improvement for DEFLATE64 decompression. Fixes COMPRESS-440. Thanks to Dawid Weiss. |
|
|
Added read-only DEFLATE64 support to 7z archives. Fixes COMPRESS-437. |
|
|
Added a few extra sanity checks for the rarer compression
methods used in ZIP archives. Fixes COMPRESS-436. |
|
|
Simplified the special handling for the dummy byte required by
zlib when using java.util.zip.Inflater. Fixes 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 – 2017-10-17
Type |
Changes |
By |
|
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. Fixes COMPRESS-394. |
|
|
Don't use a data descriptor in ZIP archives when copying a raw
entry that already knows its size and CRC information. Fixes COMPRESS-395. |
|
|
Travis build redundantly repeats compilation and tests redundantly #43. Fixes COMPRESS-413. Thanks to Simon Spero. |
|
|
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. Fixes COMPRESS-397. |
|
|
The MANIFEST of 1.14 lacks an OSGi Import-Package for XZ for
Java. Fixes COMPRESS-396. |
|
|
BUILDING.md now passes the RAT check. Fixes COMPRESS-406. Thanks to Simon Spero. |
|
|
Added a new utility class FixedLengthBlockOutputStream that
can be used to ensure writing always happens in blocks of a
given size. Fixes COMPRESS-405. Thanks to Simon Spero. |
|
|
Made sure ChecksumCalculatingInputStream receives valid
checksum and input stream instances via the constructor. Fixes 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.
At the same time the default block size in
TarArchiveOutputStream has been changed from 10240 to 512
bytes. Fixes COMPRESS-407. Thanks to Simon Spero. |
|
|
It is now possible to specify/read custom PAX headers when
writing/reading tar archives. Fixes COMPRESS-400. Thanks to Simon Spero. |
|
|
Fixed class names of CpioArchiveEntry and
CpioArchiveInputStream in various Javadocs. Fixes 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. Fixes COMPRESS-416. Thanks to Simon Spero. |
|
|
Removed ZipEncoding code that became obsolete when we started
to require Java 5 as baseline long ago. Fixes 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. Fixes COMPRESS-417. |
|
|
When reading tar headers with name fields containing embedded
NULs, the name will now be terminated at the first NUL byte. Fixes COMPRESS-421. Thanks to Roel Spilker. |
|
|
Simplified TarArchiveOutputStream by replacing the internal
buffering with new class FixedLengthBlockOutputStream. Fixes COMPRESS-409. |
|
Release 1.14 – 2017-05-14
Type |
Changes |
By |
|
SnappyCompressorInputStream slides the window too early
leading to ArrayIndexOutOfBoundsExceptions for some streams. Fixes COMPRESS-378. |
|
|
Added write support for Snappy. Fixes COMPRESS-246. |
|
|
The blocksize for FramedSnappyCompressorInputStream can now be
configured as some IWA files seem to be using blocks larger
than the default 32k. Fixes COMPRESS-358. |
|
|
ZipArchiveEntry#isUnixSymlink now only returns true if the
corresponding link flag is the only file-type flag set. Fixes COMPRESS-379. Thanks to Guillaume Boué. |
|
|
Added support for LZ4 (block and frame format). Fixes COMPRESS-271. |
|
|
BZip2CompressorInputstream now uses BitInputStream internally.
Pull Request #13. Thanks to Thomas Meyer. |
|
|
Fixed an integer overflow in CPIO's CRC calculation.
Pull Request #17. Thanks to Daniel Collin. |
|
|
Add static detect(InputStream in) to CompressorStreamFactory
and ArchiveStreamFactory. Fixes COMPRESS-385. |
|
|
Make unit tests work on Windows paths with spaces in their names. Fixes COMPRESS-387. |
|
|
Improved performance for concurrent reads from ZipFile when
reading from a file. Fixes COMPRESS-388. Thanks to Zbynek Vyskovsky. |
|
|
Added a way to limit amount of memory ZCompressorStream may
use. Fixes COMPRESS-382. Thanks to Tim Allison. |
|
|
Added a way to limit amount of memory ZCompressorStream may
use. Fixes COMPRESS-386. Thanks to Tim Allison. |
|
|
Added a way to limit amount of memory LZMACompressorStream and
XZCompressorInputStream may use. Fixes COMPRESS-382. Thanks to Tim Allison. |
|
|
Internal location pointer in ZipFile could get incremented
even if nothing had been read. Fixes COMPRESS-389. |
|
|
Add Brotli decoder based on the Google Brotli library. Fixes COMPRESS-392. Thanks to Philippe Mouawad. |
|
|
ZipEntry now exposes its data offset. Fixes COMPRESS-390. Thanks to Zbynek Vyskovsky. |
|
|
LZMACompressorOutputStream#flush would throw an exception
rather than be the NOP it promised to be. Fixes COMPRESS-393. |
|
|
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. Fixes COMPRESS-391. Thanks to Zbynek Vyskovsky. |
|
Release 1.13 – 2016-12-29
Type |
Changes |
By |
|
Update Java requirement from 6 to 7. Fixes COMPRESS-360. |
ggregory |
|
BitInputStream could return bad results when overflowing
internally - if two consecutive reads tried to read more than
64 bits. Fixes COMPRESS-363. |
|
|
Clarified which TarArchiveEntry methods are useless for
entries read from an archive. Fixes COMPRESS-366. |
|
|
ZipArchiveInputStream.closeEntry does not properly advance to
next entry if there are junk bytes at end of data section. Fixes COMPRESS-364. Thanks to Mike Mole. |
|
|
SevenZFile, SevenZOutputFile, ZipFile and
ZipArchiveOutputStream can now work on non-file resources if
they can be accessed via SeekableByteChannel. Fixes COMPRESS-327. |
|
|
Allow compressor extensions through a standard JRE ServiceLoader. Fixes COMPRESS-368. |
|
|
Allow archive extensions through a standard JRE ServiceLoader. Fixes COMPRESS-369. |
|
|
Add write support for the legacy LZMA format, this requires XZ
for Java 1.6. Fixes COMPRESS-373. |
|
|
Add write support for the legacy LZMA stream to 7z, this
requires XZ for Java 1.6. Fixes COMPRESS-374. |
|
|
Allow the clients of ParallelScatterZipCreator to provide
ZipArchiveEntryRequestSupplier. Fixes COMPRESS-375. Thanks to Plamen Totev. |
|
|
ZipArchiveInputStream now throws an Exception if it encounters
a broken ZIP archive rather than signaling end-of-archive. Fixes COMPRESS-367. Thanks to Mike Mole. |
|
|
ScatterZipOutputStream didn't close the StreamCompressor
causing a potential resource leak. Fixes COMPRESS-377. |
|
|
Add a version-independent link to the API docs of the latest
release. Fixes COMPRESS-372. |
|
Release 1.12 – 2016-06-21
Type |
Changes |
By |
|
Update requirement from Java 5 to 6. Fixes COMPRESS-349. |
ggregory |
|
TarArchiveEntry wastefully allocates empty arrays. Fixes COMPRESS-350. |
ggregory |
|
SevenZFile.read() throws an IllegalStateException for empty entries. Fixes COMPRESS-348. |
|
|
Javadoc for BZip2CompressorInputStream(InputStream, boolean) should refer to IOEx, not NPE. Fixes COMPRESS-353. |
ggregory |
|
PureJavaCrc32C in the snappy package is now final so it is now
safe to call a virtual method inside the constructor. Fixes COMPRESS-354. |
|
|
TarArchiveInputStream failed to parse PAX headers that
included blank lines. Fixes COMPRESS-355. Thanks to Jeremy Gustie. |
|
|
TarArchiveInputStream failed to parse PAX headers whose tar
entry name ended with a slash. Fixes COMPRESS-356. Thanks to Jeremy Gustie. |
|
|
FramedSnappyCompressorInputStream now supports the dialect of
Snappy used by the IWA files contained within the ZIP archives
used in Apple's iWork 13 files. Fixes COMPRESS-352. |
|
|
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. Fixes 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. Fixes COMPRESS-357. |
|
Release 1.11 – 2016-04-06
Type |
Changes |
By |
|
TarArchiveInputStream now supports reading global PAX headers. Fixes COMPRESS-347. |
|
|
The PAX headers for sparse entries written by star are now
applied. Fixes COMPRESS-346. |
|
|
GNU sparse files using one of the PAX formats are now
detected, but cannot be extracted. Fixes COMPRESS-345. |
|
|
ArArchiveInputStream can now read GNU extended names that are
terminated with a NUL byte rather than a linefeed. Fixes COMPRESS-344. |
|
|
New method SevenZFile.getEntries can be used to list the
contents of a 7z archive. Fixes COMPRESS-341. |
|
|
Native Memory Leak in Sevenz-DeflateDecoder. Fixes COMPRESS-343. Thanks to Rene Preissel. |
|
|
When using Zip64Mode.Always also use ZIP64 extensions inside
the central directory.
GitHub Pull Request #10 Thanks to Matt Hovey. |
|
|
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. Fixes COMPRESS-340. Thanks to Dawid Weiss. |
|
|
file names of tar archives using the xstar format are now
parsed properly. Fixes COMPRESS-336. |
|
|
checksums of tars that pad the checksum field to the left are
now calculated properly. Fixes COMPRESS-335. |
|
|
ArArchiveInputStream failed to read past the first entry when
BSD long names have been used. Fixes COMPRESS-334. Thanks to Jeremy Gustie. |
|
|
Added buffering for random access which speeds up 7Z support. Fixes 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. Fixes COMPRESS-331. |
|
|
ZipFile.getRawInputStream() is now part of the public API. Fixes COMPRESS-323. |
|
|
SnappyCompressorInputStream and
FramedSnappyCompressorInputStream returned 0 at the end of the
stream under certain circumstances. Fixes COMPRESS-332. |
|
|
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. Fixes COMPRESS-328. |
|
|
Adjusted unit test to updates in Java8 and later that change
the logic of ZipEntry#getTime. Fixes 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. Fixes COMPRESS-324. |
|
|
ArrayIndexOutOfBoundsException when InfoZIP type 7875 extra
fields are read from the central directory. Fixes COMPRESS-321. |
|
|
Added read-only support for bzip2 compression used inside of
ZIP archives.
GitHub Pull Request #4. Thanks to Sören Glimm. |
|
Release 1.10 – 2015-08-18
Type |
Changes |
By |
|
ArrayIndexOutOfBoundsException when ZIP extra fields are read
and the entry contains an UnparseableExtraField. Fixes COMPRESS-317. Thanks to Lucas Werkmeister. |
|
|
CompressorStreamFactory can now auto-detect DEFLATE streams
with ZLIB header. Fixes COMPRESS-316. Thanks to Nick Burch. |
|
|
TarArchiveInputStream can now read entries with group or
user ids > 0x80000000. Fixes COMPRESS-314. |
|
|
TarArchiveOutputStream can now write entries with group or
user ids > 0x80000000. Fixes COMPRESS-315. |
|
|
CompressorStreamFactory can now auto-detect LZMA streams. Fixes COMPRESS-313. |
|
|
TarArchiveEntry's constructor with a File and a String arg
didn't normalize the name. Fixes COMPRESS-312. |
|
|
ZipEncodingHelper no longer reads system properties directly
to determine the default charset. Fixes COMPRESS-308. |
|
|
BZip2CompressorInputStream#read would return -1 when asked to
read 0 bytes. Fixes COMPRESS-309. |
|
|
ArchiveStreamFactory fails to pass on the encoding when creating some streams.
* ArjArchiveInputStream
* CpioArchiveInputStream
* DumpArchiveInputStream
* JarArchiveInputStream
* TarArchiveInputStream
* JarArchiveOutputStream. Fixes 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. Fixes 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. Fixes COMPRESS-303. |
|
|
SevenZFile now throws the specific PasswordRequiredException
when it encounters an encrypted stream but no password has
been specified. Fixes COMPRESS-298. |
|
|
Improved error message when tar encounters a groupId that is
too big to write without using the STAR or POSIX format. Fixes COMPRESS-290. Thanks to Kristian Rosenvold. |
|
|
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. Fixes 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. |
|
|
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. Fixes COMPRESS-297. |
|
|
New methods in ZipArchiveOutputStream and ZipFile allows
entries to be copied from one archive to another without
having to re-compress them. Fixes COMPRESS-295. Thanks to Kristian Rosenvold. |
|
|
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. |
|
Release 1.9 – 2014-10-09
Type |
Changes |
By |
|
Added support for DEFLATE streams without any gzip framing. Fixes COMPRESS-263. Thanks to Matthias Stevens. |
|
|
When reading 7z files unknown file properties and properties
of type kDummy are now ignored. Fixes COMPRESS-287. |
|
|
Expanding 7z archives using LZMA compression could cause an
EOFException. Fixes COMPRESS-286. |
|
|
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. Fixes COMPRESS-285. |
|
|
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. Fixes COMPRESS-289. Thanks to Bob Robertson. |
|
Release 1.8.1 – 2014-05-14
Type |
Changes |
By |
|
The dependency on org.tukaani:xz is now marked as optional. |
|
|
The snappy, ar and tar inputstreams might fail to read from a
non-buffered stream in certain cases. Fixes COMPRESS-270. |
|
|
CompressorStreamFactory can now auto-detect Unix compress
(".Z") streams. Fixes COMPRESS-272. |
|
|
IOUtils#skip might skip fewer bytes than requested even though
more could be read from the stream. Fixes COMPRESS-277. |
|
|
ArchiveStreams now validate there is a current entry before
reading or writing entry data. Fixes COMPRESS-276. |
|
|
ArjArchiveInputStream#canReadEntryData tested the current
entry of the stream rather than its argument. |
|
|
ChangeSet#delete and deleteDir now properly deal with unnamed
entries. Fixes COMPRESS-274. |
|
|
Added a few null checks to improve robustness. Fixes COMPRESS-273. |
|
|
TarArchiveInputStream failed to read archives with empty
gid/uid fields. Fixes COMPRESS-278. |
|
|
TarArchiveInputStream now again throws an exception when it
encounters a truncated archive while reading from the last
entry. Fixes COMPRESS-279. |
|
|
Adapted TarArchiveInputStream#skip to the modified
IOUtils#skip method. Fixes COMPRESS-280. Thanks to BELUGA BEHR. |
|
Release 1.8 – 2014-03-12
Type |
Changes |
By |
|
BZip2CompressorInputStream read fewer bytes than possible from
a truncated stream. Fixes 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. Fixes COMPRESS-253. |
|
|
CompressorStreamFactory.createCompressorInputStream with
explicit compression did not honor decompressConcatenated. Fixes COMPRESS-259. |
|
|
GzipCompressorInputStream now provides access to the same
metadata that can be provided via GzipParameters when writing
a gzip stream. Fixes COMPRESS-260. |
|
|
TarArchiveInputStream will now read archives created by tar
implementations that encode big numbers by not adding a
trailing NUL. Fixes 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. Fixes COMPRESS-264. |
|
|
When writing PAX/POSIX headers for TAR entries with
backslashes or certain non-ASCII characters in their name
TarArchiveOutputStream could fail. Fixes 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. Fixes COMPRESS-267. |
|
|
SevenZOutputFile now supports chaining multiple
compression/encryption/filter methods and passing options to
the methods. Fixes COMPRESS-266. |
|
|
The (compression) method(s) can now be specified per entry in
SevenZOutputFile. Fixes COMPRESS-261. |
|
|
SevenZArchiveEntry "knows" which method(s) have been used to
write it to the archive. Fixes 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. Fixes COMPRESS-257. |
|
Release 1.7 – 2014-01-20
Type |
Changes |
By |
|
SevenZOutputFile#closeArchiveEntry throws an exception when
using LZMA2 compression on Java8. Fixes COMPRESS-241. |
|
|
Read-Only support for Snappy compression. Fixes COMPRESS-147. Thanks to BELUGA BEHR. |
|
|
7z reading of big 64bit values could be wrong. Fixes COMPRESS-244. Thanks to Nico Kruber. |
|
|
Read-Only support for .Z compressed files. Fixes COMPRESS-243. Thanks to Damjan Jovanovic. |
|
|
ZipFile and ZipArchiveInputStream now support reading entries compressed using the
SHRINKING method. Thanks to Damjan Jovanovic. |
|
|
TarArchiveInputStream could fail to read an archive completely. Fixes 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. Fixes COMPRESS-242. |
|
|
GzipCompressorOutputStream now supports setting the compression level and the header metadata
(filename, comment, modification time, operating system and extra flags). Fixes COMPRESS-250. Thanks to Emmanuel Bourg. |
|
|
ZipFile and ZipArchiveInputStream now support reading entries compressed using the IMPLODE method. Fixes COMPRESS-115. Thanks to Emmanuel Bourg. |
|
|
SevenZOutputFile would create invalid archives if more than
six empty files or directories were included. Fixes COMPRESS-252. |
|
|
ZipFile and the 7z file classes now implement Closeable and
can be used in try-with-resources constructs. |
|
Release 1.6 – 2013-10-26
Type |
Changes |
By |
|
TarBuffer.tryToConsumeSecondEOFRecord could throw a
NullPointerException. Fixes COMPRESS-223. Thanks to Jeremy Gustie. |
|
|
Added support for 7z archives. Most compression algorithms
can be read and written, LZMA and encryption are only
supported when reading. Fixes COMPRESS-54. Thanks to Damjan Jovanovic. |
|
|
Added read-only support for ARJ archives that don't use
compression. Fixes COMPRESS-226. Thanks to Damjan Jovanovic. |
|
|
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. Fixes 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. Fixes 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. Fixes COMPRESS-227. |
|
|
Readabilty patch to TarArchiveInputStream. Fixes COMPRESS-232. Thanks to BELUGA BEHR. |
|
|
Performance improvements to TarArchiveInputStream, in
particular to the skip method. Fixes COMPRESS-234. Thanks to BELUGA BEHR. |
|
|
CpioArchiveInputStream failed to read archives created by
Redline RPM. Fixes COMPRESS-236. Thanks to Andrew Duffy. |
|
|
TarArchiveOutputStream now properly handles link names that
are too long to fit into a traditional TAR header. Fixes COMPRESS-237. Thanks to Emmanuel Bourg. |
|
|
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. Fixes COMPRESS-111. |
|
|
The auto-detecting create*InputStream methods of Archive and
CompressorStreamFactory could fail to detect the format of
blocking input streams. Fixes COMPRESS-239. |
|
|
ZipEncodingHelper.isUTF8(String) does not check all UTF-8 aliases. Fixes COMPRESS-240. Thanks to Gary Gregory. |
|
Release 1.5 – 2013-03-14
Type |
Changes |
By |
|
Typo in CompressorStreamFactory Javadoc. Fixes COMPRESS-218. Thanks to Gili. |
|
|
Improved exception message if a ZIP archive cannot be read
because of an unsupported compression method. Fixes COMPRESS-188. Thanks to Harald Kuhn. |
|
|
ArchiveStreamFactory has a setting for file name encoding that
sets up encoding for ZIP and TAR streams. Fixes COMPRESS-192. Thanks to Jukka Zitting. |
|
|
ArchiveStreamFactory's tar stream detection created false
positives for AIFF files. Fixes COMPRESS-191. Thanks to Jukka Zitting. |
|
|
TarArchiveEntry now has a method to verify its checksum. Fixes 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. Fixes 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. Fixes COMPRESS-200. Thanks to Christian Schlichtherle. |
|
|
Writing TAR PAX headers failed if the generated entry name
ended with a "/". Fixes COMPRESS-203. |
|
|
ZipArchiveInputStream sometimes failed to provide input to the
Inflater when it needed it, leading to reads returning 0. Fixes COMPRESS-189. Thanks to Daniel Lowe. |
|
|
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. Fixes COMPRESS-208. |
|
|
TarArchiveEntry has a new constructor that allows setting
linkFlag and preserveLeadingSlashes at the same time. Fixes COMPRESS-201. |
|
|
ChangeSetPerformer has a new perform overload that uses a
ZipFile instance as input. Fixes COMPRESS-159. |
|
|
TarArchiveInputStream ignored the encoding for GNU long name
entries. Fixes COMPRESS-212. |
|
|
Garbage collection pressure has been reduced by reusing
temporary byte arrays in classes. Fixes COMPRESS-172. Thanks to Thomas Mair. |
|
|
Can now handle ZIP extra field 0x5455 - Extended Timestamp. Fixes COMPRESS-210. Thanks to Julius Davies. |
|
|
handle ZIP extra field 0x7875 - Info Zip New Unix Extra Field. Fixes COMPRESS-211. Thanks to Julius Davies. |
|
|
ZipShort, ZipLong, ZipEightByteInteger should implement Serializable. Fixes COMPRESS-213. Thanks to Julius Davies. |
|
|
better support for Unix symlinks in ZipFile entries. Fixes COMPRESS-214. Thanks to Julius Davies. |
|
|
ZipFile's initialization has been improved for non-Zip64
archives. Fixes COMPRESS-215. Thanks to Robin Power. |
|
|
TarArchiveInputStream could leave the second EOF record
inside the stream it had just finished reading. Fixes 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. Fixes COMPRESS-205. Thanks to Daniel Lowe. |
|
|
Updated XZ for Java dependency to 1.2 as this version
provides proper OSGi manifest attributes. |
|
|
Fixed a potential ArrayIndexOutOfBoundsException when
reading STORED entries from ZipArchiveInputStream. Fixes COMPRESS-219. |
|
|
CompressorStreamFactory can now be used without XZ for Java
being available. Fixes COMPRESS-221. |
|
|
CompressorStreamFactory has an option to create
decompressing streams that decompress the full input for
formats that support multiple concatenated streams. Fixes COMPRESS-220. |
|
Release 1.4.1 – 2012-05-23
Type |
Changes |
By |
|
Ported libbzip2's fallback sort algorithm to
BZip2CompressorOutputStream to speed up compression in certain
edge cases.
Using specially crafted inputs this can be used as a denial
of service attack. See the security reports page for details. |
|
Release 1.4 – 2012-04-11
Type |
Changes |
By |
|
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. Fixes COMPRESS-183. |
|
|
TarArchiveInputStream failed to parse PAX headers that
contained non-ASCII characters. Fixes COMPRESS-184. |
|
|
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. Fixes COMPRESS-182. |
|
|
Added a workaround for a Bug some tar implementations that add
a NUL byte as first byte in numeric header fields. Fixes COMPRESS-181. |
|
|
Added a workaround for a Bug in WinZIP which uses backslashes
as path separators in Unicode Extra Fields. Fixes COMPRESS-176. |
|
|
ArrayOutOfBounds while decompressing bz2. Added test case - code already seems to have been fixed. Fixes COMPRESS-131. |
|
|
TarArchiveInputStream throws IllegalArgumentException instead of IOException. Fixes COMPRESS-178. |
|
|
TarUtils.formatLongOctalOrBinaryBytes() assumes the field will be 12 bytes long. Fixes COMPRESS-179. |
|
|
GNU Tar sometimes uses binary encoding for UID and GID. Fixes COMPRESS-175. |
|
|
ArchiveStreamFactory.createArchiveInputStream would claim
short text files were TAR archives. Fixes COMPRESS-171. |
|
|
Support for the XZ format has been added. Fixes COMPRESS-156. |
|
|
BZip2CompressorInputStream now optionally supports reading of
concatenated .bz2 files. Fixes COMPRESS-146. |
|
|
GZipCompressorInputStream now optionally supports reading of
concatenated .gz files. Fixes COMPRESS-154. |
|
|
ZipFile didn't work properly for archives using unicode extra
fields rather than UTF-8 filenames and the EFS-Flag. Fixes COMPRESS-164. |
|
|
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. Fixes COMPRESS-16. |
|
|
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. Fixes COMPRESS-165. |
|
|
The tar package can now use the POSIX/PAX variant for writing
entries with names longer than 100 characters. Fixes COMPRESS-166. |
|
|
For corrupt archives ZipFile would throw a RuntimeException in
some cases and an IOException in others. It will now
consistently throw an IOException. Fixes COMPRESS-169. |
|
Release 1.3 – 2011-11-01
Type |
Changes |
By |
|
Support for the Pack200 format has been added. Fixes COMPRESS-142. |
|
|
Read-only support for the format used by the Unix dump(8) tool
has been added. Fixes COMPRESS-132. |
|
|
The ZIP package now supports Zip64 extensions. Fixes COMPRESS-36. |
|
|
The AR package now supports the BSD dialect of storing file
names longer than 16 chars (both reading and writing). Fixes COMPRESS-144. |
|
|
BZip2CompressorInputStream's getBytesRead method always
returned 0. |
|
|
ZipArchiveInputStream and ZipArchiveOutputStream could leak
resources on some JDKs. Fixes COMPRESS-152. |
|
|
TarArchiveOutputStream's getBytesWritten method didn't count
correctly. Fixes COMPRESS-160. |
|
Release 1.2 – 2011-07-31
Type |
Changes |
By |
|
ZipArchiveInputStream could fail with a "Truncated ZIP" error
message for entries between 2 GByte and 4 GByte in size. Fixes COMPRESS-129. |
|
|
TarArchiveInputStream now detects sparse entries using the
oldgnu format and properly reports it cannot extract their
contents. Fixes COMPRESS-145. Thanks to Patrick Dreyer. |
|
|
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. Fixes COMPRESS-123. |
|
|
The Javadoc for ZipArchiveInputStream#skip now matches the
implementation, the code has been made more defensive. Fixes COMPRESS-130. |
|
|
ArArchiveInputStream fails if entries contain only blanks for
userId or groupId. Fixes COMPRESS-140. Thanks to Trejkaz. |
|
|
ZipFile may leak resources on some JDKs. Fixes COMPRESS-139. |
|
|
ZipFile now implements finalize which closes the underlying
file. |
|
|
Certain tar files not recognised by ArchiveStreamFactory. Fixes COMPRESS-117. |
|
|
BZip2CompressorInputStream throws IOException if underlying stream returns available() == 0.
Removed the check. Fixes COMPRESS-125. |
|
|
Calling close() on inputStream returned by CompressorStreamFactory.createCompressorInputStream()
does not close the underlying input stream. Fixes COMPRESS-127. |
|
|
TarArchiveEntry provides access to the flags that determine
whether it is an archived symbolic link, pipe or other
"uncommon" file system object. Fixes COMPRESS-122. |
|
|
TarArchiveOutputStream#finish now writes all buffered data to the stream. Fixes COMPRESS-119. |
|
Release 1.1 – 2010-08-13
Type |
Changes |
By |
|
Move acknowledgements from NOTICE to README. Fixes COMPRESS-72. |
|
|
TarArchiveEntry.parseTarHeader() includes the trailing space/NUL when parsing the octal size. Fixes COMPRESS-113. |
|
|
Command-line interface to list archive contents.
Usage: java -jar commons-compress-n.m.jar archive-name [zip|tar|etc]. Fixes COMPRESS-108. |
|
|
TarUtils.parseName does not properly handle characters outside the range 0-127. Fixes COMPRESS-118. |
|
|
ArArchiveInputStream does not handle GNU extended filename records (//). Fixes COMPRESS-112. |
|
|
Tar implementation does not support Pax headers
Added support for reading pax headers.
Note: does not support global pax headers. Fixes COMPRESS-109. |
|
|
ArchiveStreamFactory does not recognise tar files created by Ant. Fixes COMPRESS-107. |
|
|
Support "ustar" prefix field, which is used when file paths are longer
than 100 characters. Fixes COMPRESS-110. |
|
|
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. Fixes COMPRESS-105. |
|
|
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. Fixes COMPRESS-103. |
|
|
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. Fixes COMPRESS-100. |
|
|
ZipArchiveInputStream should now properly read archives that
use data descriptors but without the "unofficial" signature. Fixes COMPRESS-101. |
|
|
The ZIP classes will throw specialized exceptions if any
attempt is made to read or write data that uses ZIP features
not supported (yet). Fixes COMPRESS-98. |
|
|
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. Fixes COMPRESS-99. |
|
|
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. |
|
|
The ZIP classes now detect encrypted entries. Fixes COMPRESS-89. |
|
|
Move DOS/Java time conversions into Zip utility class. Fixes COMPRESS-79. |
|
|
ZipArchiveInputStream failed to update the number of bytes
read properly. Fixes COMPRESS-74. |
|
|
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. |
|
|
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. Fixes COMPRESS-85. |
|
|
ZipArchiveEntry, ZipFile and ZipArchiveInputStream are now
more lenient when parsing extra fields. Fixes COMPRESS-73. |
|
|
ZipArchiveInputStream does not show location in file where a problem occurred. Fixes COMPRESS-75. |
|
|
cpio is terribly slow.
Documented that buffered streams are needed for performance. Fixes COMPRESS-82. |
|
|
Added autodetection of compression format to
CompressorStreamFactory. Fixes COMPRESS-97. |
|
|
Improved exception message if the extra field data in ZIP
archives cannot be parsed. |
|
|
Tar format unspecified - current support documented. Fixes COMPRESS-17. |
|
|
Improve ExceptionMessages in ArchiveStreamFactory. Fixes COMPRESS-95. Thanks to Joerg Bellmann. |
|
|
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. Fixes COMPRESS-94. Thanks to Anon Devs. |
|
|
ZipArchiveInputStream could repeatedly return 0 on read() when
the archive was truncated. Fixes COMPRESS-87. Thanks to Antoni Mylka. |
|
|
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. Fixes COMPRESS-86. |
|
|
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. |
|
|
Delegate all read and write methods in GZip stream in order to
speed up operations. Fixes COMPRESS-83. |
|
|
ArchiveEntry now has a getLastModifiedDate method. |
|
|
The ar and cpio streams now properly read and write last
modified times. |
|
|
TarOutputStream can leave garbage at the end of the archive. Fixes COMPRESS-81. |
|
|
Add a BZip2Utils class modelled after GZipUtils. Fixes COMPRESS-78. Thanks to Jukka Zitting. |
|
Release 1.0 – 2009-05-21
Type |
Changes |
By |
|
Initial release |
all |
|
Updating the pom.xml for preparing a move to commons-proper |
sgoeschl |
|