pack

, pcat

, unpack

- compress and expand files

Synopsis

pack [-f] [-] file...

pcatfile...

unpackfile...

Description

pack

The pack command attempts to store the specified files in a compressed
form. Wherever possible (and useful), each input file file is replaced by
a packed file file.z with the same access modes, access and modified
dates, and owner as those of file. If pack is successful, file will
be removed.

The amount of compression obtained depends on the size of the input
file and the character frequency distribution. Because a decoding tree forms the
first part of each .z file, it is usually not worthwhile to pack
files smaller than three blocks, unless the character frequency distribution is very
skewed, which may occur with printer plots or pictures.

Typically, text files are reduced to 60-75% of their original size. Load
modules, which use a larger character set and have a more uniform
distribution of characters, show little compression, the packed versions being about 90% of
the original size.

pack returns a value that is the number of files that it
failed to compress.

No packing will occur if:

the file appears to be already packed

the file name has more than 14-2 bytes

the file has links

the file is a directory

the file cannot be opened

the file is empty

no disk storage blocks will be saved by packing

a file called file.z already exists

the .z file cannot be created

an I/O error occurred during processing.

The last segment of the file name must contain no more than
14-2 bytes to allow space for the appended .z extension. Directories
cannot be compressed.

pcat

The pcat command does for packed files what cat(1) does for ordinary files,
except that pcat cannot be used as a filter. The specified files
are unpacked and written to the standard output.

pcat returns the number of files it was unable to unpack. Failure
may occur if:

the file cannot be opened;

the file does not appear to be the output of pack.

unpack

The unpack command expands files created by pack. For each file specified
in the command, a search is made for a file called file.z
(or just file, if file ends in .z). If this file appears
to be a packed file, it is replaced by its expanded version. The
new file has the .z suffix stripped from its name, and has
the same access modes, access and modification dates, and owner as those
of the packed file.

unpack returns a value that is the number of files it was
unable to unpack. Failure may occur for the same reasons that it
may in pcat, as well as for the following:

a file with the ``unpacked'' name already exists;

the unpacked file cannot be created.

the filename (excluding the .z extension) has more than 14 bytes.

Options

The following options are supported by pack:

-f

Forces packing of file. This is useful for causing an entire directory to be packed even if some of the files will not benefit. Packed files can be restored to their original form using unpack or pcat.

Operands

The following operands are supported:

file

A path name of a file to be packed, unpacked, or pcated; file can include or omit the .z suffix.

-

pack uses Huffman (minimum redundancy) codes on a byte-by-byte basis. If the - argument is used, an internal flag is set that causes the number of times each byte is used, its relative frequency, and the code for the byte to be printed on the standard output. Additional occurrences of - in place of file will cause the internal flag to be set and reset.

Usage

See largefile(5) for the description of the behavior of pack, pcat, and unpack
when encountering files greater than or equal to 2 Gbyte ( 231
bytes).

Examples

Example 1 Viewing a Packed File

To view a packed file named file.z use:

example%pcatfile.z

or just:

example%pcatfile

Example 2 Making and Unpacked Copy:

To make an unpacked copy, say nnn, of a packed file named
file.z (without destroying file.z) use the command:

example%pcatfile>nnn

Environment Variables

See environ(5) for descriptions of the following environment variables that affect the execution
of pack, pcat, and unpack: LC_CTYPE, LC_MESSAGES, and NLSPATH.

Exit Status

The following exit values are returned:

0

Successful completion.

>0

An error occurred. The number of files the command failed to pack/unpack is returned.