     FREEZE(1)                                                         FREEZE(1)
                                        local

     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

                                        - 1 -       Formatted:  February 2, 2000

     FREEZE(1)                                                         FREEZE(1)
                                        local

          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.

                                        - 2 -       Formatted:  February 2, 2000

     FREEZE(1)                                                         FREEZE(1)
                                        local

          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.

                                        - 3 -       Formatted:  February 2, 2000

     FREEZE(1)                                                         FREEZE(1)
                                        local

     BUGS
          Found bugs descriptions, incompatibilities, etc.  please send to
          leo@ipmce.su.

                                        - 4 -       Formatted:  February 2, 2000