Zutils is a collection of utilities able to deal with any combination
of compressed and non-compressed files transparently. If any given
file, including standard input, is compressed, its decompressed
content is used. Compressed files are decompressed on the fly; no
temporary files are created. These utilities are not wrapper scripts
but safer and more efficient C++ programs. In particular the
"--recursive" option is very efficient in those utilities supporting it.
The provided utilities are:
Zcat - Decompresses and copies files to standard output.
Zcmp - Decompresses and compares two files byte by byte.
Zdiff - Decompresses and compares two files line by line.
Zgrep - Decompresses and searches files for a regular expression.
Ztest - Tests integrity of compressed files.
* lzdiff and lzgrep are now separate package, zutils (not packaged yet).
Changelog:
2011-04-30 Antonio Diaz Diaz <ant_diaz@teleline.es>
* Version 1.12 released.
* main.cc: Added new option `-F, --recompress'.
* encoder.h (update_prices): Update high length symbol prices
independently of the value of `pos_state'. This gives better
compression for large values of `--match-length' without being
slower.
* encoder.h encoder.cc: Optimize pair price calculations. This
reduces compression time for large values of `--match-length'
by up to 6%.
* Compression time of option `-0' has been reduced by 2%.
* main.cc (decompress): Print only one status line for each
multimember file when only one `-v' is specified.
* main.cc (decompress): Print up to 6 bytes of trailing garbage
when `-vvvv' is specified.
* main.cc (open_instream): Do not show the message
" and `--stdout' was not specified" for directories, etc.
* lziprecover.cc: If `-v' is not specified show errors only.
* testsuite/unzcrash.cc: Use Arg_parser.
* testsuite/unzcrash.cc: Added new options `-b', `-p' and `-s'.
2010-09-16 Antonio Diaz Diaz <ant_diaz@teleline.es>
* Version 1.11 released.
* Added new option `-0' which produces a compression speed and
ratio comparable to those of `gzip -9'.
* fast_encoder.h fast_encoder.cc: New files.
* main.cc: Match length limit set by options -1 to -8 has been
reduced to extend range of use towards gzip. Lower numbers now
compress less but faster. (-1 now takes 43% less time for only
20% larger compressed size).
* encoder.cc: Compression of option -9 has been slightly increased.
* lziprecover.cc: Added new option `--merge' which tries to
produce a correct file merging the good parts of two or more
damaged copies.
* lziprecover.cc: Added new option `--repair' for repairing a
1-byte error in single-member files.
* decoder.cc (decode_member): Detect file errors earlier to
improve efficiency of lziprecover's new repair capability.
This change also prevents (harmless) access to uninitialized
memory when decompressing a corrupt file.
* lziprecover.cc: Added new option `--force'.
* lziprecover.cc: Added new option `--output'.
* lziprecover.cc: Added new option `--split' to select the until
now only operation of splitting multimember files.
* lziprecover.cc: If no operation is specified, warn the user
and do nothing.
* main.cc: Fixed warning about fchown's return value being ignored.
* decoder.cc: `-tvvvv' now also shows compression ratio.
* main.cc: Set stdin/stdout in binary mode on MSVC and OS2.
* New examples have been added to the manual.
* testsuite: `test1' renamed to `test.txt'. Added new tests.
* Matchfinder types HC4 (4 bytes hash-chain) and HT4 (4 bytes
hash-table) have been tested and found no better than the
current BT4.
2010-04-05 Antonio Diaz Diaz <ant_diaz@teleline.es>
* Version 1.10 released.
* decoder.h: Input_buffer integrated in Range_decoder.
* main.cc: File specified with option `-o' is now created with
mode 0666 if umask allows it, deleted if interrupted by user.
* main.cc: New constant `o_binary'.
* main.cc: Dictionary size for options -2, -3, -4 and -8 has
been changed to improve linearity of compressed sizes.
* lzip.h: Fixed warnings produced by over-optimization (-O3).
* Makefile.in: Added quotes to directory names.
2010-01-17 Antonio Diaz Diaz <ant_diaz@teleline.es>
* Version 1.9 released.
* main.cc (main): Return at least 1 if closing stdout fails.
* Makefile.in: Added `--name' option to help2man invocation.
* testsuite/check.sh: Use `test1' instead of `COPYING' for testing.
2009-09-02 Antonio Diaz Diaz <ant_diaz@teleline.es>
* Version 1.8 released.
* Compression time has been reduced by 4%.
* Lzdiff and lzgrep have been moved to the new package zutils.
* Fixed warnings on sistems where uint32_t != unsigned int.
a new version number. New DIST_SUBDIR, bump PKGREVISION to 2.
------
Relase notes for SZIP 2.1
July 14, 2010
Bug fixes:
-- None.
New features:
-- CMake support added, which allows for shared or static builds.
ruby-xz is a basic binding for liblzma that allows you to create and
extract XZ-compressed archives. It can cope with big files as well as
small ones, but doesn't offer much of the possibilities liblzma itself
has.
Changes in 1.1.5 (Jul 16, 2011)
- Fixed excessive output permissions while compress/decompress
is in progress (bug #807536)
Changes in 1.1.4 (Apr 22, 2011)
- Fixed hang on decompress with --ignore-trailing-garbage=1 when
producer is interrupted on trailing garbage (bug #762464)
- Added example to help for decompression piped to tar (bug #746806)
- Fixed typo in Trailing Garbage printed message (bug #746799)
Changes in 1.1.3 (Mar 27, 2011)
- Print trailing garbage errors even when in quiet mode (bug #743635)
- Default extension on decompress of .tbz2 changed to .tar for
bzip2 compatibility (bug #743639)
- Fixed hang on decompress with --ignore-trailing-garbage=1 and higher
numCPU (e.g. > 2) (bug #740502)
Changes in 1.1.2 (Feb 19, 2011)
- Fix directdecompress segfault when destination file can't be
opened (e.g. read-only) (bug #717852)
- Implemented --ignore-trailing-garbage feature (bug #594868)
- Fixed hang on decompress of some truncated archives (bug #590225)
- Pulled an error check out of normal logic block for clarity
- Debug print added after BZ2_bzDecompress to track it's return code.
- A debug print fixed in queue::remove
- Increased max memory usage limit from 1GB to 2GB
- If no -m switch given on command line, default max memory limit
will now automatically increase from 100 MB to minimum amount
of memory required to support the number of CPUs requested
- Improved performance when output buffer is full
- Fixed bug which caused hang while decompressing prematurely
truncated bzip2 stream
- Consumer_decompress throttling modified to prevent potential
deadlock/infinite loop in certain situations (Thanks to Laszlo
Ersek for finding and helping track down the cause of this bug)
- Fixed deadlock bug and performance issue when consumer working
with long bzip2 sequences (Thanks to Tanguy Fautre for finding)
- Fixed error message for block size range (max size was wrong)
- Moved #include <pthread.h> from pbzip2.cpp to pbzip2.h to fix
OS/2 compiler issue
Changes in 1.1.1 (Apr 17, 2010)
- Modified decompression to use low-level libbz2 API to improve
performance of long bzip2 streams of large single-stream bzip2
blocks
- This release should now decompress files created with bzip2
at least as fast as bzip2 or slightly faster
- Handle decompression of long bzip2 streams incrementally
instead of loading whole stream in memory at once
- Fixed issue in safe_cond_timed_wait which caused segmentation
fault when compiled in DEBUG mode
- Fixed issue with Sun Studio compiler - required explicit
declaration of static const members in .cpp
Changes in 1.1.0 (Mar 13, 2010)
- Added support for multi-threaded decompression using STDIN/pipes
- Added code to support throttling compression to prevent memory
exhaustion with slow output pipe
- Added -m switch to specify max memory usage amount before
throttling starts (default 100MB)
- Fixed bug that did not allow command line parameters to be used
when compressing data from STDIN
- Added long options to man page and -h output
- Added --loadavg, --read long options
- Added support for CPU detection on Win32
- Major improvements to protection of shared variables, error and
signal handling, program termination
- Added -S switch for thread stack size customization
(needs USE_STACKSIZE_CUSTOMIZATION defined when compiling)
- Fixed command line parsing bug for -b, -p, -m switches
- Fixed infinite loop when fileWriter fails to create output
file at start
- Fixed bug that deleted input filename (with .bz2 extension for
compression and without .bz2 extension for decompression) when
a user interrupts process with CTRL-C while outputting to STDOUT
- Fixed bug where 0 byte files were not processed properly when
data input from STDIN
- Ignores fwrite return and passes chown errors in writeFileMetaData
if effective uid root
- OutputBuffer usage redesigned as fixed-size circular buffer
- Lots of minor bugs fixed (see AUTHORS or pbzip2.cpp for full details)
- Special thanks to Yavor Nikolov for providing the majority of
contributions to this release and a significant amount of testing
clang objects. Other half of last weekend's patch, which I apparently
erased by accident (or something) before committing.
While here also patch up some illegal type mixing in tr2.c that gcc
warns about.
* liblzma fixes:
- A memory leak was fixed.
- lzma_stream_buffer_encode() no longer creates an empty .xz
Block if encoding an empty buffer. Such an empty Block with
LZMA2 data would trigger a bug in 5.0.1 and older (see the
first bullet point in 5.0.2 notes). When releasing 5.0.2,
I thought that no encoder creates this kind of files but
I was wrong.
- Validate function arguments better in a few functions. Most
importantly, specifying an unsupported integrity check to
lzma_stream_buffer_encode() no longer creates a corrupt .xz
file. Probably no application tries to do that, so this
shouldn't be a big problem in practice.
- Document that lzma_block_buffer_encode(),
lzma_easy_buffer_encode(), lzma_stream_encoder(), and
lzma_stream_buffer_encode() may return LZMA_UNSUPPORTED_CHECK.
- The return values of the _memusage() functions are now
documented better.
* Fix command name detection in xzgrep. xzegrep and xzfgrep now
correctly use egrep and fgrep instead of grep.
* French translation was added.
* A bug in the LZX decompressor was fixed.
* cabextract is now more tolerant when processing cabinet sets.
* cabextract is now compatible with even more compilers, and
now supports 64-bit file I/O on platforms where it's completely
native, like Mac OS X 10.6 and Fedora x86_64.
* cabextract will no longer print "library not compiled to support
large files" while reading small files.
* The Windows CE installation format document was improved.
* Fix the --verify option, which broke in version 1.24.
* Fix storing long sparse file names in PAX archives.
* Fix correctness of --atime-preserve=replace.
* Work around POSIX incompatibilities on FreeBSD, NetBSD and Tru64.
* Fix bug with --one-file-system --listed-incremental.
* Converted the configure system to non-recursive Automake.
* Applied some overdue speed optimizations for modern x86/x64 architectures
and current compilers like gcc 4.6 and MSVC 2010.
* LZMA2 decompressor now correctly accepts LZMA2 streams with no
uncompressed data. Previously it considered them corrupt. The
bug can affect applications that use raw LZMA2 streams. It is
very unlikely to affect .xz files because no compressor creates
.xz files with empty LZMA2 streams. (Empty .xz files are a
different thing than empty LZMA2 streams.)
* "xz --suffix=.foo filename.foo" now refuses to compress the
file due to it already having the suffix .foo. It was already
documented on the man page, but the code lacked the test.
* "xzgrep -l foo bar.xz" works now.
* Polish translation was added.
0.10 [2010/03/18]
* Added zip_get_num_files(), deprecated zip_get_num_entries().
* Better windows support.
* Support for traditional PKWARE encryption added.
* Fix opening archives with more than 65535 entries.
* Fix some memory leaks.
* Fix cmake build and installation
* Fix memory leak in error case in zip_open()
* Fixed CVE-2011-0421 (no security implications though)
* More documentation.
* Assorted minor updates.
Changes in 1.02rc1:
* Made lzop compile with LZO v2.
* Under Windows files are now opened using the _O_SEQUENTIAL flag,
which results in a major speedup when (de)compressing large files.
* Under MacOS X, the configure script now will use the '-no-cpp-precomp'
compiler option in order to work around bugs in Apple's native
"smart" preprocessor.
* File sizes > 2GB are correctly displayed.