summaryrefslogtreecommitdiffstats
path: root/doc/plzip.texi
diff options
context:
space:
mode:
Diffstat (limited to 'doc/plzip.texi')
-rw-r--r--doc/plzip.texi325
1 files changed, 190 insertions, 135 deletions
diff --git a/doc/plzip.texi b/doc/plzip.texi
index b5469b9..26c0820 100644
--- a/doc/plzip.texi
+++ b/doc/plzip.texi
@@ -6,8 +6,8 @@
@finalout
@c %**end of header
-@set UPDATED 5 January 2019
-@set VERSION 1.8
+@set UPDATED 3 January 2021
+@set VERSION 1.9
@dircategory Data Compression
@direntry
@@ -29,6 +29,7 @@
@contents
@end ifnothtml
+@ifnottex
@node Top
@top
@@ -49,35 +50,47 @@ This manual is for Plzip (version @value{VERSION}, @value{UPDATED}).
@end menu
@sp 1
-Copyright @copyright{} 2009-2019 Antonio Diaz Diaz.
+Copyright @copyright{} 2009-2021 Antonio Diaz Diaz.
-This manual is free documentation: you have unlimited permission
-to copy, distribute and modify it.
+This manual is free documentation: you have unlimited permission to copy,
+distribute, and modify it.
+@end ifnottex
@node Introduction
@chapter Introduction
@cindex introduction
-@uref{http://www.nongnu.org/lzip/plzip.html,,Plzip} is a massively parallel
-(multi-threaded) implementation of lzip, fully compatible with lzip 1.4 or
-newer. Plzip uses the lzlib compression library.
-
-@uref{http://www.nongnu.org/lzip/lzip.html,,Lzip} is a lossless data
-compressor with a user interface similar to the one of gzip or bzip2. Lzip
-can compress about as fast as gzip @w{(lzip -0)} or compress most files more
-than bzip2 @w{(lzip -9)}. Decompression speed is intermediate between gzip
-and bzip2. Lzip is better than gzip and bzip2 from a data recovery
-perspective. Lzip has been designed, written and tested with great care to
-replace gzip and bzip2 as the standard general-purpose compressed format for
-unix-like systems.
-
-Plzip can compress/decompress large files on multiprocessor machines
-much faster than lzip, at the cost of a slightly reduced compression
-ratio (0.4 to 2 percent larger compressed files). Note that the number
-of usable threads is limited by file size; on files larger than a few GB
-plzip can use hundreds of processors, but on files of only a few MB
-plzip is no faster than lzip. @xref{Minimum file sizes}.
+@uref{http://www.nongnu.org/lzip/plzip.html,,Plzip}
+is a massively parallel (multi-threaded) implementation of lzip, fully
+compatible with lzip 1.4 or newer. Plzip uses the compression library
+@uref{http://www.nongnu.org/lzip/lzlib.html,,lzlib}.
+
+@uref{http://www.nongnu.org/lzip/lzip.html,,Lzip}
+is a lossless data compressor with a user interface similar to the one
+of gzip or bzip2. Lzip uses a simplified form of the 'Lempel-Ziv-Markov
+chain-Algorithm' (LZMA) stream format, chosen to maximize safety and
+interoperability. Lzip can compress about as fast as gzip @w{(lzip -0)} or
+compress most files more than bzip2 @w{(lzip -9)}. Decompression speed is
+intermediate between gzip and bzip2. Lzip is better than gzip and bzip2 from
+a data recovery perspective. Lzip has been designed, written, and tested
+with great care to replace gzip and bzip2 as the standard general-purpose
+compressed format for unix-like systems.
+
+Plzip can compress/decompress large files on multiprocessor machines much
+faster than lzip, at the cost of a slightly reduced compression ratio (0.4
+to 2 percent larger compressed files). Note that the number of usable
+threads is limited by file size; on files larger than a few GB plzip can use
+hundreds of processors, but on files of only a few MB plzip is no faster
+than lzip. @xref{Minimum file sizes}.
+
+For creation and manipulation of compressed tar archives
+@uref{http://www.nongnu.org/lzip/manual/tarlz_manual.html,,tarlz} can be
+more efficient than using tar and plzip because tarlz is able to keep the
+alignment between tar members and lzip members.
+@ifnothtml
+@xref{Top,tarlz manual,,tarlz}.
+@end ifnothtml
The lzip file format is designed for data sharing and long-term archiving,
taking into account both data integrity and decoder availability:
@@ -85,11 +98,11 @@ taking into account both data integrity and decoder availability:
@itemize @bullet
@item
The lzip format provides very safe integrity checking and some data
-recovery means. The
+recovery means. The program
@uref{http://www.nongnu.org/lzip/manual/lziprecover_manual.html#Data-safety,,lziprecover}
-program can repair bit flip errors (one of the most common forms of data
-corruption) in lzip files, and provides data recovery capabilities,
-including error-checked merging of damaged copies of a file.
+can repair bit flip errors (one of the most common forms of data corruption)
+in lzip files, and provides data recovery capabilities, including
+error-checked merging of damaged copies of a file.
@ifnothtml
@xref{Data safety,,,lziprecover}.
@end ifnothtml
@@ -107,10 +120,10 @@ Additionally the lzip reference implementation is copylefted, which
guarantees that it will remain free forever.
@end itemize
-A nice feature of the lzip format is that a corrupt byte is easier to
-repair the nearer it is from the beginning of the file. Therefore, with
-the help of lziprecover, losing an entire archive just because of a
-corrupt byte near the beginning is a thing of the past.
+A nice feature of the lzip format is that a corrupt byte is easier to repair
+the nearer it is from the beginning of the file. Therefore, with the help of
+lziprecover, losing an entire archive just because of a corrupt byte near
+the beginning is a thing of the past.
Plzip uses the same well-defined exit status values used by lzip, which
makes it safer than compressors returning ambiguous warning values (like
@@ -138,13 +151,12 @@ possible, ownership of the file just as @samp{cp -p} does. (If the user ID or
the group ID can't be duplicated, the file permission bits S_ISUID and
S_ISGID are cleared).
-Plzip is able to read from some types of non regular files if the
-@samp{--stdout} option is specified.
+Plzip is able to read from some types of non-regular files if either the
+option @samp{-c} or the option @samp{-o} is specified.
-If no file names are specified, plzip compresses (or decompresses) from
-standard input to standard output. In this case, plzip will decline to
-write compressed output to a terminal, as this would be entirely
-incomprehensible and therefore pointless.
+Plzip will refuse to read compressed data from a terminal or write compressed
+data to a terminal, as this would be entirely incomprehensible and might
+leave the terminal in an abnormal state.
Plzip will correctly decompress a file which is the concatenation of two or
more compressed files. The result is the concatenation of the corresponding
@@ -162,16 +174,16 @@ The output of plzip looks like this:
plzip -v foo
foo: 6.676:1, 14.98% ratio, 85.02% saved, 450560 in, 67493 out.
-plzip -tvv foo.lz
- foo.lz: 6.676:1, 14.98% ratio, 85.02% saved. ok
+plzip -tvvv foo.lz
+ foo.lz: 6.676:1, 14.98% ratio, 85.02% saved. 450560 out, 67493 in. ok
@end example
The meaning of each field is as follows:
@table @code
@item N:1
-The compression ratio @w{(uncompressed_size / compressed_size)}, shown
-as N to 1.
+The compression ratio @w{(uncompressed_size / compressed_size)}, shown as
+@w{N to 1}.
@item ratio
The inverse compression ratio @w{(compressed_size / uncompressed_size)},
@@ -182,23 +194,23 @@ decimal point two places to the left; @w{14.98% = 0.1498}.
The space saved by compression @w{(1 - ratio)}, shown as a percentage.
@item in
-The size of the uncompressed data. When decompressing or testing, it is
-shown as @code{decompressed}. Note that plzip always prints the
-uncompressed size before the compressed size when compressing,
-decompressing, testing or listing.
+Size of the input data. This is the uncompressed size when compressing, or
+the compressed size when decompressing or testing. Note that plzip always
+prints the uncompressed size before the compressed size when compressing,
+decompressing, testing, or listing.
@item out
-The size of the compressed data. When decompressing or testing, it is
-shown as @code{compressed}.
+Size of the output data. This is the compressed size when compressing, or
+the decompressed size when decompressing or testing.
@end table
-When decompressing or testing at verbosity level 4 (-vvvv), the
-dictionary size used to compress the file is also shown.
+When decompressing or testing at verbosity level 4 (-vvvv), the dictionary
+size used to compress the file is also shown.
-LANGUAGE NOTE: Uncompressed = not compressed = plain data; it may never
-have been compressed. Decompressed is used to refer to data which have
-undergone the process of decompression.
+LANGUAGE NOTE: Uncompressed = not compressed = plain data; it may never have
+been compressed. Decompressed is used to refer to data which have undergone
+the process of decompression.
@node Invoking plzip
@@ -215,11 +227,16 @@ plzip [@var{options}] [@var{files}]
@end example
@noindent
-@samp{-} used as a @var{file} argument means standard input. It can be
-mixed with other @var{files} and is read just once, the first time it
-appears in the command line.
+If no file names are specified, plzip compresses (or decompresses) from
+standard input to standard output. A hyphen @samp{-} used as a @var{file}
+argument means standard input. It can be mixed with other @var{files} and is
+read just once, the first time it appears in the command line.
-plzip supports the following options:
+plzip supports the following
+@uref{http://www.nongnu.org/arg-parser/manual/arg_parser_manual.html#Argument-syntax,,options}:
+@ifnothtml
+@xref{Argument syntax,,,arg_parser}.
+@end ifnothtml
@table @code
@item -h
@@ -246,18 +263,20 @@ input file will be divided in chunks of this size before compression is
performed. Valid values range from @w{8 KiB} to @w{1 GiB}. Default value
is two times the dictionary size, except for option @samp{-0} where it
defaults to @w{1 MiB}. Plzip will reduce the dictionary size if it is
-larger than the chosen data size.
+larger than the data size specified. @xref{Minimum file sizes}.
@item -c
@itemx --stdout
-Compress or decompress to standard output; keep input files unchanged.
-If compressing several files, each file is compressed independently.
-This option is needed when reading from a named pipe (fifo) or from a
-device.
+Compress or decompress to standard output; keep input files unchanged. If
+compressing several files, each file is compressed independently. This
+option (or @samp{-o}) is needed when reading from a named pipe (fifo) or
+from a device. Use @w{@samp{lziprecover -cd -i}} to recover as much of the
+decompressed data as possible when decompressing a corrupt file. @samp{-c}
+overrides @samp{-o}. @samp{-c} has no effect when testing or listing.
@item -d
@itemx --decompress
-Decompress the specified files. If a file does not exist or can't be
+Decompress the files specified. If a file does not exist or can't be
opened, plzip continues decompressing the rest of the files. If a file
fails to decompress, or is a terminal, plzip exits immediately without
decompressing the rest of the files.
@@ -277,17 +296,18 @@ Keep (don't delete) input files during compression or decompression.
@item -l
@itemx --list
-Print the uncompressed size, compressed size and percentage saved of the
-specified files. Trailing data are ignored. The values produced are
-correct even for multimember files. If more than one file is given, a
-final line containing the cumulative sizes is printed. With @samp{-v},
-the dictionary size, the number of members in the file, and the amount
-of trailing data (if any) are also printed. With @samp{-vv}, the
-positions and sizes of each member in multimember files are also
-printed. @samp{-lq} can be used to verify quickly (without
-decompressing) the structural integrity of the specified files. (Use
-@samp{--test} to verify the data integrity). @samp{-alq} additionally
-verifies that none of the specified files contain trailing data.
+Print the uncompressed size, compressed size, and percentage saved of the
+files specified. Trailing data are ignored. The values produced are correct
+even for multimember files. If more than one file is given, a final line
+containing the cumulative sizes is printed. With @samp{-v}, the dictionary
+size, the number of members in the file, and the amount of trailing data (if
+any) are also printed. With @samp{-vv}, the positions and sizes of each
+member in multimember files are also printed.
+
+@samp{-lq} can be used to verify quickly (without decompressing) the
+structural integrity of the files specified. (Use @samp{--test} to verify
+the data integrity). @samp{-alq} additionally verifies that none of the
+files specified contain trailing data.
@item -m @var{bytes}
@itemx --match-length=@var{bytes}
@@ -298,27 +318,36 @@ compression times.
@item -n @var{n}
@itemx --threads=@var{n}
-Set the number of worker threads, overriding the system's default. Valid
-values range from 1 to "as many as your system can support". If this
-option is not used, plzip tries to detect the number of processors in
-the system and use it as default value. When compressing on a @w{32 bit}
-system, plzip tries to limit the memory use to under @w{2.22 GiB} (4
-worker threads at level -9) by reducing the number of threads below the
-system's default. @w{@samp{plzip --help}} shows the system's default
-value.
-
-Note that the number of usable threads is limited to @w{ceil( file_size
-/ data_size )} during compression (@pxref{Minimum file sizes}), and to
-the number of members in the input during decompression.
+Set the maximum number of worker threads, overriding the system's default.
+Valid values range from 1 to "as many as your system can support". If this
+option is not used, plzip tries to detect the number of processors in the
+system and use it as default value. When compressing on a @w{32 bit} system,
+plzip tries to limit the memory use to under @w{2.22 GiB} (4 worker threads
+at level -9) by reducing the number of threads below the system's default.
+@w{@samp{plzip --help}} shows the system's default value.
+
+Plzip starts the number of threads required by each file without exceeding
+the value specified. Note that the number of usable threads is limited to
+@w{ceil( file_size / data_size )} during compression (@pxref{Minimum file
+sizes}), and to the number of members in the input during decompression. You
+can find the number of members in a lzip file by running
+@w{@samp{plzip -lv file.lz}}.
@item -o @var{file}
@itemx --output=@var{file}
-When reading from standard input and @samp{--stdout} has not been
-specified, use @samp{@var{file}} as the virtual name of the uncompressed
-file. This produces a file named @samp{@var{file}} when decompressing,
-or a file named @samp{@var{file}.lz} when compressing. A second
-@samp{.lz} extension is not added if @samp{@var{file}} already ends in
-@samp{.lz} or @samp{.tlz}.
+If @samp{-c} has not been also specified, write the (de)compressed output to
+@var{file}; keep input files unchanged. If compressing several files, each
+file is compressed independently. This option (or @samp{-c}) is needed when
+reading from a named pipe (fifo) or from a device. @w{@samp{-o -}} is
+equivalent to @samp{-c}. @samp{-o} has no effect when testing or listing.
+
+In order to keep backward compatibility with plzip versions prior to 1.9,
+when compressing from standard input and no other file names are given, the
+extension @samp{.lz} is appended to @var{file} unless it already ends in
+@samp{.lz} or @samp{.tlz}. This feature will be removed in a future version
+of plzip. Meanwhile, redirection may be used instead of @samp{-o} to write
+the compressed output to a file without the extension @samp{.lz} in its
+name: @w{@samp{plzip < file > foo}}.
@item -q
@itemx --quiet
@@ -331,7 +360,7 @@ for each file the largest dictionary size that does not exceed neither
the file size nor this limit. Valid values range from @w{4 KiB} to
@w{512 MiB}. Values 12 to 29 are interpreted as powers of two, meaning
2^12 to 2^29 bytes. Dictionary sizes are quantized so that they can be
-coded in just one byte (@pxref{coded-dict-size}). If the specified size
+coded in just one byte (@pxref{coded-dict-size}). If the size specified
does not match one of the valid sizes, it will be rounded upwards by
adding up to @w{(@var{bytes} / 8)} to it.
@@ -341,12 +370,13 @@ is affected at compression time by the choice of dictionary size limit.
@item -t
@itemx --test
-Check integrity of the specified files, but don't decompress them. This
+Check integrity of the files specified, but don't decompress them. This
really performs a trial decompression and throws away the result. Use it
together with @samp{-v} to see information about the files. If a file
-does not exist, can't be opened, or is a terminal, plzip continues
-checking the rest of the files. If a file fails the test, plzip may be
-unable to check the rest of the files.
+fails the test, does not exist, can't be opened, or is a terminal, plzip
+continues checking the rest of the files. A final diagnostic is shown at
+verbosity level 1 or higher if any file fails the test when testing
+multiple files.
@item -v
@itemx --verbose
@@ -364,12 +394,12 @@ Compression level. Set the compression parameters (dictionary size and
match length limit) as shown in the table below. The default compression
level is @samp{-6}, equivalent to @w{@samp{-s8MiB -m36}}. Note that
@samp{-9} can be much slower than @samp{-0}. These options have no
-effect when decompressing, testing or listing.
+effect when decompressing, testing, or listing.
The bidimensional parameter space of LZMA can't be mapped to a linear
scale optimal for all files. If your files are large, very repetitive,
-etc, you may need to use the @samp{--dictionary-size} and
-@samp{--match-length} options directly to achieve optimal performance.
+etc, you may need to use the options @samp{--dictionary-size} and
+@samp{--match-length} directly to achieve optimal performance.
If several compression levels or @samp{-s} or @samp{-m} options are
given, the last setting is used. For example @w{@samp{-9 -s64MiB}} is
@@ -394,7 +424,7 @@ equivalent to @w{@samp{-s64MiB -m273}}
Aliases for GNU gzip compatibility.
@item --loose-trailing
-When decompressing, testing or listing, allow trailing data whose first
+When decompressing, testing, or listing, allow trailing data whose first
bytes are so similar to the magic bytes of a lzip header that they can
be confused with a corrupt header. Use this option if a file triggers a
"corrupt header" error and the cause is not indeed a corrupt header.
@@ -411,6 +441,19 @@ decompressing to non-seekable output. Increasing the number of packets
may increase decompression speed, but requires more memory. Valid values
range from 1 to 1024. The default value is 64.
+@item --check-lib
+Compare the
+@uref{http://www.nongnu.org/lzip/manual/lzlib_manual.html#Library-version,,version of lzlib}
+used to compile plzip with the version actually being used at run time and
+exit. Report any differences found. Exit with error status 1 if differences
+are found. A mismatch may indicate that lzlib is not correctly installed or
+that a different version of lzlib has been installed after compiling plzip.
+@w{@samp{plzip -v --check-lib}} shows the version of lzlib being used and
+the value of @samp{LZ_API_VERSION} (if defined).
+@ifnothtml
+@xref{Library version,,,lzlib}.
+@end ifnothtml
+
@end table
Numbers given as arguments to options may be followed by a multiplier
@@ -438,16 +481,16 @@ caused plzip to panic.
@node Program design
-@chapter Program design
+@chapter Internal structure of plzip
@cindex program design
-When compressing, plzip divides the input file into chunks and
-compresses as many chunks simultaneously as worker threads are chosen,
-creating a multimember compressed file.
+When compressing, plzip divides the input file into chunks and compresses as
+many chunks simultaneously as worker threads are chosen, creating a
+multimember compressed file.
When decompressing, plzip decompresses as many members simultaneously as
worker threads are chosen. Files that were compressed with lzip will not
-be decompressed faster than using lzip (unless the @samp{-b} option was used)
+be decompressed faster than using lzip (unless the option @samp{-b} was used)
because lzip usually produces single-member files, which can't be
decompressed in parallel.
@@ -492,6 +535,7 @@ when there is no longer anything to take away.@*
@sp 1
In the diagram below, a box like this:
+
@verbatim
+---+
| | <-- the vertical bars might be missing
@@ -499,6 +543,7 @@ In the diagram below, a box like this:
@end verbatim
represents one byte; a box like this:
+
@verbatim
+==============+
| |
@@ -513,6 +558,7 @@ The members simply appear one after another in the file, with no
additional information before, between, or after them.
Each member has the following structure:
+
@verbatim
+--+--+--+--+----+----+=============+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ID string | VN | DS | LZMA stream | CRC32 | Data size | Member size |
@@ -532,8 +578,7 @@ Just in case something needs to be modified in the future. 1 for now.
@anchor{coded-dict-size}
@item DS (coded dictionary size, 1 byte)
The dictionary size is calculated by taking a power of 2 (the base size)
-and subtracting from it a fraction between 0/16 and 7/16 of the base
-size.@*
+and subtracting from it a fraction between 0/16 and 7/16 of the base size.@*
Bits 4-0 contain the base 2 logarithm of the base size (12 to 29).@*
Bits 7-5 contain the numerator of the fraction (0 to 7) to subtract
from the base size to obtain the dictionary size.@*
@@ -541,8 +586,8 @@ Example: 0xD3 = 2^19 - 6 * 2^15 = 512 KiB - 6 * 32 KiB = 320 KiB@*
Valid values for dictionary size range from 4 KiB to 512 MiB.
@item LZMA stream
-The LZMA stream, finished by an end of stream marker. Uses default
-values for encoder properties.
+The LZMA stream, finished by an end of stream marker. Uses default values
+for encoder properties.
@ifnothtml
@xref{Stream format,,,lzip},
@end ifnothtml
@@ -553,7 +598,7 @@ See
for a complete description.
@item CRC32 (4 bytes)
-CRC of the uncompressed original data.
+Cyclic Redundancy Check (CRC) of the uncompressed original data.
@item Data size (8 bytes)
Size of the uncompressed original data.
@@ -570,8 +615,8 @@ facilitates safe recovery of undamaged members from multimember files.
@chapter Memory required to compress and decompress
@cindex memory requirements
-The amount of memory required @strong{per worker thread} for
-decompression or testing is approximately the following:
+The amount of memory required @strong{per worker thread} for decompression
+or testing is approximately the following:
@itemize @bullet
@item
@@ -610,8 +655,7 @@ times the data size. Default is @w{142 MiB}.
@noindent
The following table shows the memory required @strong{per thread} for
-compression at a given level, using the default data size for each
-level:
+compression at a given level, using the default data size for each level:
@multitable {Level} {Memory required}
@item Level @tab Memory required
@@ -643,7 +687,7 @@ least as large as the number of worker threads times the chunk size
compress, and compression will be proportionally slower. The maximum
speed increase achievable on a given file is limited by the ratio
@w{(file_size / data_size)}. For example, a tarball the size of gcc or
-linux will scale up to 8 processors at level -9.
+linux will scale up to 10 or 14 processors at level -9.
The following table shows the minimum uncompressed file size needed for
full use of N processors at a given compression level, using the default
@@ -723,7 +767,7 @@ where a file containing trailing data must be rejected, the option
WARNING! Even if plzip is bug-free, other causes may result in a corrupt
compressed file (bugs in the system libraries, memory errors, etc).
Therefore, if the data you are going to compress are important, give the
-@samp{--keep} option to plzip and don't remove the original file until you
+option @samp{--keep} to plzip and don't remove the original file until you
verify the compressed file with a command like
@w{@samp{plzip -cd file.lz | cmp file -}}. Most RAM errors happening during
compression can only be detected by comparing the compressed file with the
@@ -732,8 +776,18 @@ contents, resulting in a valid compressed file containing wrong data.
@sp 1
@noindent
-Example 1: Replace a regular file with its compressed version
-@samp{file.lz} and show the compression ratio.
+Example 1: Extract all the files from archive @samp{foo.tar.lz}.
+
+@example
+ tar -xf foo.tar.lz
+or
+ plzip -cd foo.tar.lz | tar -xf -
+@end example
+
+@sp 1
+@noindent
+Example 2: Replace a regular file with its compressed version @samp{file.lz}
+and show the compression ratio.
@example
plzip -v file
@@ -741,8 +795,8 @@ plzip -v file
@sp 1
@noindent
-Example 2: Like example 1 but the created @samp{file.lz} has a block
-size of @w{1 MiB}. The compression ratio is not shown.
+Example 3: Like example 1 but the created @samp{file.lz} has a block size of
+@w{1 MiB}. The compression ratio is not shown.
@example
plzip -B 1MiB file
@@ -750,9 +804,8 @@ plzip -B 1MiB file
@sp 1
@noindent
-Example 3: Restore a regular file from its compressed version
-@samp{file.lz}. If the operation is successful, @samp{file.lz} is
-removed.
+Example 4: Restore a regular file from its compressed version
+@samp{file.lz}. If the operation is successful, @samp{file.lz} is removed.
@example
plzip -d file.lz
@@ -760,8 +813,8 @@ plzip -d file.lz
@sp 1
@noindent
-Example 4: Verify the integrity of the compressed file @samp{file.lz}
-and show status.
+Example 5: Verify the integrity of the compressed file @samp{file.lz} and
+show status.
@example
plzip -tv file.lz
@@ -769,29 +822,31 @@ plzip -tv file.lz
@sp 1
@noindent
-Example 5: Compress a whole device in /dev/sdc and send the output to
+Example 6: Compress a whole device in /dev/sdc and send the output to
@samp{file.lz}.
@example
-plzip -c /dev/sdc > file.lz
+ plzip -c /dev/sdc > file.lz
+or
+ plzip /dev/sdc -o file.lz
@end example
@sp 1
@anchor{concat-example}
@noindent
-Example 6: The right way of concatenating the decompressed output of two
-or more compressed files. @xref{Trailing data}.
+Example 7: The right way of concatenating the decompressed output of two or
+more compressed files. @xref{Trailing data}.
@example
Don't do this
- cat file1.lz file2.lz file3.lz | plzip -d
+ cat file1.lz file2.lz file3.lz | plzip -d -
Do this instead
plzip -cd file1.lz file2.lz file3.lz
@end example
@sp 1
@noindent
-Example 7: Decompress @samp{file.lz} partially until @w{10 KiB} of
+Example 8: Decompress @samp{file.lz} partially until @w{10 KiB} of
decompressed data are produced.
@example
@@ -800,8 +855,8 @@ plzip -cd file.lz | dd bs=1024 count=10
@sp 1
@noindent
-Example 8: Decompress @samp{file.lz} partially from decompressed byte
-10000 to decompressed byte 15000 (5000 bytes are produced).
+Example 9: Decompress @samp{file.lz} partially from decompressed byte at
+offset 10000 to decompressed byte at offset 14999 (5000 bytes are produced).
@example
plzip -cd file.lz | dd bs=1000 skip=10 count=5
@@ -820,7 +875,7 @@ for all eternity, if not longer.
If you find a bug in plzip, please send electronic mail to
@email{lzip-bug@@nongnu.org}. Include the version number, which you can
-find by running @w{@code{plzip --version}}.
+find by running @w{@samp{plzip --version}}.
@node Concept index