NAME
freeze, unfreeze, melt, fcat - compress and uncompress
files
SYNOPSIS
freeze [ -cdfvVgx ] [ filename |
type ... ]
unfreeze [ -cfvV ] [ filename ... ]
melt [ -cfvV ] [ filename ... ]
fcat [ filename ... ]
DESCRIPTION
Compresses the specified files or standard
input. Each file is replaced by a file with the extension
.F, but only if the file got smaller. If no files are
specified, the compression is applied to the standard input and is
written to standard output regardless of the results. Compressed
files can be restored to their original form by specifying the
-d option, or by running melt or unfreeze
(both linked to freeze), on the .F files or the
standard input.
If the output file exists, it will not be overwritten unless the
-f flag is given. If -f is not specified and
freeze is run in the foreground, the user is prompted as to
whether the file should be overwritten.
If the -g flag is given, a slightly less powerful
(compression rate is 1.5% less), but somewhat faster heuristic is
used. This flag can be used more than once (this mode is quite
useful when freezing bitmaps) for additional speedup.
If you want to improve compression rate at the cost of speed,
use -x flag. It means "maximum compression" (the speed may
degrade substantially when freezing bitmaps).
If the -f flag is given, all files specified are replaced
with .F files - even if the file didn't get smaller.
When file names are given, the ownership (if run by root),
modes, accessed and modified times are maintained between the file
and its .F version. In this respect, freeze can be
used for archival purposes, yet can still be used with make(1)
after melting.
The -c option causes the results of the freeze/melt
operation to be written to stdout; no files are changed. The
fcat program is the same as specifying -c to
melt (all files are unpacked and written to stdout).
The -v (verbose) option causes the diagnostics (at the
end of each file processing) to be printed to stderr, and the
-vv option causes the progress indicator to be drawn to the
same place.
Type is a token preceded by a '+' or a '--', which
defines the type of following files in the command string. An
explicite definition of the file's type can give up to 2% of
additional compression. The list of types is stored in file
/usr/local/lib/freeze.cnf. Types may be abbreviated while
not ambigious. You can also determine values for the static Huffman
table by using a list of 8 numbers separated by commas instead of
type.
Freeze uses the Lempel-Ziv algorithm on the first pass
and the dynamic Huffman algorithm on the second one. The size of
sliding window is 8K, and the maximum length of matched string is
256. The positions on the window are coded using a static Huffman
table.
A two byte magic number is prepended to the file to ensure that
neither melting of random text nor refreezing of already frozen
text are attempted. In addition, the characteristics of the static
Huffman table being used during freeze is written to the
file so that these characteristics may be adapted to concrete
conditions.
The amount of compression obtained depends on the size of the
input file and the distribution of character substrings and their
probabilities. Typically, text files, such as C programs, are
reduced by 60-75%, executable files are reduced by 50%. Compression
is generally much better than that achieved by LZW coding (as used
in compress), or Huffman coding (pack), though takes
more time to compute.
If the -V (version) flag is given, the program's version
number and compilation options are printed.
The exit status is normally 0; if the last file gets bigger
after freezing, the exit status is 2; if an error occurs, the exit
status is 1.
SEE ALSO
compact(1),
pack(1),
compress(1)
DIAGNOSTICS
Unknown flag: 'x'; Usage: freeze
[-cdfvVg] [file|+type ...] Invalid options were specified on the
command line. file: not in frozen format The specified file
has not been frozen. file: already has .F suffix -- no
change Cannot compress a file that has a ".F" suffix. mv(1) the file
to a different name and try again. file: filename too long
to tack on .F The specified file cannot be compressed because its
filename is longer than 12 characters. mv(1) the file
to a different name and try again. This message does not occur on
4.XBSD systems. file already exists; do you wish to
overwrite (y or n)? Respond "y" if you want the output file to be
replaced; "n" if you want it to be left alone. file:
xx% or xxxK These message fragments are written
during the processing of a file, if -vv option was given in
the command line (in percents, if the length of file being
processed is known; in Kbytes otherwise). Freezing: xx.xx%
(y.yy bits) This message fragment gives the percentage of the
input file that has been saved by freezing and the number of
remaining bits per byte of original file. -- not a regular file:
unchanged This message fragment is written when the input file is
not a regular file. The input file is left unchanged. -- has
xx other links: unchanged This message fragment is written
when the input file has links. The input file is left unchanged.
See ln(1) for more
information. -- file unchanged This message fragment is written
when no savings are achieved by freezing. The input file is left
unchanged. -- replaced with file This message fragment is
written when a file has been sucessfully frozen/melt. Using "
type " type This message indicates a successful switching to
position table for mentioned file type. " xxx " - no such
file type or xxx - a list of 8 numbers expected This message
means the given file type does not exist or the given string
contains a comma, but is not a valid list of values for static
Huffman table. melt: corrupt input This message fragment is written
when an error in header or unexpected end of frozen file is
detected. Partial (or empty, is there was an error in the header)
file is created. already frozen -- file unchanged This message
fragment is written when an input file already has Freeze's magic
header. Invalid position table or " type " - invalid entry
These messages appear only if Freeze has been made with incorrect
data for static Huffman table. It does never appear when freeze is
called from a public access directory. Unknown header format
Unknown values of flag bits were discovered in the header of frozen
file.
BUGS
Found bugs descriptions, incompatibilities, etc.
please send to leo@ipmce.su.