home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / HPACK78S.ZIP / docs / hpack.doc < prev    next >
Text File  |  1992-12-03  |  98KB  |  1,990 lines

  1.  
  2.                         -=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  3.   Ver:0.78a0            HPACK - Multi-System Archiver              1 Sept 1992
  4.                         -=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  5.  
  6.  
  7.   The HPACK Multi-System Archiver is an archiver that was written to allow the
  8.   transfer  of archived data to different systems.  In the past archivers have
  9.   traditionally been available for single systems only, for example  PKZIP(tm)
  10.   and  LHARC for the IBM PC, Larc for the Amiga, StuffIt(tm) and Compactor for
  11.   the Macintosh, and tar and compress for UNIX systems (while these  archivers
  12.   are  available  on  other  systems,  their  use  is  not widespread).  It is
  13.   intended to make HPACK a more universal archiver by  offering  versions  for
  14.   the following environments:
  15.  
  16.     * Apple IIgs (planned)
  17.     * Archimedes
  18.     * Atari ST (currently in development)
  19.     * Commodore Amiga
  20.     * Microsoft Windows
  21.     * Macintosh
  22.     * MSDOS
  23.     * OS/2 (16 and 32-bit versions)
  24.     * OS/2 Presentation Manager (currently in development)
  25.     * Primos (planned)
  26.     * UNIX
  27.     * VMS (currently in development)
  28.     * Any other system which people offer to port it to
  29.  
  30.   In addition HPACK has built-in internationalization support (inasmuch as the
  31.   system  on which it is running will allow), allowing easy creation of multi-
  32.   language versions.  Currently Dutch, English, German, and  Italian  versions
  33.   of HPACK exist.
  34.  
  35.   Note: This documentation is intended mainly as an alternative to the  proper
  36.   documentation  which  is  in  Postscript  format.   If  possible  the proper
  37.   documentation should be used.
  38.  
  39.  
  40. Using HPACK
  41.  
  42.   HPACK is run with the following command:
  43.  
  44.     HPACK command [-options] archive [filenames.....][@scriptfiles.....]
  45.  
  46.   Allowed commands are:
  47.  
  48.     [A] - Add files to an archive.
  49.     [X] - Extract files from an archive.
  50.     [V] - Display a directory of files inside an
  51.     [P] - View files within an archive.
  52.     [T] - Test the integrity of an archive.
  53.     [D] - Delete files from an archive.
  54.     [F] - Freshen files to an archive.
  55.     [R] - Replace files in an archive.
  56.     [U] - Update files to an archive.
  57.  
  58.   Allowed options are:
  59.  
  60.     -0 - Store files without attempting any compression.
  61.     -a - Store file attributes.
  62.     -b - Specify a base pathname for all files.
  63.     -c - Encryption options (conventional and public-key encryption).
  64.     -d - Directory options (Mkdir, Rmdir, Mvdir, path options etc).
  65.     -e - Add/use error recovery information.
  66.     -f - Force file move into/out of an archive.
  67.     -i - Interactive mode (prompt for all actions).
  68.     -k - Overwrite existing archive.
  69.     -l - Security options (data authentication)
  70.     -m - Create a multipart archive.
  71.     -o - Overwrite on extraction options (All, None, Prompt, Smart).
  72.     -r - Recurse through subdirectories.
  73.     -s - Run in stealth mode.
  74.     -u - Unified compression mode.
  75.     -v - View files options (Files, Directories, All).
  76.     -w - Treat files as archive comments.
  77.     -x - Text file translate options (see below).
  78.     -z - Extended options (system-specific, see below).
  79.  
  80.   Commands, options, and archive and file names may be given in upper or lower
  81.   case  (they  are  given in uppercase in the examples which follow merely for
  82.   consistency).  Options may be lumped together or  may  be  given  seperately
  83.   preceded by the '-' delimiter.  The option '--' may be used to indicate that
  84.   no more options are present on the command line, following the standard Unix
  85.   convention.
  86.  
  87.   The default archive  extension  is  '.HPK'.   HPACK  will  always  add  this
  88.   extension  (provided  the  underlying  filesystem supports it), changing any
  89.   other given extension if necessary.  Note that some quantum physics theories
  90.   suggest  that  when the user is not directly observing the HPACK archive, it
  91.   may cease to exist or will exist only in a vague and indeterminate state; in
  92.   this case the existence of the '.HPK' extension cannot be guaranteed.
  93.  
  94.   The filenames field may consist of zero or more filenames, defaulting to all
  95.   files  if  no  filenames  are given (in other words archive all files in the
  96.   current directory, or dearchive/view all files in the archive).  HPACK  uses
  97.   UNIX-style  wildcards  (which  are  described  in  more  detail below in the
  98.   section "HPACK Wildcards"), as well as UNIX-style pathnames in place of  the
  99.   usual ones used by the systems' command interpreter, so that for example the
  100.   path:
  101.  
  102.     /TEMP/WORK/FILES
  103.  
  104.   is used instead of the MSDOS equivalent:
  105.  
  106.     \TEMP\WORK\FILES
  107.  
  108.   or the VMS equivalent:
  109.  
  110.     [TEMP.WORK]FILES
  111.  
  112.   If any additional components are needed, such as drives, network  nodes,  or
  113.   devices,  these  can  be  specified  in the manner usual to the host command
  114.   interpreter.  For example if the path in the above example were on drive  A:
  115.   under MSDOS the pathname would be:
  116.  
  117.     A:/TEMP/WORK/FILES
  118.  
  119.   If the path in the above example were on the 'HOME' node, on device  'DISK1'
  120.   under VMS, the pathname would be:
  121.  
  122.     HOME::DISK1:/TEMP/WORK/FILES
  123.  
  124.   The scriptfiles are names of files preceded with  an  '@'  character.   When
  125.   HPACK  encounters  one  of  these  it  will  treat  the  filename  as a file
  126.   containing a list of files to process.  Script files  and  normal  filenames
  127.   may  be  freely  mixed  on  the command line.  See the section "HPACK Script
  128.   Files" below for more information.
  129.  
  130.  
  131. HPACK Wildcards
  132.  
  133.   When HPACK scans any filename that has been given to it, it will  check  for
  134.   the presence in the filename of any of the special characters:
  135.  
  136.     * ? [ ] \
  137.  
  138.   If one of these is detected, then the string of  characters  making  up  the
  139.   filename  will be treated as being a pattern for a filename, rather than the
  140.   name of a specific  file.   These  special  characters  have  the  following
  141.   meanings when used in a filename string:
  142.  
  143.   *       Matches zero or more characters
  144.  
  145.   ?       Matches any one character
  146.  
  147.   [...]   Matches any of the enclosed range of characters '...' in  turn.   If
  148.           two  characters  appearing  in the pattern in alphabetical order are
  149.           separated by a dash '-', then any character in the alphabetic  range
  150.           between  these  two  characters  will  be  matched.   This is a more
  151.           selective version of the '?' form.
  152.  
  153.   [^...]  As above, but this time matches  anything  *not*  in   the  enclosed
  154.           range of characters '...'.
  155.  
  156.   \       Treat the next character as a normal character rather  than  one  of
  157.           the  special  characters.   This  can  be used to override the usual
  158.           meaning of the '*', '?', '[]', and ''  characters.   Note  that  the
  159.           Atari,  MSDOS,  and  OS/2  versions  of HPACK uses '#' instead of ''
  160.           since the command interpreter uses '' in its pathnames.
  161.  
  162.   The case-sensitivity when handling filenames depends on the operating system
  163.   HPACK  is  being  run  under.   On  the  Atari  ST  and under MSDOS and VMS,
  164.   filenames are converted to uppercase, but are  not  case-sensitive;  on  the
  165.   Amiga  and Archimedes and under OS/2, filenames are left as is, but are also
  166.   not case sensitive (so that "FileName" will  match  "Filename",  "FILENAME",
  167.   and  "filename");  and  under  Unix,  filenames are left as is, and are case
  168.   sensitive, so that "makefile" and "Makefile" are treated as seperate names.
  169.  
  170.   These wildcards can be combined to create quite powerful  expressions.   For
  171.   example,  to match any file not beginning with an 'a', 'b', 'c', or 'f', and
  172.   containing at least two characters, the required expression would be:
  173.  
  174.     [^a-cf]?*
  175.  
  176.   where the [^a-cf] would match anything but 'a', 'b', 'c', or  'f';  the  '?'
  177.   would  match  the  second  character  required,  and the '*' would match any
  178.   remaining characters.
  179.  
  180.   For example, if we have an archive whose contents are:
  181.  
  182.     file1.txt  file2.txt  file3.txt  file4.txt  file5.txt
  183.     file6.txt  file7.txt  file8.txt  file9.txt  Index.txt
  184.  
  185.   we could perform the following file matches on it:
  186.  
  187.   Expression:     Matches files:
  188.  
  189.   *               file1.txt  file2.txt  file3.txt  file4.txt  file5.txt
  190.                   file6.txt  file7.txt  file8.txt  file9.txt  Index.txt
  191.   F*              file1.txt  file2.txt  file3.txt  file4.txt  file5.txt
  192.                   file6.txt  file7.txt  file8.txt  file9.txt
  193.   *4*             file4.txt
  194.   FILE?.TXT       file1.txt  file2.txt  file3.txt  file4.txt  file5.txt
  195.                   file6.txt  file7.txt  file8.txt  file9.txt
  196.   FILE[1-4].TXT   file1.txt  file2.txt  file3.txt  file4.txt
  197.   FILE[^1-4].TXT  file5.txt  file6.txt  file7.txt  file8.txt  file9.txt
  198.   FILE[1-46].TXT  file1.txt  file2.txt  file3.txt  file4.txt  file6.txt
  199.   FILE[^13-5].TXT file2.txt  file6.txt  file7.txt  file8.txt  file9.txt
  200.  
  201.   Finally, note that these wildcards may not perform quite like  the  standard
  202.   wildcards  used by the system's command interpreter.  For example under Gem-
  203.   DOS, MSDOS, and OS/2, to specify all files in a directory or archive, it  is
  204.   not necessary to use the usual sequence of "*.*".  Instead simply typing "*"
  205.   will match all the files in the archive (the DOS-like wildcards are in  fact
  206.   a bit of a hack - for example "*abc.*" will (incorrectly) match "*.*").  The
  207.   extended wildcards act as true wildcards, so that "FILE.*"  will  not  match
  208.   "FILE"  as  it  would  under  DOS,  since there is a spurious "." in the DOS
  209.   wildcard matching.  These extended wildcards can be useful  when  extracting
  210.   files  which  cannot  normally  be  handled  by the command interpreter from
  211.   archives, for example to extract the file "Filename with spaces in it"  from
  212.   the archive ARCHIVE.HPK, you would type:
  213.  
  214.     HPACK X ARCHIVE FILENAME?WITH?SPACES?IN?IT
  215.  
  216.   where the '?' wildcard will match the spaces.  Alternatively  you  can  just
  217.   type:
  218.  
  219.     HPACK X ARCHIVE FILENAME*
  220.  
  221.   which will usually do the same thing with a lot less typing involved.
  222.  
  223.   Another point is that these wildcards  cannot  be  used  to  represent  full
  224.   regular  expressions (the idea behind HPACK was to create an archiver, not a
  225.   regular expression parser), so that, for example, '*?' will not work  as  an
  226.   expression, and that they can only be used inside pathnames when the path is
  227.   inside the archive (since the extended wildcards are built  on  top  of  the
  228.   usual  operating  system ones (if they exist) the resulting system would run
  229.   very slowly if they had to be simulated on an external filesystem).
  230.  
  231.   Using wildcards for pathnames inside  archives  is  perfectly  legal.   When
  232.   matching  wildcards  to  pathnames, HPACK follows the standard convention of
  233.   matching the directory contents if the directory name is given, or  matching
  234.   the  directory  itself  when  a  wildcard matching it is given.  Consider an
  235.   archive with a subdirectory DIR, with both the archive  root  directory  and
  236.   the  subdirectory  containing  files.   Then  the following wildcard matches
  237.   could occur:
  238.  
  239.   '*'     Match all files and directories in the root directory
  240.  
  241.   'D?R'   Match  the  directory  DIR  (and  possibly  other files) in the root
  242.           directory.
  243.  
  244.   'DIR'   Match the contents of directory DIR (equivalent to 'DIR/*')
  245.  
  246.   '*/*'   Match all files and directories (equivalent to using  '*'  with  the
  247.           [-r]ecurse option).
  248.  
  249.   Unlike most filesystems, HPACK has no notion of a 'current directory' within
  250.   an  archive,  so  all  pathnames  must be given relative to the archive root
  251.   directory.
  252.  
  253.   Finally, Unix users may have to either set the shell  variable  'noglob'  or
  254.   quote  the  wildcard  characters  used to prevent them being expanded by the
  255.   shell if it is required that HPACK handle wildcard expansion.  One  case  in
  256.   which  this  is necessary is when recursively adding files in subdirectories
  257.   which match a certain filespec to an archive:
  258.  
  259.     HPACK A -D TEST *.H
  260.  
  261.   will cause the shell to expand the *.H filespec to match all  the  files  in
  262.   the  current  directory,  and  not  match  any  files in subdirectories.  In
  263.   contrast:
  264.  
  265.     set noglob
  266.     HPACK A -D TEST *.H
  267.     unset noglob
  268.  
  269.   will cause HPACK to perform the wildcard expansion, and will  correctly  add
  270.   files in subdirectories.
  271.  
  272.  
  273. HPACK Commands
  274.  
  275.   [A]  Add files to an archive.  The archive  given  in  the  command-line  is
  276.        opened,  or  created  if  it  doesn't  already  exist, and is given the
  277.        extension '.HPK' if this is not explicitly specified.  Then  all  files
  278.        given in the list of filenames are added to to it.
  279.  
  280.        Example: To add all files in  the  current  directory  to  the  archive
  281.        ARCHIVE.HPK in the current directory:
  282.  
  283.          HPACK A ARCHIVE
  284.  
  285.   [X]  Extract files from an  archive.   All  files  are  extracted  from  the
  286.        archive  given  in  the  command line to the current directory.  If the
  287.        file already exists and no  overwrite  options  are  given  (these  are
  288.        explained  in  the section "HPACK Options" below), you will be asked if
  289.        you wish to overwrite it:
  290.  
  291.          File already exists - overwrite [y/n/a]
  292.  
  293.        'Y' will replace the file with the file from the archive, 'N' will skip
  294.        the  extraction  of this file, and 'A' will process all files from this
  295.        point as if a 'Y' answer was given for each file.  In  some  cases  the
  296.        name  of the file extracted will need to be translated to allow for the
  297.        naming conventions of different operating systems.  In these cases  the
  298.        original  name  will  be  printed,  followed  by  the  name  it will be
  299.        extracted under.
  300.  
  301.        On Apple systems data is divided into two sections in a file,  a  "data
  302.        fork"  and  a  "resource fork".  Under non-Apple operating systems only
  303.        the data fork will be extracted from  an  archive:  the  resource  fork
  304.        (which only Apple systems can make any use of) will be skipped.
  305.  
  306.        Example: To extract all files in ARCHIVE.HPK not beginning with an  'A'
  307.        to the current directory:
  308.  
  309.          HPACK X ARCHIVE [^A]*
  310.  
  311.   [V]  Display a directory of files inside an archive.  If no view options are
  312.        given  (these  are  explained  in the section "HPACK Options" below), a
  313.        listing in the following format is produced:
  314.  
  315.        HPACK - The multi-system archiver Version 0.78a0 (shareware version)
  316.        For Amiga, Archimedes, Atari ST, Macintosh, MSDOS, OS/2, and UNIX
  317.        Copyright (c) Peter Gutmann 1989 - 1992.  Release date: 1 Sept 1992
  318.  
  319.        Archive is 'ARCHIVE.HPK'
  320.  
  321.        System Length  Size  Ratio   Date     Time    Name
  322.        ------ ------  ----- -----   ----     ----    ----
  323.         MSDOS  18537   6217  66%  04/05/90 11:32:48  README.TXT
  324.         Atari   8301   3169  74%  27/12/90 21:02:39  LZSS.EXE
  325.         UNIX   30061   9127  70%  24/11/89 16:52:57  compr.method.txt
  326.         OS/2    8481   3282  61%  22/12/90 08:58:52  Comp.test
  327.          Mac       0      0   0%  01/07/91 18:20:20  Fast LZ Decoder using B..
  328.        ------ ------ ------ -----                    ----
  329.                65380  21795  67%                     Total of 5 files
  330.  
  331.        Done
  332.  
  333.        The archive used is displayed, followed by a  list  of  all  the  files
  334.        within the archive.  The fields for each file inside the archive are as
  335.        follows:
  336.  
  337.        System:  The system the file was archived under.
  338.  
  339.        Length:  The length of the file when unarchived.
  340.  
  341.        Size:    The size of the compressed file within the archive.
  342.  
  343.        Ratio:   The ratio of the compressed file to the uncompressed file.
  344.  
  345.        Date:    The creation date of the file within the archive.
  346.  
  347.        Time:    The creation time of the file within the archive.
  348.  
  349.        Name:    The name of the file within the archive.  If the name  is  too
  350.                 long  to fit on the screen then a '..' is appended to indicate
  351.                 this.  In addition files may have a single character prepended
  352.                 to  them:  an asterisk '*' before the name indicates that this
  353.                 file has been encrypted, a dash '-' indicates that it includes
  354.                 authentication  information,  and a hash '#' indicates that it
  355.                 is both encrypted and includes authentication information.
  356.                 Note that the name within the archive may not be the  same  as
  357.                 the name given to the unarchived file since translation may be
  358.                 necessary to allow for the  naming  conventions  of  different
  359.                 operating systems.
  360.                 Note also that in the example above the  file  originating  on
  361.                 the  Macintosh  has  a  length  of  zero bytes.  This does not
  362.                 necessarily mean the total data  size  is  zero  bytes,  since
  363.                 files originating on Apple systems have a second block of data
  364.                 called a resource fork which contains code and  other  program
  365.                 resources.   These  resources are only useful on Apple systems
  366.                 and are not shown as part of the  total  file  size  on  other
  367.                 systems.
  368.  
  369.        Finally the total length of all files within the archive,  uncompressed
  370.        and  compressed, the overall compression ratio for the archive, and the
  371.        number of files within the archive, is given.   If  any  filespecs  are
  372.        given,  only files which match those filespecs will be displayed.  This
  373.        is useful when you only want to extract certain files and would like to
  374.        see how much space they will use.
  375.  
  376.        If more than one archive is viewed, a  grand  total  of  the  size  and
  377.        number  of  files  in  all the archives viewed is printed.  The type of
  378.        information printed may be controlled by using the view options  (which
  379.        are explained in the section "HPACK Options" below).  The default is to
  380.        print all files and directories in the root directory  of  an  archive.
  381.        If  the  root  directory  contains no files or directories matching the
  382.        given filenames and/or wildcards, the error message "No matching  files
  383.        in  archive"  will  be printed.  To recursively display the contents of
  384.        all subdirectories, either the [-r]ecurse subdirectories option or  the
  385.        wildcard string '*/*' should be used.
  386.  
  387.        Example: To view the contents of any archives in the current directory
  388.  
  389.          HPACK V *
  390.  
  391.   [P]  View files within an archive.  This option will output the contents  of
  392.        one  or  more  files  within an archive, with a prompt for more between
  393.        files.  The output can  be  redirected  in  the  standard  manner,  for
  394.        example:
  395.  
  396.          HPACK P DATA CONTENTS.DOC | LPR
  397.  
  398.        will send the file CONTENTS.DOC from within the archive DATA.HPK to the
  399.        printer, and:
  400.  
  401.          HPACK P DATA DESCRIPTION.DOC | MORE
  402.  
  403.        will display the file DESCRIPTION.DOC with page breaks on your  screen.
  404.        Note  that  trying  to  display  non-text  files  in this manner can be
  405.        interesting, if not terribly productive.
  406.  
  407.        Example: To  display  the  file  README.TXT  from  within  the  archive
  408.        ARCHIVE.HPK:
  409.  
  410.          HPACK P ARCHIVE README.TXT
  411.  
  412.   [T]  Test the integrity  of  an  archive.   HPACK  will  display  the  usual
  413.        messages about extracting data as it unpacks and tests the data, and if
  414.        it thinks the data has been  corrupted  it  will  issue  the  following
  415.        warning message:
  416.  
  417.          Warning: File may be corrupted
  418.  
  419.        Otherwise HPACK will display:
  420.  
  421.          File tested OK
  422.  
  423.        If, when all files have been tested, there were corrupted files,  HPACK
  424.        will print the total number of corrupted files:
  425.  
  426.          Warning: n files were corrupt
  427.  
  428.        where n is the number of corrupted files.
  429.  
  430.        Note that this test is also performed  automatically  on  extracting  a
  431.        file from an archive.
  432.  
  433.        Example: To test the integrity of all MSDOS  executable  files  in  the
  434.        archive ARCHIVE.HPK:
  435.  
  436.          HPACK T ARCHIVE *.COM *.EXE
  437.  
  438.   [D]  Delete files from an archive.  All files given in the command-line  are
  439.        deleted from the given archive.
  440.  
  441.        I all files are deleted from an archive  (leaving  an  empty  archive),
  442.        HPACK will delete the archive as well.
  443.  
  444.        Example: To delete all Pascal program files (a commendable  move)  from
  445.        the archive ARCHIVE.HPK:
  446.  
  447.          HPACK D ARCHIVE *PAS
  448.  
  449.   [F]  Freshen files in an archive.  The dates of all specified files  in  the
  450.        archive  are compared with the dates of the same files on disk.  If the
  451.        version on disk is more recent than  the  stored  version,  the  stored
  452.        version  is  replaced  by  the  version  on  disk.  If all files in the
  453.        archive are uptodate, HPACK will display the message:
  454.  
  455.          Archive is uptodate
  456.  
  457.        and exit.
  458.  
  459.        Example: To freshen all files in the archive ARCHIVE.HPK:
  460.  
  461.          HPACK F ARCHIVE.HPK
  462.  
  463.   [R]  Replace files in an archive.   All  given  files  in  the  archive  are
  464.        replaced by their counterparts on disk.
  465.  
  466.        Example: To replace all the files which begin with the letters  A-G  in
  467.        the archive ARCHIVE.HPK with their couterparts on disk:
  468.  
  469.          HPACK R ARCHIVE [A-G]*
  470.  
  471.   [U]  Update files to an archive.  All specified files  not  already  in  the
  472.        archive  are added to the archive, and all files already in the archive
  473.        are replaced if the version on disk is more  recent  than  the  version
  474.        already in the archive.
  475.  
  476.        Example: To update the archive ARCHIVE.HPK  with  all  files  from  the
  477.        directory B:/DATA/JUNK:
  478.  
  479.          HPACK U ARCHIVE B:/DATA/JUNK
  480.  
  481.        Note that the last four options need to create temporary work files  on
  482.        disk.   Thus  it  is necessary to have at least twice as much free disk
  483.        space to work with as the total  length  of  the  archive.   All  other
  484.        options  use  only the archive file, so it is possible to use them with
  485.        minimal free disk space.
  486.  
  487.  
  488. HPACK Options:
  489.  
  490.   -0  Store files without attempting any compression.  This option can be used
  491.       to  quickly add incompressible files to an archive or when breaking up a
  492.       large file to move to another system via a multidisk archive when  space
  493.       isn't at a premium.
  494.  
  495.   -a  Store file attributes.  Many operating systems  support  two  levels  of
  496.       files,  those  classed  as  'normal',  and  those  classed  as 'hidden',
  497.       'invisible', 'system files', and  so  on  (for  example  the  Macintosh,
  498.       MSDOS,  and  the  Atari ST all have these file types).  By default HPACK
  499.       will  only  add  normal  files  to  an  archive.   However   using   the
  500.       [-a]ttributes  flag allows archiving of files with special attributes as
  501.       well as full restoration  of  attributes  when archives  are  extracted.
  502.       The [-a]ttributes flag is also necessary under some operating systems to
  503.       store extra information pertaining to a file, for example access control
  504.       information, file/directory type information, icons, and so on.
  505.  
  506.       HPACK will attempt to translate the attributes of files  from  different
  507.       systems  into equivalent file attributes for the local system.  This has
  508.       varying degrees of effectiveness: Many of  the  Apple  IIgs,  Atari  ST,
  509.       Macintosh,  MSDOS,  and  OS/2  attributes  are  equivalent  so  a direct
  510.       translation is possible; the Amiga,  the  Apple  IIgs,  the  Archimedes,
  511.       Unix, and VMS also have some of the read/write attributes in common, and
  512.       have  a  rough  equivalent  of  a  read-only  file  attribute  in  these
  513.       attributes; and QNX 2.x/3.x has no equivalent file attributes.
  514.  
  515.       If the [-d]irectory path store option is  used  HPACK  will  also  store
  516.       directory  attributes,  and  set  the directory attributes to the stored
  517.       values when creating the directories on extraction.
  518.  
  519.       Example: To extract all files in  the  root  directory  of  the  archive
  520.       ARCHIVE.HPK, restoring all possible attribute information:
  521.  
  522.         HPACK X -F ARCHIVE
  523.  
  524.   -b  Specify a base pathname for all files.  This option is followed  by  the
  525.       pathname  which  HPACK will use as a base path for all files to be added
  526.       to or extracted from an archive.  This option is  very  convenient  when
  527.       adding  a  number  of  files in the same directory to an archive or when
  528.       extracting an archive to a directory  which  is  not  the  same  as  the
  529.       current  directory.   It  is  also  useful  for  handling archives which
  530.       contain subdirectories.  To add files to a  subdirectory  within  HPACK,
  531.       the  base pathname is used to specify the path to the subdirectory, with
  532.       the actual file pathname given being the path inside HPACK in which  the
  533.       file  will  be stored.  In this case the argument given with the [-b]ase
  534.       path option is the part of the pathname outside  the  archive,  and  the
  535.       file pathname is the part of the pathname inside the archive.
  536.  
  537.       Example: To  extract  all  files  in  the  archive  ARCHIVE.HPK  to  the
  538.       directory D:/OUTPUT/DATA:
  539.  
  540.         HPACK X -BD:/OUTPUT/DATA ARCHIVE
  541.  
  542.       Example: To add the files FILE1, FILE2, TEXT, and  PROGRAM.EXE,  all  in
  543.       the directory D:/JUNK/DATA, to the archive ARCHIVE.HPK:
  544.  
  545.         HPACK A -BD:/JUNK/DATA ARCHIVE FILE[1-2] TEXT PROGRAM.EXE
  546.  
  547.       Example:  To  add  the  files  in  C:/JUNK/DATA/FILES  to  the   archive
  548.       ARCHIVE.HPK inside the archive directory DATA/FILES:
  549.  
  550.         HPACK A -BC:/JUNK ARCHIVE DATA/FILES/*
  551.  
  552.   -c  Encryption   options   (conventional   and    public-key    encryption).
  553.       Encrypt/decrypt   archive   data   using  a  selection  of  public-  and
  554.       conventional-key  encryption  algorithms.   Using   this   option   with
  555.       conventional-key  encryption  will  prompt  for  a passphrase before any
  556.       files are added, followed by a request  to  retype  the  passphrase  for
  557.       security  if the data is being encrypted.  This passphrase, which is not
  558.       echoed to the screen, should be a minimum of  eight  and  a  maximum  of
  559.       eighty  characters  long,  and  may contain any combination of upper and
  560.       lowercase letters, numbers, spaces,  punctuation  symbols,  and  control
  561.       characters.   If  public-key  encryption  is  used,  the  userID  of the
  562.       recipient of the data is specified as part of  the  encryption  command.
  563.       Although  HPACK itself will support non-ASCII text strings, the userID's
  564.       for public keys must be in ASCII format  for  compatibility  with  other
  565.       programs.  Be warned that forgetting or losing a conventional or public-
  566.       key encryption key will present you with a fairly  substantial  exercise
  567.       in cryptography.
  568.  
  569.       By default HPACK will encrypt entire  archives  (rather  than  just  the
  570.       files  in them), meaning that not even the archive directory can be read
  571.       by someone who does not have the decryption password.
  572.  
  573.       The encryption options are divided into  two  classes,  those  employing
  574.       conventional-key encryption and those employing public-key encryption:
  575.  
  576.       -c   Use conventional-key encryption to encrypt the entire archive,  the
  577.            same as [-c]rypt [a]ll.
  578.       -ci  Encrypt individual files  using conventional-key  encryption.   The
  579.            use  of this option is not generally recommended as it is not quite
  580.            as secure as the standard [-c]rypt [a]ll  option.   It  is  however
  581.            useful  when  only a few files need to be encrypted, the rest being
  582.            subject to constant change which makes encrypting them impractical.
  583.       -ca  Encrypt entire archive.  This  will  encrypt  not  only  the  files
  584.            themselves   but   all   additional   data   associated  with  them
  585.            (attributes, icons, and so on), as well as  the  archive  directory
  586.            information.   The only remaining accessible data is a small amount
  587.            of archive identification information  needed  to  allow  HPACK  to
  588.            process the archive.
  589.       -cs  Prompt for second password to access archive data.  This allows the
  590.            archive  directory  to be encrypted with one password, and files to
  591.            be encrypted with another password.  This option is useful if it is
  592.            desirable  to give a group of users access to the archive directory
  593.            but not to the files themselves, since the contents of the  archive
  594.            can  be  made  available  with  the  first  password,  but a second
  595.            password is required to access the files themselves.
  596.       -cpi<userID>
  597.            Encrypt individual files using the public  key  which  matches  the
  598.            given userID.  The public-key-encryption equivalent of the [-c]rypt
  599.            option.  This option is not recommended if more than a small number
  600.            of files are present in an archive due to the amount of time needed
  601.            to perform each public-key decryption calculation.
  602.       -cpa<userID>
  603.            Encrypt the entire archive using the public key which  matches  the
  604.            given userID.  The public-key-encryption equivalent of the [-c]rypt
  605.            [a]ll option.
  606.       -cps<userID>
  607.            Encrypt the archive with a secondary public key which  matches  the
  608.            given userID.  The public-key-encryption equivalent of the [-c]rypt
  609.            [s]econdary option.
  610.  
  611.       When processing an encrypted archive, all that is necessary is  to  tell
  612.       HPACK to handle encrypted data by specifying the [-c]rypt option.  HPACK
  613.       will determine the encryption type and prompt for passwords as necessary
  614.       as it processes the archive.  If the archive is public-key encrypted and
  615.       the recipients secret key is protected by encryption, HPACK will prompt:
  616.  
  617.         Please enter password for secret key (8..80 characters)
  618.  
  619.       If an incorrect password is given, HPACK will warn:
  620.  
  621.         Password is incorrect.
  622.  
  623.       and allow the password to be reentered.  Up to  three  attempts  at  the
  624.       password are allowed before HPACK gives up.
  625.  
  626.       When searching for the key corresponding to a given userID,  HPACK  will
  627.       perform a case-insensitive match of the given userID against any part of
  628.       the keys userID.  This means that only a partial userID need be given on
  629.       the command line, and HPACK will use the first key for which the partial
  630.       userID matches.  This makes  specifying  the  userID  easier  since  the
  631.       entire  ID  need  not  be  given, but also means care should be taken if
  632.       there are several similar userID's (all of which  may  match  a  certain
  633.       userID fragment) in a collection of keys.
  634.  
  635.       If there is a chance that the userID is ambiguous, the key can  also  be
  636.       specified  by its keyID using the standard C programming language format
  637.       for hexadecimal values namely a  prefix  of  '0x'  and  then  the  value
  638.       itself.   The  keyID  is the 6-digit hexadecimal value displayed for the
  639.       key.  As with userID's, HPACK  will  perform  a  case-insensitive  match
  640.       against any part of the full keyID.
  641.  
  642.       HPACK will also allow the public-key encryption  of  data  for  multiple
  643.       recipients,  meaning  that  a single encrypted archive can be sent to an
  644.       arbitrarily large number of recipients.   This  allows  archives  to  be
  645.       distributed to working groups or via mailing lists without necessitating
  646.       a seperate encrypted archive for each recipient.  Note that there  is  a
  647.       slightly  increased  risk  involved  in  this process since the chain of
  648.       intended recipients is only as strong as its weakest link - only one  of
  649.       the  private  keys  needs to be compromised to render the encrypted data
  650.       insecure.
  651.  
  652.       Multiple recipients are currently specified as a comma-seperated list of
  653.       standard  userID's  or keyID's.  There are moves afoot to add a mailing-
  654.       list capability to  the  public  keyring  format  which  will  be  fully
  655.       supported by HPACK if it eventuates.
  656.  
  657.       Example: To encrypt the entire archive ARCHIVE.HPK, leaving only a small
  658.       amount of identification information readable:
  659.  
  660.         HPACK A -C ARCHIVE
  661.  
  662.       Example: To encrypt all files to be added to the archive ARCHIVE.HPK:
  663.  
  664.         HPACK A -CI ARCHIVE
  665.  
  666.       Example: To encrypt the entire  archive  ARCHIVE.HPK  with  the  archive
  667.       directory  readable  by  "TheMunsters"  but the archive data itself only
  668.       readable by "UncleFester" or "CousinItt":
  669.  
  670.         HPACK A -CPATheMunsters -CPSUncleFester,CousinItt ARCHIVE
  671.  
  672.       Example: To encrypt the file BASEBALL.BAT  in  the  archive  ARCHIVE.HPK
  673.       with  the  key  corresponding  to  the  hexadecimal keyID A72F3B, taking
  674.       advantage of the fact that HPACK will match any fragment of the ID:
  675.  
  676.         HPACK A -CPI0x2F3 ARCHIVE BASEBALL.BAT
  677.  
  678.       Note that the public-key  decryption  process  can  take  a  long  time,
  679.       especially  when  it  must be performed multiple times (for example when
  680.       the [-c]rypt [p]ublic-key [i]ndividual files  option  is  used).   HPACK
  681.       will display the message:
  682.  
  683.         One moment...
  684.  
  685.       whenever it performs the calculations involved in public-key decryption.
  686.       This  process  can  often take significantly longer than one moment - on
  687.       slower machines HPACK may appear to have ground to a halt as it performs
  688.       the public-key decryption operation.  Unless there is a special need for
  689.       it, the use of conventional-key encryption is recommended.
  690.  
  691.       One advantage of public-key encryption is that  the  key  management  is
  692.       automatic  -  there  is  no  need  to  enter  passwords  to  perform the
  693.       encryption and decryption operations.  When passwords  must  be  entered
  694.       manually  for  conventional-key  encryption,  there  is a chance that an
  695.       incorrect password will be entered by  mistake.   If  this  happens  for
  696.       archive directories, HPACK will warn:
  697.  
  698.         Warning: Archive directory corrupted, probably due to
  699.                  incorrect password. Continue (y/n)
  700.  
  701.       Since the password was incorrect, the archive directory information  has
  702.       been  decrypted incorrectly.  The 'No' option should be selected and the
  703.       password reentered.
  704.  
  705.       If this happens for archived files, the  files  will  not  be  extracted
  706.       properly:
  707.  
  708.         Warning: File may be corrupted
  709.  
  710.       Again, the password should be reentered when HPACK is re-run.
  711.  
  712.   -d  Directory options.  This  hideously  complicated  command  has  a  large
  713.       number  of suboptions.  The basic command creates directories inside the
  714.       archive corresponding to the directories containing  the  file(s)  being
  715.       archived, in effect allowing you to archive entire directory trees.
  716.  
  717.       HPACK will add directories traversed only if there are  files  contained
  718.       in  them.   To  add  all  directories regardless of whether they contain
  719.       files or not, use the [-d]irectories [a]ll option (see below).
  720.  
  721.       Example: To add all files in all directories, along with the directories
  722.       themselves,   in   and  below  the  current  directory  to  the  archive
  723.       ARCHIVE.HPK:
  724.  
  725.         HPACK A -RD ARCHIVE *
  726.  
  727.       The extended directory options are are as follows:
  728.       <Note: Some of these aren't implemented yet: Feedback  on  whether  this
  729.       way of doing things is a good idea or not would be appreciated>.
  730.  
  731.       -dm  Mkdir: Create the given directories.
  732.            <Not yet implemented - if necessary this  can  be  faked  by  using
  733.            'hpack  a -da <path> <non-matching filespec>' where path is the new
  734.            directory to add and the non-matching filespec  ensures  that  only
  735.            the new directory, but none of the files in it, are added>
  736.       -dr  Rmdir: Delete the given directories.
  737.            <Not yet implemented>
  738.       -dv  Mvdir: Move the given directory into the second given directory.
  739.            Warning: Through injudicious use of this command it is possible  to
  740.            create   circular  directory  references,  or  to  cut  off  entire
  741.            directory  trees.   Do   not   try   to   move   directories   into
  742.            subdirectories of themselves! (Or should HPACK check for this??)
  743.            <Not yet implemented>
  744.       -da  Store/extract all directories scanned,  even  if  they  contain  no
  745.            files.  This option is useful for storing entire filesystems inside
  746.            archives and restoring entire directory trees from archives.
  747.       -dn  Do not create the  directory  inside  the  archive  if  it  doesn't
  748.            already  exist.   If  an  attempt  is  made  to  add  a  file  to a
  749.            nonexistent directory, HPACK will exit with the error message:
  750.  
  751.              Path not found
  752.  
  753.       -dc  Create only immediate containing directory for a  group  of  files,
  754.            not  the  entire  directory  path.   This  is mainly for use by GUI
  755.            versions of HPACK to allow extraction  of  individual  directories,
  756.            folders,  or  drawers  (depending on what the host operating system
  757.            calls them) of files.
  758.  
  759.       Example:  To  delete  the  directory  DATA/JUNK   inside   the   archive
  760.       ARCHIVE.HPK:
  761.  
  762.         HPACK A -DR ARCHIVE DATA/JUNK
  763.  
  764.       Note the use of the [A]dd command as a dummy command: In this  case  the
  765.       main command is ignored and only the directory option is used (ICK!).
  766.  
  767.       Example: To move all files and directories in and below DATA/JUNK in the
  768.       archive ARCHIVE.HPK into the directory STUFF:
  769.  
  770.         HPACK A -DV ARCHIVE DATA/JUNK STUFF
  771.  
  772.       Example: To add all files and directories (even empty ones) in and below
  773.       the current directory to the archive ARCHIVE.HPK:
  774.  
  775.         HPACK A -RPDA ARCHIVE
  776.  
  777.   -e  Add/use error recovery information.  This option allows  the  adding  of
  778.       error  recovery  information  to the archive when adding files, or makes
  779.       use of error recovery information present in  an  archive.   HPACK  will
  780.       write  extra information with the file data which may be used to recover
  781.       the data if the main  archive  directory  is  seriously  damaged.   This
  782.       recovery  information  will  increase the amount of data stored for each
  783.       file by about 20-25 bytes.  Note that although HPACK will add this extra
  784.       information, the current version will not make use of it.
  785.  
  786.       Example: To add all text files  in  the  directory  A:/DATA  to  archive
  787.       ARCHIVE.HPK, adding error recovery information for each file:
  788.  
  789.         HPACK -E ARCHIVE A:/DATA/*.TXT
  790.  
  791.       Example: To extract the same files from the archive, making use  of  the
  792.       error recovery information:
  793.  
  794.         HPACK X -E ARCHIVE *.TXT
  795.  
  796.   -i  Interactive mode - prompt for all actions.  This option  works  for  all
  797.       commands  except [V]iew files (for which it would be pointless).  Before
  798.       the file is processed, HPACK will ask whether you wish to  process  this
  799.       file;  answering  'Y'  will handle the file, 'N' will skip the file, and
  800.       'A' will process all files from this  point  (in  other  words  it  will
  801.       assume a 'Y' answer for each file from this point).
  802.  
  803.       Example: To add all files  in  the  current  directory  to  the  archive
  804.       ARCHIVE.HPK, prompting for each file before adding it:
  805.  
  806.         HPACK A -I ARCHIVE *
  807.  
  808.   -f  Force file move into/out of an archive.  This option can  be  used  with
  809.       the [A]dd, [F]reshen, [R]eplace, [U]pdate, and [X]tract commands to move
  810.       the files instead of merely copying the data into or out of an  archive.
  811.       Note  that  when the move option is used in conjunction with encryption,
  812.       HPACK will go to extreme lengths to destroy any traces of the file which
  813.       is  being moved.  Caution is recommended when using move with encryption
  814.       as forgetting the password or using the wrong public key  will  lead  to
  815.       the permanent loss of the encrypted data.
  816.  
  817.       If all files are moved out of an archive  (leaving  an  empty  archive),
  818.       HPACK will delete the archive as well.
  819.  
  820.       Example: To move all text files from the archive  ARCHIVE.HPK  into  the
  821.       current directory:
  822.  
  823.         HPACK X -F ARCHIVE *.TXT
  824.  
  825.   -k  Overwrite existing archive.  This only works  with  the  [A]dd  command.
  826.       Normally,  using  the [A]dd command will add any new files to the end of
  827.       an existing archive.  Using  the  [-k]ill  switch  will  erase  the  old
  828.       archive and create a new one.
  829.  
  830.       Example: To create the archive ARCHIVE.HPK on drive A:,  overwriting  it
  831.       if it already exists, and add all files in the current directory to it:
  832.  
  833.         HPACK A -K A:ARCHIVE
  834.  
  835.   -l  Security  options  (data  authentication).   This  option   allows   the
  836.       encapsulation  of  either  entire  archives or individual files inside a
  837.       secure envelope which it is computationally infeasible to  break.   This
  838.       option  allows  anyone  to  later  determine that the data has been both
  839.       untampered with, and genuinely came from the  source  (corresponding  to
  840.       the userID) from which it claims to have originated.
  841.  
  842.       When searching for the key corresponding to a given userID,  HPACK  will
  843.       perform a case-insensitive match of the given userID against any part of
  844.       the keys userID.  This means that only a partial userID need be given on
  845.       the command line, and HPACK will use the first key for which the partial
  846.       userID matches.  This makes  specifying  the  userID  easier  since  the
  847.       entire  ID  need  not  be  given, but also means care should be taken if
  848.       there are several similar userID's (all of which  may  match  a  certain
  849.       userID fragment) in a collection of keys.
  850.  
  851.       If there is a chance that the userID is ambiguous, the key can  also  be
  852.       specified  by its keyID using the standard C programming language format
  853.       for hexadecimal values namely a  prefix  of  '0x'  and  then  the  value
  854.       itself.   The  keyID  is the 6-digit hexadecimal value displayed for the
  855.       key.  As with userID's, HPACK  will  perform  a  case-insensitive  match
  856.       against any part of the full keyID.
  857.  
  858.       If the secret key is protected by encryption, HPACK will prompt:
  859.  
  860.         Please enter password for secret key (8..80 characters)
  861.  
  862.       If an incorrect password is given, HPACK will warn:
  863.  
  864.         Password is incorrect.
  865.  
  866.       and allow the password to be reentered.  Up to  three  attempts  at  the
  867.       password are allowed before HPACK gives up.
  868.  
  869.       The security options are as follows:
  870.  
  871.       -l<userID>
  872.            Secure the entire archive with security information  from  a  given
  873.            userID.
  874.       -li<userID>
  875.            Secure individual files rather than the archive as  a  whole,  with
  876.            security information for a given userID.  The use of this option is
  877.            not generally recommended since  the  generation  of  the  security
  878.            information  for  each  file  can  consume a considerable amount of
  879.            time, and since only the files themselves are secured it leaves the
  880.            file attributes and directory information open to modification.  It
  881.            is however useful when only a few files need  to  be  secured,  the
  882.            rest  being  subject  to  constant change which makes securing them
  883.            impractical.
  884.  
  885.       Example: To create the archive ARCHIVE.HPK, add all files in the current
  886.       directory to it, and secure it on behalf of your cat:
  887.  
  888.         HPACK A -LTHECAT ARCHIVE
  889.  
  890.   -m  Create a multipart archive.  Normally when HPACK runs out of disk  space
  891.       it will exit with an error message.  When this option is used HPACK will
  892.       instead prompt for another disk and continue  the  archive  on  the  new
  893.       disk.  In this manner it is possible to spread an archive which would be
  894.       too large for a single disk over several disks.   Due  to  their  rather
  895.       special   nature,  multipart  archives  do  not  support  the  [D]elete,
  896.       [F]reshen, [R]eplace, or [U]pdate commands (since, for example, deleting
  897.       a file from the middle of an archive which stretches over 15 disks would
  898.       be quite time-consuming).  All other operations are supported however.
  899.  
  900.       Example: To fully back up hard drive C: onto drive A:
  901.  
  902.         HPACK A -KMARDA A:ARCHIVE C:/*
  903.  
  904.       This will create the archive ARCHIVE.HPK on one or more disks  in  drive
  905.       A:   containing  the complete contents of the drive C: (the options used
  906.       are [-k]ill existing  archive,  [-m]ultipart  archive,  store  file  and
  907.       directory  [-a]ttributes,  [-r]ecurse through all subdirectories, for [-
  908.       d]irectories store [a]ll of them, even empty ones).  Once each disk  has
  909.       been completely filled, HPACK will prompt:
  910.  
  911.         Please insert the next disk and press a key
  912.  
  913.       followed by the message:
  914.  
  915.         Continuing...
  916.  
  917.       as it continues the archive on the next disk inserted.  Note the use  of
  918.       the [-k]ill existing archive option to overwrite any existing archive of
  919.       the same name which may already exist on the disk - if  HPACK  finds  an
  920.       archive  of the given name already on the disk and the [-k]ill option is
  921.       not specified, it will not, by default, overwrite it but will exit  with
  922.       an error message.
  923.  
  924.       Multipart archives have a minimum size of around 500 bytes (roughly  the
  925.       size  of  a disk sector for many disk formats - storing archive parts of
  926.       less than 500-odd bytes would be pointless).  If a section of  a  multi-
  927.       part archive is less than approximately 500 bytes HPACK will skip it and
  928.       move it to the next  (hopefully  less  full)  disk  after  printing  the
  929.       following warning:
  930.  
  931.         Warning: Archive section too short, skipping...
  932.  
  933.       If a multipart archive is small enough to fit onto a single disk,  HPACK
  934.       will store the archive as a standard archive instead of a multipart one.
  935.  
  936.       Example: To view the files in the previously created multipart archive:
  937.  
  938.         HPACK V A:ARCHIVE
  939.  
  940.       HPACK will automatically determine whether the archive  is  a  multipart
  941.       archive  or  not  so  the  [-m]ultipart  command  is only necessary when
  942.       creating the archive.  Since HPACK stores its directory  information  at
  943.       the  end of the archive, only the last disk or disks of the archive must
  944.       be read to obtain the archive directory.  Initially HPACK will prompt:
  945.  
  946.         Please insert the disk containing the last part of this archive and
  947.           press a key.
  948.  
  949.       If the wrong disk is inserted, HPACK will prompt:
  950.  
  951.         This is part <n> of a multipart archive.
  952.         Please insert the disk containing the last part of this archive and
  953.           press a key.
  954.  
  955.       where <n> is the part number of this section of the archive.
  956.  
  957.       Example: To extract the  single  file  LETTER.TXT  from  the  previously
  958.       created archive:
  959.  
  960.         HPACK X A:ARCHIVE LETTER.TXT
  961.  
  962.       HPACK will then prompt for the disk which contains the file LETTER.TXT:
  963.  
  964.         Please insert the disk containing part <n> of this
  965.           a key.
  966.  
  967.       where <n> is the part number  of  the  archive  section  which  contains
  968.       LETTER.TXT.
  969.  
  970.       Example: To fully  restore  the  contents  of  a  hard  drive  from  the
  971.       previously created archive:
  972.  
  973.         HPACK X -ARDA A:ARCHIVE
  974.  
  975.       HPACK will prompt for the last part of the archive as usual and then for
  976.       each disk in turn as it extracts the files from the archive.
  977.  
  978.   -o  Overwrite on extraction options.  Normally when HPACK tries to extract a
  979.       file  which already exists, it will prompt for whether the existing file
  980.       should be overwritten or not.   With  this  switch  it  is  possible  to
  981.       specify a default action to be taken.  There are four possibilities:
  982.  
  983.       -oa  Automatically overwrite [A]ll existing files on extraction.
  984.       -on  Automatically overwrite [N]one of the existing files on extraction.
  985.       -os  [S]mart overwrite.  HPACK will change the extension of the file  to
  986.            be  extracted to "000", and try to extract this file.  If a file of
  987.            this name already exists, the extension will be  changed  to  "001"
  988.            and so on until it is possible to extract the file.  This option is
  989.            very useful for files that have been archived  on  a  system  which
  990.            allows  filenames  which  are  longer  or  more  complex than those
  991.            allowed by the local system and which due  to  the  filename  being
  992.            truncated or translated end up with identical names.  Note that the
  993.            term "extension" can mean different things to  different  operating
  994.            systems - HPACK will do its best to use the local equivalent.
  995.       -op  [P]rompt for new filename.  HPACK will ask for a new  filename  and
  996.            try to use that name, repeating until a non-conflicting filename is
  997.            given.
  998.  
  999.       Example: To extract all  files  from  the  archive  ARCHIVE.HPK  to  the
  1000.       current directory, skipping any files that already exist:
  1001.  
  1002.         HPACK X -ON ARCHIVE
  1003.  
  1004.   -r  Recurse through  subdirectories.   HPACK  will  step  through  all  sub-
  1005.       directories  of  the  current  directory,  and  add all files with names
  1006.       matching those given on the command line.
  1007.  
  1008.       Example: To add all files in all directories in and  below  the  current
  1009.       directory to the archive ARCHIVE.HPK:
  1010.  
  1011.         HPACK A -R ARCHIVE *
  1012.  
  1013.   -s  Run in stealth mode.  All messages except warnings  and  error  messages
  1014.       are  suppressed.   HPACK  will  automatically turn on stealth mode if it
  1015.       detects it is running in  the  background  on  operating  systems  which
  1016.       support background operation.
  1017.  
  1018.       Example: To add all files in the current directory to  all  archives  in
  1019.       the  current  directory,  without printing the usual progress reports to
  1020.       the screen:
  1021.  
  1022.         HPACK A -S *
  1023.  
  1024.   -u  Unified compression mode.  In this mode HPACK will  attempt  to  achieve
  1025.       increased  compression  by using unified compression across all files to
  1026.       be added.  This is especially  effective  when  many  generally  similar
  1027.       files  or  many  small  files  are  being  added  to  an  archive.   The
  1028.       disadvantage of unified  compression  is  that  the  archive  cannot  be
  1029.       updated  or  changed  later,  and  that when extracting individual files
  1030.       there is a slight  speed  penalty  as  intervening  files  are  skipped.
  1031.       Unified compression is ideal for storing data like Usenet news articles,
  1032.       collections  of  icons,  and  program  source  code,  in   which   cases
  1033.       significant compression gains are usually seen.
  1034.  
  1035.       Example: To all all files  in  /USR/SPOOL/NEWS/COMP/COMPRESSION  to  the
  1036.       archive COMPRESS.HPK using the unified compression mode:
  1037.  
  1038.         HPACK A -U COMPRESS /USR/SPOOL/NEWS/COMP/COMPRESSION/*
  1039.  
  1040.   -v  View options.  Normally when the [V]iew  command  is  used,  HPACK  will
  1041.       print all the directories and files in an archive.  With this options it
  1042.       is possible to specify which parts of the  archive  are  to  be  viewed.
  1043.       There are three possible options:
  1044.  
  1045.       -vf  Display only matching files.
  1046.       -vd  Display only matching directories.
  1047.       -vs  Sort files.  Normally files are displayed in  the  order  in  which
  1048.            they  are  stored  within the archive.  Using this option will sort
  1049.            the files by name before displaying them.
  1050.  
  1051.       Example:  To  print  all  the  files,  but  not   any   directories   or
  1052.       subdirectories, in the archive ARCHIVE.HPK:
  1053.  
  1054.         HPACK V -VF ARCHIVE.HPK
  1055.  
  1056.   -w  Treat files as  archive  comments.   This  makes  the  [A]dd,  [D]elete,
  1057.       [F]reshen,  [R]eplace,  and  [U]pdate commands work for archive comments
  1058.       instead of normal files.  Archive comments are files which are displayed
  1059.       when the [V]iew archive command is used, and may contain text describing
  1060.       the  contents  of  the  archive,  ANSI  extended  characters,  graphics,
  1061.       digitised  sound,  even  full  motion  video with 16-bit stereo sound if
  1062.       desired.  Most CLI versions of HPACK  will  currently  only  handle  the
  1063.       displaying  of  plain  text,  although  some  will handle ANSI-text type
  1064.       archive comments as well.  Comments can be added, deleted, replaced, and
  1065.       so  on  just  like  normal  files.  Subdirectories can contain their own
  1066.       comments, and each directory can contain  multiple  comment  files.   In
  1067.       addition  comment filenames are not treated as normal archive filenames,
  1068.       so a directory can contain a comment file and a normal archived file  of
  1069.       the same name.  Possible archive comment types are:
  1070.  
  1071.       -w   Plain text comment.  This can be entered in free-form  since  HPACK
  1072.            will  automatically  word  wrap  the  text  to fit the screen size.
  1073.            Plain text comments may  also  contain  formatting  commands  which
  1074.            control  the  way  the  text is displayed.  For more information on
  1075.            formatting the text comments, see the extended  documentation  file
  1076.            HPACKEXT.DOC.
  1077.       -wa  ANSI text comment.  This type of comment can contain  the  extended
  1078.            8-bit character set used by IBM PC's, as well as ANSI escape codes.
  1079.            No reformatting of any type is done on ANSI  comments.   Note  that
  1080.            the plain text comment type is preferred, since many systems cannot
  1081.            display the extended ANSI character set or  interpret  ANSI  escape
  1082.            codes.   Also  note that if an ANSI comment is stored as plain text
  1083.            HPACK will quietly delete all extended characters and  ANSI  escape
  1084.            codes when it displays the comment, to make it conform to the 7-bit
  1085.            ASCII character set.
  1086.       -wg  GIF format graphics comment.  Display of  this  comment  format  is
  1087.            generally  only  suported  on  systems  running graphics-based user
  1088.            interfaces.
  1089.       -wj  JPEG format graphics comment.  Display of this  comment  format  is
  1090.            generally  only  suported  on  systems  running graphics-based user
  1091.            interfaces.
  1092.       -wm  MPEG format graphics comment.  Display of this  comment  format  is
  1093.            generally  only  suported  on  systems  running graphics-based user
  1094.            interfaces.
  1095.  
  1096.       Example: To view all comment-type files in the  archive  ARCHIVE.HPK  as
  1097.       files instead of displaying them as comments:
  1098.  
  1099.         HPACK V -W ARCHIVE.HPK
  1100.  
  1101.   -x  Text file translate options.  Different  systems  store  text  files  in
  1102.       different  formats,  for example on the Amiga, the Archimedes, and under
  1103.       Unix, these are stored in ASCII format with a linefeed  at  the  end  of
  1104.       each  line; on the Atari ST and under MSDOS and OS/2, there are carriage
  1105.       return/linefeed pairs at the end of each line;  and  on  the  Macintosh,
  1106.       there  are carriage returns at the end of each line.  Some systems store
  1107.       text in a non-ASCII format altogether, for example IBM systems which use
  1108.       the  EBCDIC character set, and Prime systems which use their own bizarre
  1109.       text encoding technique.  Using this option it is  possible  to  specify
  1110.       translation  of  different  character systems and end-of-line markers to
  1111.       the one used by the local system.  In most  cases  the  [-x]late  option
  1112.       will  suffice,  however it is possible to override the translation using
  1113.       the following options:
  1114.  
  1115.       -x   Smart translate.  HPACK will attempt  to  translate  all  files  it
  1116.            recognises  as  text  files  from  the  textfile format used on the
  1117.            system the file was archived on to the textfile format used on  the
  1118.            system the file is being extracted on.  In most cases  this  option
  1119.            will be the only one necessary.
  1120.       -xr  Treat carriage  return  (ASCII  13)  as  end-of-line  marker.   The
  1121.            Macintosh stores text this way.
  1122.       -xl  Treat linefeed (ASCII 10)  as  end-of-line  marker.   Text  on  the
  1123.            Amiga, the Archimedes, and UNIX systems is stored in this manner.
  1124.       -xc  Treat carriage return/linefeed pairs  as  end-of-line  marker.  The
  1125.            Atari ST, MSDOS and OS/2 store text files like this.
  1126.       -xxnn
  1127.            Treat the one- or two-character hexadecimal value 'n'  or  'nn'  as
  1128.            the  character  to  use  as the end-of-line delimiter.  For example
  1129.            when moving textfiles from a QNX 2.x/3.x system (which uses the  RS
  1130.            character, ASCII 30 or 1E hexadecimal), the option would be -xx1e.
  1131.       -xe  Translate the character set from EBCDIC  to  ASCII.   Text  on  IBM
  1132.            systems is stored this way.
  1133.       -xp  Translate the character encoding from that used on Prime systems to
  1134.            ASCII.
  1135.       -xa  Translate from ASCII to ASCII.
  1136.  
  1137.       The textfile translation works by  first  translating  entire  character
  1138.       sets  (either  ASCII,  Prime  ASCII  or  EBCDIC)  if necessary, and then
  1139.       translating  the  end-of-line  characters,  depending  on  the   options
  1140.       specified.
  1141.  
  1142.       The end-of-line translation options are only available where they  would
  1143.       make  sense  (for  example the ability to translate linefeed to linefeed
  1144.       isn't particularly useful).  The possible translation options are  shown
  1145.       below,  with  LF being the linefeed character, CR being carriage return,
  1146.       and CRLF being carriage return/linefeed pairs:
  1147.  
  1148.                 To |  Atari ST          Amiga
  1149.                    |    MSDOS         Archimedes        Macintosh
  1150.            From    |    OS/2            Unix
  1151.          ----------+-----------------------------------------------
  1152.           Atari ST |
  1153.            MSDOS   |                    [-xc]              [-xc]
  1154.            OS/2    |     ---         CRLF -> LF         CRLF -> CR
  1155.                    |
  1156.            Amiga   |
  1157.          Archimedes|    [-xl]                              [-xl]
  1158.            Unix    |  LF -> CRLF         ---              LF -> CR
  1159.                    |
  1160.                    |    [-xr]           [-xr]
  1161.          Macintosh |  CR -> CRLF       CR -> LF             ---
  1162.                    |
  1163.  
  1164.       Example: To extract all files with the extension .TXT from  the  archive
  1165.       ARCHIVE.HPK,  translating  linefeed characters into whatever end-of-line
  1166.       character the local system uses:
  1167.  
  1168.         HPACK X -XL ARCHIVE *.TXT
  1169.  
  1170.       Example: To extract all files with the extension .TXT from  the  archive
  1171.       ARCHIVE.HPK, translating the files from EBCDIC to ASCII, and translating
  1172.       all carriage return characters to the end-of-line character used by  the
  1173.       local system:
  1174.  
  1175.         HPACK X -XEXR ARCHIVE *.TXT
  1176.  
  1177.   -z  Extended options.  These are highly system-specific and in general  will
  1178.       only be present on one particular version of HPACK.  They either support
  1179.       the storing/extraction of system-specific information  in  archives,  or
  1180.       the  special handling of data which has been archived on another system.
  1181.       The recognised options are:
  1182.  
  1183.       -zinvert
  1184.              Archimedes version only.   ADFS  doesn't  support  extensions  to
  1185.              filenames  since dots are used as directory delimiters, which can
  1186.              lead to problems when moving,  for  example,  source  code  files
  1187.              ending  with  the  traditional .c and .h to the Archimedes.  Many
  1188.              programs allow a workaround where the file foo.c is  accessed  as
  1189.              c.foo.   This  option  allows  this  form  of  inversion  of  the
  1190.              filename/directory  structure  so  that  *.c  and  *.h  would  be
  1191.              extracted  as  c.*  and  h.*.   This  command  usually invokes an
  1192.              intense sense of disbelief in non-Archimedes owners.
  1193.              Incidentally,  non-Archimedes  owners   may   wonder   what   the
  1194.              Archimedes  uses  in place of a '.' in filenames.  It uses a '/',
  1195.              of course.
  1196.              <Not yet implemented - will be  implemented  when  HPACK-internal
  1197.              mkdir() and mv() calls exist>
  1198.       -zlower
  1199.              Amiga, Archimedes,  OS/2,  Macintosh,  and  Unix  versions  only.
  1200.              Force  all  file  and directory names to lowercase.  Some systems
  1201.              store file and directory names in  uppercase  only.   Using  this
  1202.              option  all  names  will  be  converted  to  lowercase before any
  1203.              operations (such as [V]iew archive, [X]tract from archive, and so
  1204.              on), are performed on them.  When processing Atari ST, MSDOS, and
  1205.              some  OS/2  archives,  the  use  of  the  [-zlower]   option   is
  1206.              recommended.
  1207.       -znoumask
  1208.              Unix version only.  Normally the setting of the umask environment
  1209.              variable  affects the attribute bits of any files and directories
  1210.              HPACK creates.  This option overrides the umask setting and  uses
  1211.              the attributes stored within the archive.  Since these attributes
  1212.              can be set to allow outsiders  read/write  access  to  files  and
  1213.              directories  which  would  normally  be  off-limits to them, this
  1214.              option should be used with care.
  1215.       -zrsx  VMS version only.  Normally VMS files can have 39  characters  of
  1216.              filename  and 39 characters of extension, or type.  This can lead
  1217.              to  strange-looking  filenames  when  they  are  truncated   from
  1218.              operating  systems  which  allow  longer  or more flexible names.
  1219.              Using this option truncates filenames  to  an  RSX-11  compatible
  1220.              format,  which  results  in more traditional-looking names with 9
  1221.              characters of filename and three characters  of  file  type,  and
  1222.              directory names with 9 characters of filename.
  1223.       -zs    MSDOS version only.   Check  all  files  for  [s]afe  extraction.
  1224.              MSDOS  has  a  serious  problem in that when a file with the same
  1225.              name as a device driver is extracted (for example 'CON',  'COM1',
  1226.              or  'LPT1')  it  will  force  the  contents of that file into the
  1227.              device driver.  The damage can be minor for devices like 'CLOCK$'
  1228.              (it  will  at  a minimum mangle the system date and time, perhaps
  1229.              scramble the CMOS ram, or cause the system to  hang  -  even  the
  1230.              changing of system dates can cause problems on a system running a
  1231.              computer bulletin board which relies on correct timestamps),  all
  1232.              the  way  through to very serious for devices like 'SMARTAAR' (it
  1233.              will corrupt the disk cache  and  therefore  corrupt  the  drives
  1234.              being cached).
  1235.  
  1236.              The [s]afe option will check each file before extracting it,  and
  1237.              if it corresponds to a device driver will print the warning:
  1238.  
  1239.                File corresponds to device driver - skipping
  1240.  
  1241.              and move on to the next file.  The only way in which  HPACK  will
  1242.              allow  a  file  of  this  type  to  be  extracted is by using the
  1243.              [-o]verwrite [p]rompt option, in which you will be prompted for a
  1244.              new  filename  to  extract  under.   Even [-o]verwrite [s]mart is
  1245.              unsafe since the peculiar handling of device drivers by DOS makes
  1246.              the automatic substitution of a new filename very difficult.
  1247.  
  1248.              Filenames which can cause these problems are virtually unheard-of
  1249.              - they would have to be created deliberately by a malicious user,
  1250.              in which case there are few limits on the potential  damage  they
  1251.              can cause.
  1252.       -ztype<type-association>
  1253.              Archimedes,  Apple  IIgs,  and  Macintosh  versions  only.   Some
  1254.              operating  systems  store  file  type  information for each file.
  1255.              HPACK will, when extracting files,  try  to  determine  the  type
  1256.              information  for each file and set it correctly.  However in some
  1257.              cases no type information can be determined,  or  the  determined
  1258.              information  may  be  incorrect.   This option can be used to set
  1259.              type information for a file,  or  to  override  HPACK's  internal
  1260.              type-determining rules.
  1261.  
  1262.              Type information is given as a  type-association,  associating  a
  1263.              file  extension  with  whatever type information the OS requires,
  1264.              and is given in the form:
  1265.  
  1266.                .<extension>=<type info>{,<type info>}
  1267.  
  1268.              For example to associate the Macintosh ThinkC  source  file  type
  1269.              with  the extension ".c", the type argument would be "TEXT,KAHL",
  1270.              corresponding to the ThinkC file type and creator type.
  1271.  
  1272.              Example: To associate the ".c" extension on  the  Macintosh  with
  1273.              the ThinkC source file type:
  1274.  
  1275.                -ztype.c=TEXT,KAHL
  1276.  
  1277.              Example: To associate the ".gif" extension on the Archimedes with
  1278.              the GIF file type:
  1279.  
  1280.                -ztype.gif=693
  1281.  
  1282.              The types given  above  are  actually  already  part  of  HPACK's
  1283.              default  rule  set  for  type associations, but can be overridden
  1284.              with the use of the [-ztype] option if desired.
  1285.  
  1286.  
  1287. HPACK Script Files:
  1288.  
  1289.   Whenever HPACK encounters a filename beginning  with  an  '@'  character  it
  1290.   treats  the  rest  of  the  filename as a file containing a list of files to
  1291.   process combined with commands which control the operation of HPACK.  Script
  1292.   files have the following format:
  1293.  
  1294.   -  Leading spaces/tabs (whitespace) are ignored.
  1295.  
  1296.   -  Lines with a '#' as the first non-whitespace  character  followed  by  at
  1297.      least  one  whitespace  character  are  treated  as  comment  lines.  For
  1298.      compatibility with future versions of HPACK which will include  scripting
  1299.      there  should  always be at least one whitespace character after the '#'.
  1300.      If HPACK finds a non-whitespace character following a '#',  it  will  try
  1301.      and  interpret  it  as  a  script  command.   If  it cannot interpret the
  1302.      command, it will warn:
  1303.  
  1304.        Warning: Unknown script command
  1305.  
  1306.   -  All other lines are treated as filenames for HPACK to process.
  1307.  
  1308.   -  Lines may  be  terminated  by  either  linefeeds,  carriage  returns,  or
  1309.      carriage return/linefeed pairs, HPACK isn't particular.
  1310.  
  1311.      A sample script is:
  1312.  
  1313.        # Sample script file
  1314.  
  1315.        # Save latest work
  1316.        /users/peterg/hpack/src/*.c
  1317.        /users/peterg/hpack/src/*.h
  1318.        /users/peterg/hpack/src/asm/*.asm
  1319.  
  1320.        # Save correspondence
  1321.        /usr/spool/mail/p*
  1322.  
  1323.    Note that the script files themselves are not subject to  being  overridden
  1324.    by  the  base  path  specified  with  the  [-b]ase  path option (see "HPACK
  1325.    Options" above).  However filenames given within the script  file  will  be
  1326.    overridden by the base path.
  1327.  
  1328.    Example: To freshen the archive ARCHIVE.HPK with all the files in the files
  1329.    matching SCRIPT* as well as MAIL.TXT and COMPMAIL.TXT:
  1330.  
  1331.      HPACK F ARCHIVE MAIL.TXT @SCRIPT* COMPMAIL.TXT
  1332.  
  1333.  
  1334. HPACK Archive Integrity
  1335.  
  1336.   HPACK checks the integrity of files stored within an archive by  encoding  a
  1337.   continuous  checksum  as part of each file when it is archived, and decoding
  1338.   it as the file is extracted.  As soon as an error is encountered, HPACK will
  1339.   skip  over  the  rest  of the file and move on to the next one.  If the file
  1340.   checksums differ then it may be reasonably assumed that there is an error in
  1341.   the  extracted  data.   This  is  important:  The  entire physical universe,
  1342.   including HPACK itself, may one day collapse back into an  infinitely  small
  1343.   space. Should another universe  subsequently  re-emerge,  the  integrity  of
  1344.   HPACK archives in that universe cannot be guaranteed.
  1345.  
  1346.   HPACK also checksums the archive directory.  If an error  is  found  in  the
  1347.   directory information, the message:
  1348.  
  1349.     Warning: Archive directory corrupted. Continue (y/n)
  1350.  
  1351.   will be displayed.  Hitting 'N' at this point will  abort  any  attempts  to
  1352.   process  the archive, hitting 'Y' will process the (damaged) archive.  HPACK
  1353.   will attempt some error  recovery  in  this  case  (for  example  files  and
  1354.   directories  which  seem  to be in impossible directories will be moved into
  1355.   the root directory), and some files may be able to be recovered.   If  error
  1356.   recovery  information  (specified  with  the  [-e]rror  recovery option (see
  1357.   "HPACK Options" above)) is present,  chances  of  recovering  data  from  an
  1358.   archive with a corrupted directory are greatly enhanced.
  1359.  
  1360.  
  1361. HPACK Archive/Data Authentication:
  1362.  
  1363.   Data authentication facilities in an archiver should provide  the  following
  1364.   features:
  1365.  
  1366.   1.  Sender authenticity.  The data could only  have  come  from  the  source
  1367.       which it is supposed to have come from.
  1368.  
  1369.   2.  Data integrity measures.  Any attempt to tamper with the data should  be
  1370.       recognised and reported by the authentication system.
  1371.  
  1372.   3.  Non-repudiation of origin.  The originator  of  the  data  cannot  later
  1373.       disclaim responsibility for it.
  1374.  
  1375.   HPACK includes provisions for  authenticating  archived  data  by  adding  a
  1376.   unique  digital  signature  to  either  entire  archives or individual files
  1377.   within an archive.  This works exactly like a normal signature on a piece of
  1378.   paper,  proving  that  the  sender  was  the  true originator of the file or
  1379.   archive.  Forgery of a digital signature of  this  sort  is  computationally
  1380.   infeasible,  and  once  the  data  has  been  signed the sender cannot later
  1381.   disavow his or her signature.  In addition a cryptographic checksum  of  the
  1382.   data  or  archive  is  made  and  included as part of the signature to allow
  1383.   detection of  any  attempts  to  tamper  with  the  data.   Like  forging  a
  1384.   signature, defeating the checksum is computationally infeasible.
  1385.  
  1386.   When the data in an  archive  with  authentication  information  present  is
  1387.   extracted  or  tested,  an  authentication check is performed for the entire
  1388.   archive before it is  processed.   Similarly,  an  authentication  check  is
  1389.   performed  on  files  before  they  are extracted if there is authentication
  1390.   information present.
  1391.  
  1392.   In order for the authenticity information  generation  and  checking  to  be
  1393.   possible,  two  key  files  are  required.   To  secure  archives,  the file
  1394.   SECRING.PGP, which contains the  secret  key  of  the  person  securing  the
  1395.   archive,  is  required.   To  check  secured archives, the file PUBRING.PGP,
  1396.   which contains the public key of the person or organization who  signed  the
  1397.   file  or  archive  is  needed.  These key files are generated and managed by
  1398.   version 2.0  or  higher  of  Philip  Zimmermanns  excellent  PGP  encryption
  1399.   package.  If you don't have a copy of PGP, it is recommended you obtain one.
  1400.   PGP  is freely available on many archive sites, computer bulletin boards and
  1401.   other systems.  PGP is also required to handle any key management,  and  for
  1402.   authentication  of  the keys themselves.  The PGP documentation and portions
  1403.   of the extended HPACK documentation HPACKEXT.DOC are recommended reading for
  1404.   those  wanting  more  information  on the background of PGP and the security
  1405.   techniques used by PGP and HPACK.
  1406.  
  1407.   If PEM (Privacy-Enhanced Mail) ever becomes a reality,  HPACK  will  support
  1408.   PEM/PKCS  format  keys  as  well  as  PGP  ones.  This will allow data to be
  1409.   encrypted and decrypted inside the US with PEM keys and outside the US  with
  1410.   PGP  keys,  allowing,  for  the  first time, the easy transfer of public-key
  1411.   encrypted data to and from the US.
  1412.  
  1413.   Before HPACK can use it, the secret keyring SECRING.PGP must  have  a  small
  1414.   amount  of  extta information added to it.  Details on this are given in the
  1415.   section "Using PGP Secret Keyrings" below.
  1416.  
  1417.   Like PGP, HPACK will  either  search  for  the  key  files  in  the  current
  1418.   directory or use the environment variable PGPPATH to look for the file.  The
  1419.   PGPPATH variable should contain the path to the PUBRING.PGP and  SECRING.PGP
  1420.   files,  so  for example if they were in the directory /BIN/PGP, then PGPPATH
  1421.   should be set with:
  1422.  
  1423.     set PGPPATH=/bin/pgp               (MSDOS, OS/2)
  1424.  
  1425.   or
  1426.  
  1427.     setenv PGPPATH ~/bin/pgp           (Unix csh)
  1428.  
  1429.   or
  1430.  
  1431.     PGPPATH=bin/pgp; export PGPPATH    (Unix sh)
  1432.  
  1433.   If the PGPPATH directory exists and the key files are present  in  both  the
  1434.   current  and  the  PGPPATH directories, the keyring in the PGPPATH directory
  1435.   will be searched first, and if no matching key is found  the  local  keyring
  1436.   will  be  checked.   This means that by default the master keyring is always
  1437.   used, overriding any local keys if necessary.
  1438.  
  1439.   If the data in the archive, or the archive itself, is  to  be  checked,  the
  1440.   authentication  check  will be performed using the key found in PUBRING.PGP.
  1441.   If the authentication check succeeds, the message:
  1442.  
  1443.     Good signature from <name>.
  1444.     Signature made on <date>.
  1445.  
  1446.   will be displayed, with <name> being the name of the person or  organization
  1447.   who made the signature, and <date> being the date the signature was made (on
  1448.   some systems the signature time may be off by a  few  hours  if  the  system
  1449.   doesn't  adjust for different time zones properly).  If the check fails, the
  1450.   message:
  1451.  
  1452.     Warning: Bad signature, doesn't match file contents.
  1453.     Bad signature from <name>.
  1454.     Signature made on <date>.
  1455.  
  1456.   will be printed.  If the archive is  a  multipart  archive  (for  which  the
  1457.   authentication  check  can  take  some time since an archive stretching over
  1458.   several disks needs to be processed), the message:
  1459.  
  1460.     Verify multipart archive authenticity [y/n]
  1461.  
  1462.   is displayed.  'Y' will check the authenticity of the archive, 'N' will skip
  1463.   the authenticity check and continue with processing the archive.
  1464.  
  1465.   If the data in the archive, or the archive itself, is  to  be  secured,  the
  1466.   authentication  information  will  be  generated  using  the  key  found  in
  1467.   SECRING.PGP.
  1468.  
  1469.   The signature scheme used is the  RSA  public  key  cryptosystem  (for  more
  1470.   information  on  this  and  the  PGP  encryption  package  see  the extended
  1471.   documentation HPACKEXT.DOC).  This scheme involves the manipulation of  very
  1472.   large  numbers, which can be quite time-consuming on slow systems, where the
  1473.   signature generation and checking can take several minutes (for this  reason
  1474.   the  use  of authentication for entire archives rather than individual files
  1475.   in an archive is recommended).
  1476.  
  1477.   Unlike encryption software, authentication  code  is  not  export-restricted
  1478.   from  the US.  The U.S. Code of Federal Regulations, Title 22 which includes
  1479.   sub-chapter M, "International Traffic in Arms Regulations" (ITAR), makes  an
  1480.   exception for software that can only be used for authentication purposes and
  1481.   cannot not be used for general-purpose encipherment and decipherment, as  is
  1482.   the case for the data authentication code in HPACK.
  1483.  
  1484.  
  1485. HPACK Archive/Data Encryption
  1486.  
  1487.   HPACK allows data stored in an archive to be encrypted  with  a  variety  of
  1488.   public  or  conventional-key  encryption  algorithms.   Encryption of either
  1489.   entire archives or individual files is possible,  as  well  as  the  use  of
  1490.   multiple keys to encrypt different sections of an archive (though the use of
  1491.   public-key encryption is preferred for this since its inherent automatic key
  1492.   management greatly simplifies handling the encrypted data).
  1493.  
  1494.   When chosing  an  encryption  key  for  a  conventional-key  algorithm,  the
  1495.   following guidelines should be observed:
  1496.  
  1497.   - HPACK allows keys of up to  80  characters  in  length.   These  keys  can
  1498.     contain  letters,  numbers,  spaces, and punctuation.  This fact should be
  1499.     made use of to the fullest, with preferred passwords being entire  phrases
  1500.     rather  than  individual  words.   There  exist programs designed to allow
  1501.     high-speed password cracking  of  conventional-key  encryption  algorithms
  1502.     which  can,  in  a matter of hours (sometimes minutes, even seconds in the
  1503.     case of very weak algorithms), attempt to use the contents of  an  average
  1504.     large  dictionary  as sample passwords.  Most passwords composed of single
  1505.     words can be broken with  ease  in  this  manner,  even  in  the  case  of
  1506.     algorithms  like  the  MDC  one  which  is  used  by HPACK, which has been
  1507.     specially designed to be resistant to this form of attack (doing a  brute-
  1508.     force  search  of  all  8-letter  passwords (the minimum length allowed by
  1509.     HPACK) assuming a worst-case situation  in  which  the  password  contains
  1510.     lowercase  letters  only,  can  be accomplished in 662 years on a fast CPU
  1511.     (Sparcstation IPX) if the attacker knows the  contents  of  the  encrypted
  1512.     file(s) in advance - or about 8 months on  a  network  of  1000  of  these
  1513.     machines.   Using  an  intelligent  dictionary-based cracking program will
  1514.     reduce this time significantly).
  1515.  
  1516.   - Simple modifications to passwords should  not  be  trusted.   Capitalizing
  1517.     some letters, spelling the word backwards, adding one or two digits to the
  1518.     end, and so on, only present a slightly more difficult  challenge  to  the
  1519.     average password-cracker than plain unadorned passwords.
  1520.  
  1521.   - Probably the most difficult passwords to crack in  this  manner  are  ones
  1522.     comprising  phrases  or sentences, since instead of searching a small body
  1523.     of text like the contents of a dictionary, the cracker must search a  much
  1524.     larger  corpus  of data, namely all possible phrases in the language being
  1525.     used.  Needless to say, the use of common phrases should be avoided, since
  1526.     these will be an obvious target for crackers.
  1527.  
  1528.   As  is  the  case  when  using  public-key   encryption   for   data/archive
  1529.   authentication,  the  secret  keyring  SECRING.PGP will need to have a small
  1530.   quantity of extra information added to it, for which details  are  given  in
  1531.   the section "Using PGP Secret Keyrings" below.
  1532.  
  1533.  
  1534. Using PGP Secret Keyrings
  1535.  
  1536.   Like PGP, HPACK can store its secret keys in an encrypted format to  protect
  1537.   them  from  prying  eyes.   However  the  encryption algorithm HPACK uses is
  1538.   somewhat different to the one use in PGP due to patent  restrictions.   This
  1539.   means  that  encrypted  PGP  keyrings  need  to have a small amount of extra
  1540.   information added to them before HPACK can use them.  The HPACK distribution
  1541.   includes a utility called KEYCVT which performs this task.  KEYCVT is run as
  1542.   follows:
  1543.  
  1544.     KEYCVT <input keyfile> <output keyfile>
  1545.  
  1546.   The input and output keyfiles are the PGP secret keyring file, and in normal
  1547.   usage  would be the same file.  KEYCVT will either create a new file to copy
  1548.   the extra information to, or will append it to the existing key file.
  1549.  
  1550.   The source keyring may contain one or more secret keys.  For each key in the
  1551.   file, KEYCVT will display its key information and ask:
  1552.  
  1553.     Add information for this key so HPACK can use
  1554.  
  1555.   A "No" response will cause KEYCVT to print:
  1556.  
  1557.     Skipping key...
  1558.  
  1559.   and move on to the next key.  A "Yes" response will cause KEYCVT to  try  to
  1560.   add  the extra information needed by HPACK.  If the key is encrypted, KEYCVT
  1561.   will ask for the decryption password:
  1562.  
  1563.     Please enter password for this private key
  1564.     Password:
  1565.  
  1566.   If the incorrect password is entered, KEYCVT will warn:
  1567.  
  1568.     Incorrect checksum, possibly due to incorrect password
  1569.  
  1570.   and allow it to be reentered.  Up to three  attempts  at  the  password  are
  1571.   allowed  before KEYCVT gives up.  When the key has been read in, KEYCVT will
  1572.   add the extra information encrypted with the same password as was  used  for
  1573.   the  decryption.   This  is  the password which HPACK, like PGP, will use to
  1574.   decrypt the secret key.
  1575.  
  1576.   Finally, when KEYCVT has finished processing the key file, it will ask:
  1577.  
  1578.     Finished processing keys. Add new key information to output
  1579.  
  1580.   A "Yes" response will add the new key information to the  output  key  file.
  1581.   If no keys were converted or a "No" response is given, KEYCVT will display:
  1582.  
  1583.     No keys converted, output file left unchanged.
  1584.  
  1585.   and exit.
  1586.  
  1587.  
  1588. Authentication of HPACK Executables
  1589.  
  1590.   There have been several occasions in the past  when  fake  versions  of  new
  1591.   archivers  have  been  distributed.   Sometimes  these fake release are even
  1592.   wrapped  up  in  a  nice-looking  "security  envelope"  guaranteeing   their
  1593.   authenticity.   Since the source code is freely available, it's all too easy
  1594.   for anyone to create a fake version of HPACK  in  which  the  encryption  or
  1595.   authentication code has been compromised.  In order to avoid any problems in
  1596.   this respect, the distributed HPACK executables are accompanied by a digital
  1597.   signature  (see the section "HPACK Archive/Data Authentication" above) which
  1598.   can be used to verify that it is indeed an  official  version.   Unlike  the
  1599.   schemes  used  by  other  archivers,  it  is  computationally  infeasible to
  1600.   compromise this method of authentication.
  1601.  
  1602.   In order to check the authenticity of the particular version of  HPACK,  you
  1603.   will  need  the  PGP encryption package (see the section "HPACK Archive/Data
  1604.   Authentication" above), and my public key, which is included in the standard
  1605.   PGP  distribution  and  also in the HPACK distribution.  My key is signed by
  1606.   Philip Zimmerman, the inventor of  PGP,  and  several  members  of  the  PGP
  1607.   development team.  First, you should check my key for authenticity:
  1608.  
  1609.     pgp -kc Peter Gutmann
  1610.  
  1611.   When it performs the key check, PGP should display the following signatures:
  1612.  
  1613.   Type bits/keyID     Date    User ID
  1614.   pub  1024/997D47 1992/08/02 Peter Gutmann <pgut1@cs.aukuni.ac.nz>
  1615.   sig!      E722D9 1992/11/26   Branko Lankester <lankeste@fwi.uva.nl>
  1616.   sig!      997D47 1992/10/11   Peter Gutmann <pgut1@cs.aukuni.ac.nz>
  1617.   sig!      7C02F9 1992/09/07   Felipe Rodriquez <nonsenso@utopia.hacktic.nl>
  1618.   sig!      1336F5 1992/09/05   Harry Bush <Harry@castle.riga.lv>
  1619.   sig!      67F70B 1992/09/02   Philip R. Zimmermann <prz@sage.cgd.ucar.edu>
  1620.  
  1621.   Version 2.1 and up of PGP can, in addition, calculate a key fingerprint  for
  1622.   a key.  This can be calculated with:
  1623.  
  1624.     pgp -kvc Peter Gutmann
  1625.  
  1626.   PGP should display the following:
  1627.  
  1628.   pub  1024/997D47 1992/08/02 Peter Gutmann <pgut1@cs.aukuni.ac.nz>
  1629.             Key fingerprint = 7C 6D 81 DF F2 62 0F 4A  67 0E 86 50 99 7E A6 B1
  1630.  
  1631.   If the keyID or key fingerprint for my key differs from the one shown  above
  1632.   or  the  signatures  don't  check out, then the key is a probably a fake and
  1633.   shouldn't be trusted.  Assuming the key is in order, the authenticity of the
  1634.   program itself can be checked with:
  1635.  
  1636.     pgp <program name> hpack.sig
  1637.  
  1638.   where hpack.sig is the  digital  signature  included  with  the  program  as
  1639.   distributed.   For example to check the authenticity of the Archimedes HPACK
  1640.   executable type:
  1641.  
  1642.     pgp hpack hpack.sig
  1643.  
  1644.   When it performs the check, PGP should display:
  1645.  
  1646.     Good signature from user Peter Gutmann <pgut1@cs.aukuni.ac.nz> .
  1647.     Signature made <date of signature>
  1648.  
  1649.   If PGP reports a bad signature then the executable shouldn't be trusted.   A
  1650.   new,  hopefully  untouched,  version  can be obtained from any archive site,
  1651.   BBS, or system which carries the standard HPACK  distribution,  or  you  can
  1652.   arrange to get it directly from the author.
  1653.  
  1654.  
  1655. Credits
  1656.  
  1657.   Many people have helped to get HPACK where it is today, among  them  (in  no
  1658.   particular order):
  1659.  
  1660.   Ports to different operating systems:
  1661.  
  1662.     Stuart Woolford did the Unix port.
  1663.     John Burnell did the OS/2 port.
  1664.     Jason Williams and Edouard Poor helped with the Archimedes
  1665.     Nick Little and Peter McGavin helped with the Amiga
  1666.     Murray Moffatt did the Atari ST port.
  1667.  
  1668.   Translations:
  1669.  
  1670.     Peter Sowa did the German translation.
  1671.     Peter de Vocht did the Dutch translation.
  1672.     Arrigo Triulzi did the Italian translation.
  1673.     Peter Gutmann had a go at the Klingon translation.
  1674.  
  1675.  
  1676. Contacting the Author
  1677.  
  1678.   You can contact me in any of the following ways:
  1679.  
  1680.     By calling me on +64 9 426-5097 within reasonable hours (10am-12pm NZT).
  1681.  
  1682.     By  Usenet  email  to   either   pgut1@cs.aukuni.ac.nz   (preferred),   or
  1683.     p.gutmann@cs.aukuni.ac.nz,  peterg@kcbbs.gen.nz,  or  peter@nacjack.gen.nz
  1684.     (In rough order of preference)
  1685.  
  1686.     By Fidonet email to Peter at 3:772/90.0.  However this is  probably  about
  1687.     as reliable a link as using carrier mackerel across the Sahara.
  1688.  
  1689.     By snail mail to 24 Durness Pl, Orewa, Auckland, New Zealand
  1690.  
  1691.     By throwing a bottle in the ocean (slightly less reliable than the Fidonet
  1692.     link).
  1693.  
  1694.     By implanting subliminal messages in the music I listen to.
  1695.  
  1696.  
  1697. HPACK Error Messages
  1698.  
  1699.   The error messages given by HPACK are the following:
  1700.  
  1701.   [ No matching files on disk ]
  1702.     The command you have given resulted  in  no  changes  being  made  to  the
  1703.     archive(s)  specified,  due  to the files you specified not being found on
  1704.     the disk.
  1705.  
  1706.   [ No matching files in archive ]
  1707.     The command you have given resulted  in  no  changes  being  made  to  the
  1708.     archive(s)  specified.   There can be several reasons for this, among them
  1709.     being that there were no matching files in the archive to  replace/update,
  1710.     or  that there were no matching files in the root directory of the archive
  1711.     (HPACK  will  not,   by   default,   check   subdirectories:   To   handle
  1712.     subdirectories  you  must either give the full path within the archive, or
  1713.     use the [-r]ecurse subdirectories option).
  1714.  
  1715.   [ No matching archives found ]
  1716.     The command you have given resulted  in  no  changes  being  made  to  the
  1717.     archive(s) specified, as they could not be found on the disk.
  1718.  
  1719.   [ Out of disk space ]
  1720.     There   is   not   enough   room   on   the   current   disk   to   finish
  1721.     archiving/unarchiving a file.
  1722.  
  1723.   [ Unknown command ]
  1724.     You have given HPACK a command which it  doesn't  understand.   Check  the
  1725.     section "HPACK Commands" for valid HPACK commands.
  1726.  
  1727.   [ Unknown option ]
  1728.     You have given HPACK an option which it  doesn't  understand.   Check  the
  1729.     section "HPACK Options" for valid HPACK options.
  1730.  
  1731.   [ Unknown overwrite option ]
  1732.     You have specified an unknown option for the  [-o]verwrite  switch.   This
  1733.     error  may  also  be  caused  by  forgetting  to specify an option for the
  1734.     switch, in which case HPACK will treat the character following the  -o  as
  1735.     the option.
  1736.  
  1737.   [ Unknown view option ]
  1738.     You have specified an unknown option for the [-v]iew options switch.  This
  1739.     error  may  also  be  caused  by  forgetting  to specify an option for the
  1740.     switch, in which case HPACK will treat the character following the  -v  as
  1741.     the option.
  1742.  
  1743.   [ Unknown directory option ]
  1744.     You have specified an unknown option for the [-d]irectory options  switch.
  1745.     This  error  may also be caused by forgetting to specify an option for the
  1746.     switch, in which case HPACK will treat the character following the  -d  as
  1747.     the option.
  1748.  
  1749.   [ Bad wildcard format ]
  1750.     You have used an incorrect format when using wildcards in filenames.
  1751.  
  1752.   [ Wildcard expression too complex ]
  1753.     You have used a very complex wildcard sequence,  and  HPACK  doesn't  have
  1754.     enough room to process it fully.  Try simplifying the expression, or break
  1755.     it up into separate simpler expressions.
  1756.  
  1757.   [ Cannot use wildcards in external pathname ]
  1758.     You have used wildcards in a pathname outside the archive.  Since  HPACK's
  1759.     extended wildcards are built on top of the usual operating system ones (if
  1760.     they exist) the resulting system would run very slowly if they had  to  be
  1761.     simulated on an external filesystem.
  1762.  
  1763.   [ Not an HPACK archive ]
  1764.     The supposed archive file does not appear to  be  an  archive  created  by
  1765.     HPACK.
  1766.  
  1767.   [ Cannot open archive file ]
  1768.     HPACK cannot open the archive file.
  1769.  
  1770.   [ Cannot open data file - skipping ]
  1771.     HPACK cannot open the data file to dearchive data to.
  1772.  
  1773.   [ Cannot open temp file ]
  1774.     HPACK cannot open the temporary work  file  it  needs  for  the  [D]elete,
  1775.     [F]reshen, [R]eplace, or [U]pdate commands.
  1776.  
  1777.   [ Cannot open script file - skipping ]
  1778.     HPACK cannot open the script file containing the list of files to  process
  1779.     and HPACK control commands.
  1780.  
  1781.   [ Cannot access base directory ]
  1782.     The base directory you have specified does not exist.
  1783.  
  1784.   [ Cannot create directory ]
  1785.     HPACK cannot create a directory to unarchive files into.
  1786.  
  1787.   [ Cannot override base path ]
  1788.     This error message arises when using the [-b]ase path option and either  a
  1789.     drive specifier is given in the pathname of one of the files to process or
  1790.     the base path includes an actual path and the file pathname  is  specified
  1791.     as  being off the root directory.  Since the base path is prepended to the
  1792.     pathname of the file, the pathname cannot contain  a  drive  specifier  or
  1793.     absolute directory reference in it.
  1794.  
  1795.   [ Unknown archiving method - skipping ]
  1796.     The version of HPACK you are using is unfamiliar with the archiving method
  1797.     used for this file, and is skipping to the next file.
  1798.  
  1799.   [ Data is encrypted - skipping ]
  1800.     The data in this file is encrypted, and no means of  decryption  has  been
  1801.     supplied  by  the user; therefore HPACK cannot process it and will move on
  1802.     to the next file.
  1803.  
  1804.   [ Cannot process encrypted archive ]
  1805.     The entire archive (rather than just the data in  it)  is  encrypted,  and
  1806.     HPACK  cannot decrypt it to read it.  This is either because no decryption
  1807.     password has been supplied, or because the archive is  encrypted  with  an
  1808.     encryption method for which no decryption information is available.
  1809.  
  1810.   [ Cannot change deleted archive ]
  1811.     You  have  used  the  [-k]ill  original  archive  option  along  with  the
  1812.     [R]eplace, [F]reshen, or [U]pdate options.
  1813.  
  1814.   [ Cannot change multipart archive ]
  1815.     You have asked HPACK to [F]reshen, [U]pdate, [R]eplace, or [D]elete  files
  1816.     in  a  multipart  archive, which would involve rewriting an archive spread
  1817.     across multiple disks.
  1818.  
  1819.   [ Cannot change unit-compressed archive ]
  1820.     If an archive is compressed as one unit, it cannot later be changed in any
  1821.     way.   Unit-compressed  archives trade off compressed size for flexibility
  1822.     in updating them.
  1823.  
  1824.   [ Cannot change encrypted archive ]
  1825.     You have asked HPACK to [A]dd, [F]reshen, [U]pdate,  [R]eplace,  [D]elete,
  1826.     or [X]tract with move, files in an encrypted archive.  Files or data in an
  1827.     encrypted archive cannot be changed without decrypting  and  re-encrypting
  1828.     the entire archive.
  1829.  
  1830.   [ Cannot change unencrypted archive ]
  1831.     You have asked HPACK to make changes  to  an  unencrypted  archive,  using
  1832.     block-encryption.   HPACK  will  not  retroactively  encrypt  the archive,
  1833.     however the files can be individually encrypted as they are added  to  the
  1834.     archive.
  1835.  
  1836.   [ Cannot use both conventional and public-key encryption ]
  1837.     You  have  specified  that  data  be  both  conventional  and   public-key
  1838.     encrypted.   Data  can  be  encrypted with one of the two methods, but not
  1839.     with both at once.
  1840.  
  1841.   [ Passwords not the same ]
  1842.     When encrypting data, HPACK will  ask  you  to  retype  the  password  for
  1843.     security.   If  the second password doesn't match the first password, this
  1844.     error message is issued.
  1845.  
  1846.   [ Password must be between 8 and 80 characters long ]
  1847.     The passphrase you have entered  is  either  less  than  eight  characters
  1848.     (making  it  dangerously  short),  or  more  than 80 characters (making it
  1849.     excessively long).
  1850.  
  1851.   [ Bad keyfile ]
  1852.     The keyfile containing the keys used for decrypting/authenticating data is
  1853.     corrupted.
  1854.  
  1855.   [ Missing userID for encryption/authentication ]
  1856.     You  have  forgotten  to  specify  a  userID  when  adding  authentication
  1857.     information to an archive, or when using public-key encryption, or haven't
  1858.     given a primary userID for public-key encryption when  using  a  secondary
  1859.     userID.
  1860.  
  1861.   [ Cannot find secret key for userID ]
  1862.     The secret key needed to add authentication information to  data  for  the
  1863.     given userID cannot be found, and the authentication information cannot be
  1864.     added.
  1865.  
  1866.   [ Cannot find public key for userID ]
  1867.     The public key needed to encrypt data  for  the  given  userID  cannot  be
  1868.     found, and the encryption can't be carried out.
  1869.  
  1870.   [ Cannot find secret key - cannot decrypt data ]
  1871.     The secret key needed to decrypt the data cannot be found,  and  the  data
  1872.     cannot be decrypted.
  1873.  
  1874.   [ Cannot find public key - cannot perform authentication check ]
  1875.     The public key for the authentication information attached to the data  or
  1876.     archive  can't  be  found, and thus the data authentication check can't be
  1877.     carried out.
  1878.  
  1879.   [ Authentication data corrupted - cannot perform authentication check ]
  1880.     The information used for authenticating the data in an  archive  has  been
  1881.     corrupted.
  1882.  
  1883.   [ Cannot read random seed file ]
  1884.     The random seed file needed for public-key encryption cannot be read.   If
  1885.     it has been destroyed, a new one should be created using PGP.
  1886.  
  1887.   [ Archive directory corrupted ]
  1888.     The archive directory information has been corrupted.   Depending  on  how
  1889.     bad  the  corruption  is,  HPACK  will  either exit or prompt the user for
  1890.     whether it should try to continue, attempting to fix  any  errors  in  the
  1891.     directory as it processes it.
  1892.  
  1893.   [ Out of memory ]
  1894.     There is not enough memory available for HPACK to continue.
  1895.  
  1896.   [ Path too long ]
  1897.     You have used more than the maximum allowable number  of  characters  (the
  1898.     limit set by the host OS) in a pathname.
  1899.  
  1900.   [ Path not found ]
  1901.     You have asked HPACK to add a file to a nonexistent  directory  inside  an
  1902.     archive.
  1903.  
  1904.   [ Bad character in filename ]
  1905.     Input lines in script files are  given  a  basic  check  for  being  valid
  1906.     filenames.   If blatantly incorrect characters are discovered in a line of
  1907.     input this warning will be printed.
  1908.  
  1909.   [ Errors detected in script file ]
  1910.     Errors  (either  illegal  characters  or  too-long  pathnames)  have  been
  1911.     detected in the script file.
  1912.  
  1913.   [ Maximum level of errors detected in script file ]
  1914.     More than 10 errors have been detected in the  script  file.   This  error
  1915.     message generally results from erroneously specifying a non-script file as
  1916.     a script file.
  1917.  
  1918.   [ Too many levels of directory nesting ]
  1919.     You have tried to go down through more than 15  levels  of  subdirectories
  1920.     using the [-r]ecurse subdirectories option.
  1921.  
  1922.   [ Stopped at user request ]
  1923.     The user or some other program  interrupted  HPACK  during  the  archiving
  1924.     process  (for  example  by  pressing  the  "Break"  key or by sending it a
  1925.     termination signal).
  1926.  
  1927.   [ Truncated EOF padding ]
  1928.     In some implementations of the Xmodem and Ymodem transfer protocols,  CP/M
  1929.     end-of-file   characters  (Ctrl-Z's)  are  appended  to  the  end  of  the
  1930.     transmitted file.  When HPACK detects these spurious characters on the end
  1931.     of  an archive, it will truncate the archive to its correct size and issue
  1932.     this warning message.
  1933.  
  1934.   [ Archive section too short, skipping... ]
  1935.     If part of a multipart archive is less than approximately 500 bytes  long,
  1936.     HPACK will not attempt to create the archive but will move the data to the
  1937.     next, hopefully less full, disk.
  1938.  
  1939.   [ File error ]
  1940.     A miscellaneous type of file error occurred during the  archiving  process
  1941.     (for  example  some  sort  of  network error).  The message itself will if
  1942.     possible contain more detail about the precise type of error.
  1943.  
  1944.   [ Internal error ]
  1945.     Some form of internal error occurred in HPACK.  Contact  the  author  with
  1946.     details on how the error was brought about.
  1947.  
  1948.   [ Long argument format not supported in this version ]
  1949.     Some CLI versions of HPACK, notably the Amiga, Archimedes, Mac-CLI, MSDOS,
  1950.     OS/2,  UNIX, and VMS ones, support a long argument format signalled by the
  1951.     -z switch, which is used to handle OS-specific options.  The  version  you
  1952.     are using doesn't support this option.
  1953.  
  1954.  
  1955. Disclaimer
  1956.  
  1957.   This program is guaranteed to  perform  as  claimed,  excluding  any  delays
  1958.   caused  or  enhanced  by war, civil commotion, or rioting, whether declared,
  1959.   spontaneous, reprehensible, or justified; undue pressure  to  perform,  from
  1960.   whatsoever  source; mal de mer, mal de pays, mal de siecle, mal de code, mal
  1961.   de machine, or any force majeure not pretofore invoked.
  1962.  
  1963.   The program warranty is void in case of nuclear war, whether caused  by  the
  1964.   program or not.
  1965.  
  1966.  
  1967. Trademarks
  1968.  
  1969.   Amiga is a trademark of Commodore Business Machines.
  1970.   Archimedes is a trademark of Acorn Computers.
  1971.   GIF is a trademark of Compuserve Inc.
  1972.   IBM is a trademark of International Business Machines Corp.
  1973.   Macintosh is a trademark of Apple Computer Inc.
  1974.   MSDOS is a trademark of Microsoft Inc.
  1975.   OS/2 is a trademark of International Business Machines Corp.
  1976.   PKZIP is a trademark of PKWare Inc.
  1977.   Prime and Primos are a trademark's of Prime Computer Corp.
  1978.   QNX is a trademark of <someone>.
  1979.   Rolemaster is a trademark of Iron Crown Enterprises Inc.
  1980.   StuffIt is a trademark of Raymond Lau and Aladdin Systems.
  1981.   ThinkC is a trademark of Symantec Corporation.
  1982.   UNIX is both a trademark and a footnote of AT&T.
  1983.   Windoze is not a trademark of Microsoft Corp.  Windows is, but it's a
  1984.     somewhat less accurate description of its performance.
  1985.   These trademark lists are a trademark of too many lawyers and too few
  1986.     people with common sense being involved.
  1987.  
  1988.         "Good compression isn't a matter of life and death - it's far more
  1989.                                important than that"
  1990.