home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 9 Archive / 09-Archive.zip / x1os294h.zip / X1USER.UK < prev   
Text File  |  1996-06-16  |  55KB  |  1,117 lines

  1. -------------------------------------------------------------------------------
  2. DOCUMENT TYPE               : X1 USER MANUAL
  3. LANGUAGE                    : ENGLISH
  4. TEXT TYPE                   : NON-FORMATTED ASCII
  5. CHARACTER SET               : LOWER 128 ASCII CHARACTERS
  6. PROGRAM VERSION DESCRIBED   : X1 v0.94g (beta)
  7. LAST UPDATE (YEAR MONTH DAY): 960521
  8. LAST UPDATE NOTE            : PRELIMINARY TEXT -- LATER CHANGES MAY OCCUR
  9. TYPED BY                    : S.V.
  10. CHANGES BY                  : S.VERDOOLAEGE
  11. OTHER DOCUMENTS             : X1 DISCLAIMER,
  12.                               X1 CHANGE HISTORY,
  13. -------------------------------------------------------------------------------
  14.  
  15.        IMPORTANT: Do not use this program before you have read, understood
  16.                   and accepted the terms stated in the disclaimer.
  17.  
  18.                          ==================
  19.                          = X1 USER MANUAL =
  20.                          =    OVERVIEW    =
  21.                          ==================
  22.  
  23.    1.  Hardware requirements (minimum)
  24.    2.  "What's this?" (abstract)
  25.    3.  "How-to-use" (command-line format and review of commands/options)
  26.    4.  Environment variables (language module)
  27.    5.  Formats and compression methods (overview and examples)
  28.    6.  Temporary file names
  29.    7.  Exit return codes
  30.  
  31.  
  32.  
  33. 1. Requirements
  34. ===============
  35. CPU  : 386sx or better
  36. RAM  : a minimum of 4Mb memory is strongly recommended
  37. OS   : DOS/Win95 (DOS 3.3 or later - supporting possible long Win95 filenames)
  38.        OS/2 (32-bit)
  39.        NT/Win95
  40.  
  41. Get specific program versions for each OS.
  42.  
  43. Be aware that the memory reported by the archiver is the memory indirectly
  44. reported by DPMI - which is the memory actually "visible". Depending on the
  45. memory manager (DOS...OS/2...), disk-mapped memory could be used and the
  46. reported value may exceed the physically installed amount of memory. But it
  47. matters less for the program how memory is managed. It is more important, how
  48. much is allowed to be used (by the memory manager).
  49.  
  50.  
  51. 2. "What's this?"
  52. ==================
  53. This is an archiver. It compresses several files into a single file.
  54. It is entirely command-line driven. Compression and uncompression are
  55. combined into this single executable program. It has a speed-tightness-memory
  56. trade off that favors tightness and tries to make full use of the resources
  57. (memory) on the platform it is running on.
  58.  
  59. Most dominating features are:
  60.  
  61. * Introducing .x format archives
  62. * Compatibility with ARJ,(PK)ZIP,LHA(RC),ZOO,HA
  63. * Multi-lingual interface
  64. * Contains "experimental" methods as a consequence of the exploration of
  65.   hi-performance algorithms. "experimental" does not indicate instability
  66.   - but rather that the method may not be supported backwards in every
  67.   single future version.
  68.  
  69. The command-line interface is similar to that of ZOO and HA. But the option
  70. characters are more related to ARJ and LHA. The interface has little in common
  71. with PKZIP. With a little knowledge of common archivers, it should be
  72. possible to skip parts of this documentation.
  73.  
  74.  
  75. 3. "How-to-use" (command-line format and review of commands and options)
  76. ===============================================================
  77.    This is the specification for the program. If the program acts differently,
  78. then it is either caused by an error - or failure to properly implement the
  79. function according to this specification.
  80.    Using the description "archiver" for a program will produce a number of
  81. expectations - based on the abilities of other archivers. Consequently it
  82. becomes important to note not only what HAS! - but also to some degree what
  83. HASN'T actually been implemented.
  84.    If things mentioned in the text are not implemented, then a message
  85. "**Not implemented**" will precede the section. Further work should allow a
  86. reduction of the number of such messages.
  87.  
  88. Command-line format
  89. -------------------
  90.  
  91.  X1 command[<options>..] <archive> [<filemask>..]
  92.  
  93.  Definition:
  94.  command[<options>..]  only one command allowed (first single character)
  95.                        followed by a sequence of options - with no spacing
  96.                        between command and options - or among options
  97.  <archive>             is the archive name, with a default extension of .ZIP
  98.  <filemask>            are the files to archive, defaulting to all files if
  99.                        none are specified. Wildcards *, ? can be used.
  100.                        Filenames are specified in normal extension of the path.
  101.  
  102.  
  103. Command-line syntax rules
  104. -------------------------
  105. Command and option(s) can be specified in either upper or lower case.
  106.  
  107. Be aware that "x1" has two path exclude options instead of normally one.
  108. This is a consequence of rule #1 and #2.
  109.  
  110.      Rule #1 (path included):
  111.      ------------------------
  112.         By default, all paths mentioned on the command-line are added to the
  113.      archive - unless exclusion option "X" is enabled.
  114.  
  115.      Rule #2 (path included):
  116.      ------------------------
  117.         By default, all paths encountered during recursive search ("R" option
  118.      enabled) are added to the archive - unless exclusion option "E" is enabled.
  119.      This is somewhat different from most other archivers.
  120.  
  121.      Rule #3 (several filemasks relating to same dir):
  122.      -------------------------------------
  123.         Filemask with no path specification assumes path of previous filemask.
  124.         Explained in more detail:
  125.      Assume "x1 a test <arg[1]> .. <arg[i]> <arg[i+1]>..". If <arg[i+1]> does
  126.      not contain "\" ("/") or ":" then it is assumed to work under the same
  127.      pathname as <arg_i> (which may work under the same pathname as <arg[i-1]>...
  128.      etc.). What does this mean? It means that: "x1 a test \dir1\dir2\*.c *.h"
  129.      actually produces the same result as "x1 a test \dir1\dir2\*.c \dir1\dir2\*.h".
  130.      What does it not mean? Well, "x1 a test dir1\*.c dir2\*.h" does not! work
  131.      as "x1 a test dir1\*.c dir1\dir2\*.h" because "dir2\*.h" contains "\".
  132.      Nor does "x1 a test dir1 *.c" work as "x1 a test dir1\*.* dir1\*.c", which
  133.      would actually be meaningless.
  134.         The justification for this convention is entirely saved typing (notice
  135.      how you did not need to repeat "\dir1\dir2\" on the command line in the
  136.      first example).
  137.         Side-effects/drawbacks? If you want files from the current directory,
  138.      you have to specify them all before listing individual directories...
  139.      Still, this is just a convention, and should not restrict the user in any
  140.      way.
  141.  
  142.      Rule #4 (dir recorded in archive):
  143.      ----------------------------------
  144.         Specifying a directory name on the command_line implies compression of
  145.      all files in that directory. Notice that "x1 a test \dir1\dir2" produces
  146.      the same result as "x1 a test \dir1\dir2\" or "x1 a test \dir1\dir2\*.*". And
  147.      if recursive option is enabled, then all files higher in "\dir1\dir2\.."
  148.      are also processed.
  149.         But watch out! If filenames are identical to pathnames, it may not
  150.      always be obvious what the end-result will be..
  151.  
  152.  
  153.                                   ============
  154.                                   = COMMANDS =
  155.                                   ============
  156.  
  157. ? command (display help comments)
  158. -----------------------------------
  159.      This command is only used in the context "x1 ?".
  160.      It will display a brief review of the commands and options.
  161.      The page shown is not! the same page as shown when executing the program
  162.      without parameters. If no parameters are specified, then only commands are
  163.      listed (among them is "?").
  164.  
  165.      If the information is displayed too fast, it is recommended to direct it
  166.      into a file ("x1 ? >archive.lst"), which can subsequently be viewed
  167.      by your favorite browser (Norton-Commander-F3) or in your favorite
  168.      editor..
  169.  
  170.      Many languages are supported. However, some languages were more difficult
  171.      to understand than others. So it cannot be guaranteed that the meaning of
  172.      the messages are always crystal clear. In case of doubt, then the
  173.      english, danish, french, german, spanish pages should be consulted (in
  174.      that priority order!).
  175.  
  176.      (On PC) If your codepage settings are bad, then the result will be missing
  177.      characters. So please use the little time to get a proper codepage
  178.      setting.
  179.  
  180.  
  181. A command (add files to archive)
  182. ----------------------------------
  183.      Valid options: $,A,C,E,F,I,K,L,M,N,O,R,S,T,U,V,X,Y,Z
  184.  
  185.      This command has two modes of operation:
  186.          *  create archive and add files...
  187.          *  update (re-open) archive and add files...
  188.      But basically it compresses and adds specified files to an archive.
  189.      If the named archive does not exist, then one is created with the
  190.      specified name. If it does exist, then it is updated. This means, that new
  191.      files with the same pathnames as old archive entries will overwrite these old
  192.      entries. A few exceptions exist (when compressing to solid modules) - but this
  193.      is outside the scope right now.
  194.  
  195.      If a base directory is omitted, the default directory is assumed to
  196.      be the current directory.
  197.  
  198.      If there are no files specified on the command-line, then all files (in the
  199.      default directory) are added. This means that "x1 a test.x" compresses
  200.      everything in the current directory.
  201.  
  202.      At no point is it possible to compress an archive being updated into
  203.      the archive itself.
  204.  
  205.      If the extension of the target archive is not specified, then a default
  206.      extension of ZIP is selected. If you wish to compress in another format, then
  207.      it is necessary to specify the target archive with that format extension
  208.      (ARJ,LZH,..). It is not possible to compress to archives with completely
  209.      arbitrary extensions.
  210.  
  211.      Filenames can be excluded from addition to the archive by use of the
  212.      "Z" option.
  213.  
  214.      Example (compressing to standard format): x1 a archive.x   my_file.doc
  215.      Example (compressing to ZIP format)     : x1 a archive.zip my_file.doc
  216.  
  217. C command (add comments to archive)
  218. --------------------------
  219.      **Not implemented**
  220.      Valid options: I,C
  221.  
  222.      This command adds comments to an archive. Comments are possible in
  223.      ARj,ZIP,ZOO,X - but not in LHA,HA formats. Reasons are differences
  224.      in header structures.
  225.  
  226.  
  227. D command (delete files from archive)
  228. ---------------------------------------
  229.      Valid options: I,S,Z
  230.  
  231.      In order to be deleted, the pathname entry in the archive has to
  232.      match an argument on the command-line (upper- and lower-case is
  233.      unimportant).
  234.  
  235.      If a filemask contains no path, then it takes effect on all entries
  236.      in the archive, regardless of their paths. This means that
  237.      "x1 d test.x *.pas" will even delete entries "dir1/dir2/*.pas" in the
  238.      archive (if available). However, "x1 d test.x /dir1/dir2/*.pas" will
  239.      only delete the latter type of files - not "*.pas" files with no
  240.      pathname.
  241.  
  242.      If all files are requested to be deleted, then the entire archive is
  243.      removed (deleted).
  244.  
  245.      Filenames can be excluded from deletion by use of the "Z" option.
  246.  
  247.      Example (deleting multiple entries): x1 d archive.x *.pas *.doc
  248.      Example (deleting entire archive)  : x1 d archive *.*
  249.  
  250. E command (extracting files without path)
  251. -------------------------------------------
  252.      Valid options: $,A,F,I,N,O,T,W,Y,Z
  253.  
  254.      This command is identical to the "X" command with the "E" option.
  255.      It is only provided because of the general consensus among archivers
  256.      (to support this command).
  257.  
  258.      During extraction, the date/time stamps for the original files are
  259.      restored together with the file contents. A crc check is performed in
  260.      order to verify that the operation was successful. However, the file is
  261.      verified before writing to disk, rather than by a read-verification check.
  262.  
  263.      Files can be extracted to a user specified directory on a user specified
  264.      drive - but by default, files are extracted into the current directory.
  265.      All extractions are done without paths (into a single directory).
  266.  
  267.      When extracting to a specific directory, the directory name should
  268.      end with "/" or "\" as in the example "x1 e test.x c:\dir\". Not
  269.      terminating the directory name with such a character as in
  270.      "x1 e test.x c:\dir" will cause the program to assume, that a file
  271.      is attempted to be extracted from the archive.
  272.  
  273.      When extracting to a non-existing (command-line specified) directory,
  274.      the user will be warned about the incident and consulted before
  275.      further actions. The warning prompt presents several different solutions
  276.      - from "(y)es" (create directory this time only) to "n(e)ver" (create at
  277.      no time). The user answers by typing the letter in brackets. The actual
  278.      words and letters can change for different language modules. It is
  279.      possible to override the default question by activating one of the
  280.      options "Y" or "N".
  281.  
  282.      When extracting to a specified drive, it is allowed to let the drive
  283.      specification end with ":" as illustrated by the example "x1 e test.x a:".
  284.      This is because no valid filename is assumed to end with that character.
  285.      If several destination drives/directories are specified (as in example
  286.      "x1 e test.x a: b: c:") then the last specified drive/directory will be
  287.      used for actual extraction ("c:").
  288.  
  289.      If trying to extract a file with the same name as an existing directory,
  290.      then the extracted file will be skipped (unless smart overwriting is chosen
  291.      with option "W").
  292.  
  293.      If trying to extract a file to a filename already used, the user will
  294.      be warned about the incident and consulted before further actions. Only
  295.      exception is 0 length files. They are not considered to contain any
  296.      valuable information - and are overwritten without warnings. The warning
  297.      prompt allows several different answers - from "(y)es" (overwrite this
  298.      time only) to "n(e)ver" (overwrite at no time). The user answers by
  299.      typing the letter in brackets. The actual words and letters can change
  300.      for different language modules.
  301.  
  302.      Example (extract file): x1 e archive.x file_id.diz
  303.  
  304.      
  305. F command (refresh files already in archive)
  306. ----------------------------------------------
  307.      **Not implemented**
  308.      Valid options: E,F,I,X
  309.  
  310.      This command replaces entries in an archive with newer files, where
  311.      possible. This means that the names and total number of files
  312.      in the archive will remain constant. Only the contents of the archived
  313.      files may change.
  314.  
  315.      Only files date/time stamps are checked, when searching for newer files.
  316.      If files are older - or have same date/time stamps (but possible different
  317.      size), then the files are skipped.
  318.  
  319.      Potential conflicts occur in the situation, where the archive contains
  320.      entries with paths in their pathnames. Should it be necessary to specify
  321.      these entries specificly? The answer chosen here is: no! Instead it
  322.      is necessary to exclude them with the "E" option - if for some reason
  323.      they are not to be refreshed as other files.
  324.  
  325.      Similar to the "A" command, if there are no files specified on the
  326.      command-line, then all files in the archive are attempted to be refreshed. This
  327.      means that "x1 f test.x" attempts to refresh all files in "test.x" - while
  328.      "x1 f test.x *.pas" only attempts to refresh "*.pas" files (including
  329.      possibly "dir1/dir2/*.pas" files). Only
  330.      "x1 fz test.x *.pas dir1/dir2/*.pas" makes sure that the latter files
  331.      are excluded from the freshing process.
  332.  
  333.      Example (freshen all files): "x1 f test.x"
  334.  
  335. L command (lists contents of the archive)
  336. ------------------------------------------
  337.      Valid options: E,I,O,Z
  338.  
  339.      This command lists standard information about file entries in the
  340.      archiver. This includes:
  341.       * full pathname
  342.       * compressed and uncompressed file size
  343.       * compression ratio (% compressed/uncompressed)
  344.       * date (in year-month-day format)
  345.       * time (in hour-minute-second format)
  346.       * CRC (16/32 bit)
  347.       * DOS style file attributes
  348.       * compression method (identified by number rather than by name).
  349.  
  350.      A character "*" appended at the end of the filename indicates that the
  351.      file is encrypted and consequently cannot be extracted.
  352.  
  353.      Dynamically "fitting" of filepath names is attempted. If there is room
  354.      enough for large names, then they are listed on the same line as the
  355.      additional info. Otherwise, the filename is put on a line for itself - and
  356.      additional info is moved onto the next line.
  357.  
  358.      It is possible to list all archives of specific formats ("x1 l *.lzh")
  359.      or all archives recognized by the archiver ("x1 l *") - which only
  360.      actually checks files with a recognizable extension (".arj",".zip",..).
  361.      It is possible to only check for specific files ("x1 l *.zip file_id.diz")
  362.      or multiple files ("x1 l *.zip *.nfo *.diz").
  363.  
  364.      If the information is displayed too fast, it is recommended to direct it
  365.      into a file ("x1 l *.zip >archive.lst"), which can subsequently be viewed
  366.      by your favorite browser (Norton-Commander-F3) or in your favorite
  367.      editor..
  368.  
  369.      Example (listing all *.ARJ,*.ZIP,...): "x1 l *"
  370.  
  371. T command (test integrity of archive contents)
  372. ------------------------------------------------
  373.      Valid options: E,F,I,O,Z
  374.  
  375.      This command really has two causes (modes of operation):
  376.        * verify that the archiver have not made errors during compression
  377.        * check for errors inflicted on the archive during transmission
  378.          (storage media or hardware transmission channel faults)
  379.      The first error is by far the most alarming. This is why it is also
  380.      usually the error being tested for. Consequently the archiver is normally
  381.      required to unpack the data (in memory).
  382.  
  383.      To ensure success of possible extraction, a validity function is
  384.      provided in the shape of a CRC (cyclic-redundancy-checksum) check.
  385.      Even though the process is not 100% safe, it is usually sufficient
  386.      for most practical purposes.
  387.  
  388.      It is possible to test entire contents of several archives
  389.      ("x1 t *.zip"), individual file occurrences in a group of archives
  390.      ("x1 t *.zip *.doc") or individual files in individual archives
  391.      ("x1 t archive.x readme.doc").
  392.  
  393.      If the archiver can be assumed to have done its job properly, then
  394.      a simpler and faster CRC check can be made. This check is activated
  395.      by using option "F". How to know if the archiver has done its job
  396.      properly? Well, try a traditional crc check once (immediately after
  397.      compression). If the result is OK, then only subsequent transmission
  398.      CRC errors can be expected.
  399.  
  400.      The user are informed about mismatches between the recorded CRC and the
  401.      actually found CRC value. In the event of errors, it is very unlikely
  402.      that data can be recovered - unless some form of ECC
  403.      (error-correcting-code) has been activated. Updating files with
  404.      CRC errors is often possible, but cannot be recommended.
  405.  
  406.      If solid archives are involved, then CRC checks can take additional
  407.      time. This is caused by the fact that extraction may presuppose the
  408.      extraction of another file. In solid mode, data is compressed together
  409.      in a longer stream, and this reduces accessibility.
  410.  
  411.      Example (test all files): "x1 t test.x"
  412.  
  413. P command (protect archive against errors)
  414. -------------------------------------
  415.      Valid options: I,L
  416.  
  417.      This command will cause error-correcting-code (ECC) to be appended to the
  418.      archive - which should protect the archive to some extent from subsequent
  419.      media or transmissions errors.
  420.  
  421.      Actually appending ECC more than once is prevented. Rather than using a
  422.      simple methods more than once, it is recommended to use a more
  423.      sophisticated method involving greater overhead.
  424.  
  425.      Just as there is a difference in the performance of compression methods
  426.      on data - error correcting methods have to be optimized for specific
  427.      types of errors. Unless this is done, the result will be increased
  428.      overhead with low effect. Consequently more methods will be made available
  429.      later.
  430.  
  431.      Default protection method used is "Level-1 ECC".
  432.  
  433.      Level-1 ECC:
  434.        This type of ECC code is aimed at the casual user, who wants (low)
  435.        safety with only a minimum of extra data overhead. The method is
  436.        specialized to compensate for disk media errors. It can compensate for
  437.        only one(!) lost sector. The sector size is configurable. Default is
  438.        512 bytes. If wanting to compensate for more than one sector of errors,
  439.        higher levels of ECC protection should be used.
  440.        If protecting a (N) byte long sector, then the additional data overhead
  441.        will be (N+48) bytes. The 48 bytes covers a header including a crc for
  442.        the header, a crc for the total file and test-vectors used to locate
  443.        errors faster. The ECC data will be located in a continuous block at
  444.        the beginning of the file.
  445.  
  446.      Level-2 ECC:
  447.        Still awaits implementation.
  448.  
  449.      *WARNING* Error-correcting methods only corrects a limited number of
  450.      errors. A method will only correct errors according to its specification.
  451.      Therefore: read the specification - and do not expect correction of
  452.      errors beyond it!!! Error-correction only gives a limited security. It
  453.      is consequently important not to have blind faith in the methods.
  454.  
  455.      Example:
  456.        To protect against a single lost 512 byte sector (floppy disk), then
  457.        the command used is "x1 p test.zip" or "x1 pm1 test.zip".
  458.        To add 1024 byte/sector ECC1 protection (which is 2x512 byte sectors,
  459.        thus "m2"), then following command is used is "x1 pm2 test.zip".
  460.  
  461.  
  462. R command (repair archive for possible errors)
  463. ------------------------------------------------
  464.      Valid options: I
  465.  
  466.      This command has two intentions (modes of operation):
  467.        * To actually repair errors in the archive
  468.        * Only to verify that the archive is free from errors.
  469.          A crc check only investigates compressed file entries in the archive
  470.          - not possibly corrupted error-correcting-code (ECC). Obviously the
  471.          "extended test" can (should) only be performed if there is actual ECC
  472.          code to check.
  473.  
  474.      Repairing archive with ECC protection:
  475.      This command removes errors - either in the ECC data itself - or in the
  476.      actual data, it should protect. If the errors are irrecoverable, then a
  477.      warning will state this, and no further actions are taken. If the errors
  478.      are recoverable, then they will be corrected, and a message will explain
  479.      that the process was successful.
  480.  
  481.      Repairing archive with no ECC protection:
  482.      This has never been the intention of this command. In this archiver, there
  483.      is no general "repair" function for damaged archives. Instead the user is
  484.      urged to attempt extraction of the archive - and re-archive the data again.
  485.      The problems with providing a general "repair" function are well known
  486.      from the program "PKZipFix" provided with the archiver "PKZIP". The repair
  487.      program just updates the archive header structure - without checking the
  488.      integrity of individual files. Files can then be appended to the archive.
  489.      However, without an integrity test, there is no way of knowing if
  490.      the archive contains additional errors. Not checking for this possibility,
  491.      may cause a false feeling of security. It appears much better to only allow
  492.      extraction from the archive - allowing the user to directly verify the
  493.      number of errors. If archives are stored within archives, then there
  494.      exist dangerous possibilities for mistakes. In such cases, it is best
  495.      that the user tries to evaluate the situation. If somehow people would
  496.      be interested (and willing to pay!), then an advanced error-recovery
  497.      program may be constructed for some/all of the many different formats.
  498.      But it would not change the fact, that most errors normally are
  499.      irrecoverable.
  500.  
  501.      Example: "x1 r test.x"
  502.  
  503. U command (unprotect archive - removing error-correcting-code)
  504. --------------------------------------------------------------
  505.      Valid options: I
  506.  
  507.      This command retraces the action taken by the "P" command. Removal will be
  508.      attempted on any available error-correcting-code (ECC). Failure to
  509.      locate ECC code may be caused by two reasons: no ECC code there in the
  510.      first place - or errors blocking the detection of the ECC code (header).
  511.      In the latter case it should be recommended to attempt removal of errors.
  512.  
  513.      It is recommended to check for possible errors before removing the
  514.      ECC code. Even though the process may manage to locate the ECC code - then
  515.      the archive can still contain errors at other positions in the file.
  516.      No checks for errors are done when actually removing ECC code (in order
  517.      to speed up the process).
  518.  
  519. X command (extracting files with full pathnames)
  520. --------------------------------------------------
  521.      Valid options: $,A,E,F,I,N,O,T,W,Y,Z
  522.  
  523.      Main difference from the "E" command is that files are extracted with
  524.      pathnames (as recorded in archive). The pathnames can be viewed before
  525.      extraction with the "L" command.
  526.  
  527.      Files can be extracted to a user specified directory on a user specified
  528.      drive - but by default, files are extracted into the current directory,
  529.      and possible paths are built from the current directory. Some paths
  530.      cannot be used as extension of the current directory. That is paths
  531.      which contain drive names or specify specific root directories. Such
  532.      paths will be positioned on the disk according to their absolute
  533.      specifications.
  534.  
  535.      When extracting to a specified directory or drive, paths will be
  536.      built from the specified position. For example will "x1 x test.x a:"
  537.      try to extract all files to "a:" (while building paths from the current
  538.      directory on that drive).
  539.  
  540.      When file extraction requires a non-existing path on the disk, 
  541.      the situation is treated as when extracting to a non-existing
  542.      (command-line specifed) directory. The user will be warned about the
  543.      incident and consulted before further actions.
  544.  
  545.                                   ===========
  546.                                   = OPTIONS =
  547.                                   ===========
  548.  
  549. $ option (add/extract disk volume label)
  550. ----------------------------------------
  551.      **Not implemented**
  552.      Compression:
  553.      Adds the disk label (for the first specified filemask) to the archive.
  554.      In the example "x1 a text.x *.* a:*.* b:*.* c:*.*" the disk label for
  555.      the current drive is added to the archive - because default drive was
  556.      used in the first filemask. "x1 a text.x a:*.* b:*.* c:*.*" causes
  557.      recording of disk label for drive "a:".
  558.  
  559.      Extraction:
  560.      Restores disk label (if present) from the archive to the disk, where
  561.      files are extracted. Because only one disk label is allowed in the
  562.      archive, no confusion should be possible.
  563.  
  564. A option (attributes store/restore)
  565. -------------------------------------
  566.      **Not implemented**
  567.      General note: this option was mainly intended for "special attributes"
  568.      such as extended attributes in OS/2. Simple attributes as those found in
  569.      DOS are always restored.
  570.  
  571.      Compression:
  572.      Then the function is to save all attributes (possibly extended) in the
  573.      archive.
  574.  
  575.      Extraction:
  576.      Then the function is to restore the (possibly extended) attributes.
  577.      Operating system (OS) dependant attributes can only be restored under the
  578.      same OS. In case of OS conflict, the attributes are either not
  579.      restored - or a suitable (simple) replacement is chosen.
  580.  
  581. C option (fetch comment from a file)
  582. --------------------------------------
  583.      **Not implemented**
  584.     Used with "C" command only.
  585.     There are two ways to add comments to an archive:
  586.      * type it in from the keyboard
  587.      * insert characters from a file
  588.     If the comment is to be typed in by keyboard, then option "C" is not
  589.     activated. If comments come from a file, then the option should be
  590.     used.
  591.  
  592. E option (exclude path from filenames)
  593. ----------------------------------------
  594.      Compression:
  595.      The function is to exclude paths found during a possible recursive search
  596.      for files. Unless activated, all paths are included in the archiver by
  597.      default.
  598.  
  599.      Extraction:
  600.      The function is to make sure that all files are extracted into the same
  601.      directory - regardless of the paths recorded in the archive.
  602.  
  603.      File refreshing:
  604.      The function is to avoid refreshing files with paths in the archive.
  605.      Otherwise, all files are refreshed regardless of path by default.
  606.  
  607. F option (force file movement in/out of archive)
  608. --------------------------------------------------
  609.      **Not implemented**
  610.      Compression:
  611.      The function is to delete files from disk as soon as they have all been
  612.      compressed and the entire operation looks successful. This is to ensure
  613.      extra safety - so if the operation is prematurely aborted, then it should
  614.      not result in lost data.
  615.  
  616.      Extraction:
  617.      Then the function is to reduce the size of the archive - by deleting the
  618.      entries of the extracted files.
  619.  
  620. I option (quiet mode)
  621. -----------------------
  622.      **Not implemented**
  623.      This option suppresses all output to the screen. This include the
  624.      standard header and %-progress indication. This should allow other
  625.      pieces of software to shell out and let the archiver process data
  626.      - without having the screen messed up with irrelevant symbols.
  627.  
  628. K option (overwrite existing archive)
  629. ---------------------------------------
  630.      **Not implemented**
  631.      Compression:
  632.      Then the function is to cause overwriting of a possibly already existing
  633.      archive. Otherwise the archive would have been updated - and new entries
  634.      added to existing.
  635.  
  636. L<number> option (level of compression)
  637. -----------------------------------------
  638.      Compression:
  639.      Then option specified a more detailed level of compression. This may mean
  640.      use of more memory - or degraded/faster compression - all depending on the
  641.      selected compression method.
  642.  
  643.      .x method 4: then valid levels are 0,1,2,3. Each level determines
  644.                   a different memory model.
  645.      other methods: <no effect>
  646.  
  647. M<method> option (method of compression)
  648. ------------------------------------------
  649.      Compression:
  650.      Specifies the compression method to be used. Method is specified as a
  651.      number 0..256. If the number cannot be associated with a valid compression
  652.      method, then an error message is displayed.
  653.  
  654. N option ("NO" assumed at all enquiries)
  655. ----------------------------------------
  656.      Extraction:
  657.      Option "N" is complementary to option "Y". Option "N" causes all potential
  658.      questions to be answered with a "NO". This will avoid any attempts to halt
  659.      the process and ask the user for advice. It mainly affects possible
  660.      overwriting of files, creation of directories etc.
  661.  
  662. O option (order files according to name,size,date,etc.)
  663. ---------------------------------------------------------
  664.      There should always be two 'O' characters in the option string on the
  665.      command-line. Between the "O...O" will be sort sub-options - which
  666.      defines the sort keys - and their priority. However, if no other options
  667.      is to succeed the 'O' option then the last 'O' can be left out.
  668.  
  669.      Supported sort sub-options are:
  670.        A: ascending (descending is default)
  671.        D: date
  672.        E: extension
  673.        N: name
  674.        P: pathname
  675.        S: size
  676.        T: time
  677.  
  678.        B: best compression
  679.      So for example, "OSNO" mean: first sort according to size - and if two
  680.      files have same size, then sort according to name.
  681.  
  682.      Compression:
  683.      If compressing to a new archive, then files are inserted into the archive
  684.      in the order specified by the sorting keys. If updating an archive,
  685.      then existing entries will be updated in their current order - but
  686.      new entries will be sorted according to the options.
  687.  
  688.      Extraction:
  689.      **Not implemented**
  690.      Then files are extracted in the order specified by the options.
  691.  
  692.      Example:
  693.        Sorting compressed files according to (1) date (2) size and (3) name:
  694.                             "x1 aodsno test.x *.*"
  695.  
  696. R option (recursive search through subdirectories)
  697. ----------------------------------------------------
  698.      Compression:
  699.      Without this option, only the files in the command-line specified
  700.      directories will be processed. Where no directories are explicitly
  701.      defined, here the current directory is assumed. But activating the option
  702.      will result in additional processing of all files in subsequent
  703.      subdirectories. Subdirectories are visited recursively in the order they
  704.      are found on the disk. The directory paths recorded in the archive are
  705.      extended according to the subdirectories visited - unless option "E" is
  706.      activated. Files are visited twice: first during an initial scan - and
  707.      later when actually processing the file as an archive entry. The initial
  708.      scan is performed in order to allow an overall progress-indicator - and
  709.      allow size-estimation for solid headers (with several file entries).
  710.  
  711. S option (change archive date/time to newest entry in archive)
  712. ----------------------------------------------------------------
  713.      **Not implemented**
  714.      Compression:
  715.      Three practical possibilities seem possible when setting the date/time mark
  716.      according to the newest file:
  717.        * selecting the newest date/time among the entries added to
  718.          an updated archive
  719.        * selecting the newest date/time among the entries already
  720.          present in an archive - before starting to update it
  721.        * select the newest date/time among all files after all updating
  722.          is done.
  723.      But in the current implementation, only the last approach has been
  724.      implemented.
  725.  
  726.      An easy way to set the date/time tag, when not wishing to add extra
  727.      files is by "x1 lis test.x", which causes listing (but not displaying)
  728.      of the contents - and setting the date/time tag in the process.
  729.  
  730. T option (set file(s) date/time tag according to current time)
  731. ----------------------------------------------------------------
  732.      **Not implemented**
  733.      Compression:
  734.      The option sets date/time tag for files added to the archive to the
  735.      current date/time. The original date/time for the files are ignored.
  736.  
  737.      Extraction:
  738.      Brands the extracted file with the current time - rather than the time
  739.      recorded in the archiver.
  740.  
  741.      Note: all files in one process will receive the same date/time tag. Even
  742.      though files may be processed with a few seconds difference, then they
  743.      will all receive the time, when the process was started.
  744.  
  745. U option (solid compression mode)
  746. -----------------------------------
  747.      Compression:
  748.      If only one file is to be compressed, then the option will have no effect.
  749.      But if more than one file are compressed - then they are compressed in
  750.      "solid mode". This means, that files are compressed as a continuous data
  751.      stream (as if they were concatenated) - which for related files should
  752.      result in increased compression tightness.
  753.  
  754.      For optimal compression, files should be grouped intelligently, so that
  755.      most related files are placed closest together. However, this is not
  756.      automaticly attempted in the current implementation.
  757.  
  758. V<size> option (multivolume processing)
  759. -----------------------------------
  760.      **Not implemented**
  761.      Compression:
  762.      If <size> is not specified, compression will be done to a
  763.      (multi-volume) archive limited in upper size by the currently
  764.      available disk space. After each volume, a promt will appear
  765.      (unless option 'Y' activated) - which in case of a removable disk
  766.      drive will allow insertion of a new disk. When allowed, the
  767.      compression will continue with another archive part.
  768.      If <size> is specified, compression is done to a (multi-volume)
  769.      archive limited in upper size by the specified value.
  770.      In any case, the end result should be a sequence of archives with
  771.      identical names - and changing extentions .x00, .x01,... where
  772.      .x00 contains the first data compressed.
  773.      It is not possible to update a multi-volume archive in multi-volume
  774.      mode. But it is possible to update a multi-volume archive with
  775.      additional ordinary entries - or update a non-volume archive with
  776.      multi-volume entries.
  777.  
  778.      Extraction:
  779.      Here <size> has no relevance.
  780.      Extraction should only be attempted on a complete sequence of
  781.      multi-volume archives. Attempting to extract an individual multi-volume
  782.      part is possible - but will only be successfull for non-continous file
  783.      entries, not spanning over more than one volume. Prompting for each
  784.      volume part is done unless option 'Y' is activated.
  785.  
  786. W option (overwrite extracted smartly)
  787. ----------------------------------------
  788.      **Not implemented**
  789.      Extraction:
  790.      This option attempts to intelligently resolve situations, where extracted
  791.      files risk overwriting already existing files. Traditionally the
  792.      situations would be resolved by asking the user if overwriting was allowed
  793.      - and avoiding extraction if not. But a third possibility is possible by
  794.      extracting the files to slightly changed filenames. Filename extensions
  795.      00X,01X,.. (not to be confused with actual .x type archives) are used for
  796.      collision-resolved extraction.
  797.  
  798. X option (exclude path in filenames on command-line)
  799. ------------------------------------------------------
  800.      Compression:
  801.      By default, all paths written on the command-line will be included in
  802.      pathnames (for files added to the archive). If a directory is specified
  803.      with "x1 a test.x dir\*.*" then pathnames "dir\file1", "dir\file2",...
  804.      are recorded in the archive. Option "X" avoids the default recording of
  805.      paths on the command-line. "x1 ax test.x dir\*.*" will record previous
  806.      file entries as "file1", "file2",... Please notice, that the option does
  807.      not affect pathnames recorded during recursive search on a disk (option
  808.      "R"). To eliminate paths in those cases, option "E" is required.
  809.  
  810.      Extraction:
  811.      Then the option will have no effect - only option "E" should
  812.      be used to exclude full paths from files to be extracted.
  813.  
  814. Y option ("YES" assumed at all enquiries)
  815. -------------------------------------------
  816.      Extraction:
  817.      Option "Y" is complementary to option "N". Option "Y" causes all potential
  818.      questions to be answered with a "YES". This will avoid any attempts to halt
  819.      the process and ask the user for advice. It mainly affects possible
  820.      overwriting of files, creation of directories etc.
  821.  
  822. Z<number> option (exclude files otherwise archived)
  823. ---------------------------------------------
  824.      Compression:
  825.      When the option is not used, all filemasks on the command-line
  826.      specifie files to be included in the archive. When the option is
  827.      used, but not succeeded by a number (as specified), then that number
  828.      defaults to 1. The number specifies how many of the last filemasks on
  829.      the command-line specifie excluded files. This convention does not
  830.      allow mixing of include-masks and exclude-masks. All(!) exclude-masks
  831.      have to be specified together - and at the end of the command-line. In
  832.      the example "x1 az3 test.x test1.* test2.* *.bak *.swp *.tmp" the
  833.      number "3" follows option "Z" and tells that the last 3 filemasks
  834.      "*.bak *.swp *.tmp" mark files, which should not(!) be added to the
  835.      archive. The number counts backward from the end of the command-line
  836.      and are consequently not affected by the number of include-masks.
  837.  
  838.      In case the exclude option number equals or exceeds the total number of
  839.      filemasks on the command-line, then by default the files "*.*" are
  840.      assumed to be included - and all specified files excluded.
  841.  
  842. 4. Environment variables
  843. ========================
  844.      At present, only one environment variable is supported. This is
  845.      "COUNTRY", which is used for language/character-set selection.
  846.  
  847.      In DOS, the environment variable COUNTRY can be used to specify
  848.      the currently active country and character set. Special language-dependant
  849.      characters are supported in the upper ASCII character set (offsets 128 to
  850.      255) - and may change with the configuration. Depending on character set,
  851.      the language-dependant characters may occur at different offsets in the
  852.      extended ASCII table - if available at all. When needing such characters,
  853.      it becomes important first to identify the character set.
  854.  
  855.      For example, the configuration for an US keyboard could be:
  856.                           COUNTRY=001,437
  857.      The "001" specifies US language, while "437" specifies codepage 437 (US
  858.      character set). Consult you DOS manuals for a detailed list of numbers
  859.      and association. For "x1", "001" should cause messages to be
  860.      displayed in english. The "437" causes possible extended characters to be
  861.      located at offsets corresponding to codepage 437.
  862.  
  863.      If for some reason the environment variable COUNTRY is preferred not
  864.      used - then the other variable LANGUAGE can be used instead. Same syntax
  865.      is required.
  866.  
  867.      Notice, that if for some reason, a sentence is not supported in the
  868.      current language, then the original english message will be displayed
  869.      (in lack of a better choice).
  870.  
  871.      Other environment variables are not supported at this current point.
  872.  
  873. 5. Formats and compression methods (user level)
  874. ==============================================
  875.  
  876. First an overview of the header formats and methods supported.
  877.  
  878. "x1" archiver as of version 0.94a ("+" indicates support and "-" indicates
  879. lack of support):
  880. ------------------------------------------------------------------------------
  881.     archiver   capable of listing
  882.     name       |   capable of unpacking
  883.                |   |   capable of packing
  884.                |   |   |   compressing methods supported
  885.                |   |   |   |      uncompressing methods supported
  886.                |   |   |   |      |          comments
  887.                |   |   |   |      |          |
  888.     arj        +   +   +   0,1    0,1,2,3,4  1,..,4 are basicly identical
  889.     zip        +   +   +   0,1,8  0,1,7,8    1:shrink,7:implode,8:deflate
  890.     lzh/lha    +   +   +   0,5    0,1,5      no AMIGA-LHA support (no Amiga!)
  891.     zoo        +   +   +   0,2    0,2
  892.     ha         +   +   +   0,1,2  0,1,2
  893.     tar        +   -   -   -      -
  894.     tgz        +   +   +   8      8          requires gzip'ed TAR headers
  895.     hap        +   +   +   0,1    0,1
  896.     rar        +   -  (+)  0      0
  897.     arc        +   -   -   -      -
  898.     pak        +   -   -   -      -
  899.     sqz        +   -  (+)  0      0
  900.     arx        +   -  (+)  0      0,1 (5)    algorithms as LHA1.13
  901.     put        +   +   +   0,5    0,5        algorithms as LHA2.x
  902.     x          +   +   +   0,1,.. 0,1,..
  903. ------------------------------------------------------------------------------
  904. (+) means that storing only is not much fun... :-)
  905.  
  906. About the ARJ module:
  907. ---------------------
  908.      An example in compressing to the ARJ header format could be:
  909.                            "x1 a test.arj *.*"
  910.          This will cause all files in the current directory to be compressed to
  911.      the archive "test.arj" (by default with method 1).
  912.      Store files with:     "x1 am0 test.arj *.*"
  913.      Please notice that ARJ multivolumes are not (yet) supported.
  914.  
  915. About the ZIP module:
  916. ---------------------
  917.      An example in compressing to the ZIP header format could be:
  918.                            "x1 a test.zip *.*"
  919.      This will cause all files to be compressed - by default with the ZIP
  920.      "deflate" method known from ZIP versions 2.x. If backward compatibility is
  921.      an issue, then it is also possible to compress with an older method:
  922.                            "x1 am1 test.zip *.*"
  923.      This applies the method "shrink" from ZIP versions 0.9 and 1.1. This old
  924.      method is not intended for any serious use. It dates back to my first
  925.      humble experiments with the ZIP format in 1991...
  926.      Testing archive integrity (after compression) is done with:
  927.                     "x1 t test.x"   or   "x1 t test.x *.*"
  928.  
  929. About the LHA module:
  930. ---------------------
  931.      An example in compressing to the LHA header format could be:
  932.             "x1 a test.lha *.*"   or   "x1 a test.lzh *.*"
  933.      The extensions ".lha" and ".lzh" are supported on equal terms (both
  934.      caught if listing "x1 l *"). Method 5 is default.
  935.  
  936. About the ZOO module:
  937. ----------------------
  938.      An example in compressing to the ZOO header format could be:
  939.                            "x1 a test.zoo *.*"
  940.      WARNING: the zoo format specifies two header types and only one is
  941.      currently supported by "x1" (the all-dominating type 2). This may cause
  942.      problems, when "x1" updates old zoo-created archives (header type 1?).
  943.      Maybe I am too cautious - cannot tell... E-mail me some examples with old
  944.      headers!!!
  945.  
  946. About the HA module:
  947. --------------------
  948.      An example in compressing to the HA header format could be:
  949.                            "x1 a test.ha *.*"
  950.      This causes all files in current directory to be archived (by default
  951.      with method 1..ASC). If requesting tighter compression by a 4th order PPM,
  952.      then it would be more appropriate to use (HSC):
  953.                            "x1 am2 test.ha *.*"
  954.      Letting the computer try both methods and automaticly choose the best is
  955.      done with:            "x1 am# test.ha *.*"
  956.  
  957. About the TGZ module:
  958. ---------------------
  959.      An example in compressing to the TAR+GZIP header format could be:
  960.                            "x1 a test.tgz *.*"
  961.      This causes all files to be wrapped in TAR headers and consequently
  962.      compressed into GZIP format. On platforms supporting longer filenames,
  963.      the more appropriate filename extension should be ".tar.gz".
  964.      When listing the contents of such a file, total decompression
  965.      (in memory) is necessary - so a little extra patience may be required.
  966.                            "x1 l test.x"
  967.      Currently, it is not possible to extract the contents of a GZIP file as
  968.      a single file.
  969.  
  970. About the X module:
  971. -------------------
  972.      A thing that not directly relates to any compression method - but
  973.      differentiatess the X header format from most other archives - is the double-crc
  974.      recording (ability of fast CRC check). CRC is calculated for both
  975.      uncompressed and compressed data. When just wanting to check for
  976.      transmission errors, checking the latter CRC field will be sufficient.
  977.  
  978.      Because the size of the compressed data are usually smaller than the
  979.      original size, the work involved with the extra crc-calculation are
  980.      usually insignificant. It does not slow down any process in a significant
  981.      way.
  982.  
  983.      Furthermore, notice that .x archives may contain more than one file with
  984.      exactly the same pathname. This cannot be avoided when solid entries are
  985.      involved. If the solid entry with the duplicate filename(s) is deleted
  986.      - then other files are deleted (compressed together) - which will result
  987.      in lost data. This problem could be avoided by "pretending" that a
  988.      duplicate filename just ain't there (not showing it, as in UC2 or HPACK).
  989.      But it seemed reasonable, that when it is actually there, the user should
  990.      see it... A convention!
  991.  
  992.      Method number Name Packing example     Comments
  993.      ------------- ---- ------------------- --------
  994.            1       XLZ  "x1 am1 test.x *.*" 64k window LZ77
  995.           (2)       -
  996.           (3)       -
  997.            4       XXC  "x1 am4 test.x *.*" Variable memory selection possible
  998.           (5)      LZP  "x1 am5 test.x *.*"
  999.        best method  -   "x1 am# test.x *.*"
  1000.      ------------- --- --------------------
  1001.      NOTE: best method will first try method 4, then 1. The method finally
  1002.      accepted will be the one offering the tightest result.
  1003.  
  1004.      WARNING: methods >4 is currently target for additional work... Expect no
  1005.      backward/forward compatibility here!!!!
  1006.  
  1007.      The X module supports solid format. An example while compressing in solid
  1008.      format could be:      "x1 aum1 test.x *.*"
  1009.      An archive can contain several independent solid entries - and solid
  1010.      entries can be freely mixed with normal single-file entries. Once created,
  1011.      a solid entry cannot be updated.
  1012.  
  1013.      To verify compressed file by integrity-checking ability to uncompress:
  1014.                            "x1 t test.x *.*"
  1015.      To verify compressed file by checking for transmission errors:
  1016.                            "x1 tf test.x *.*"
  1017.      Yes, this gives the "F" option ("force" file in/out) another meaning
  1018.      ("faster" CRC check), when validating files. But this does not restrict
  1019.      the use of the option in the original meaning, because it would make no
  1020.      sense to "force" files out of an archive during a test process.
  1021.  
  1022.      Attempting to "fast"-CRC check other formats, which do not support
  1023.      double CRC will just result in a normal CRC check.
  1024.  
  1025.      A brief word on method 4:
  1026.      It works with the "compression level" option "l" in the way that:
  1027.                            "x1 am4l2 test.x *.*"
  1028.      ... actually means compression on level 2 (<4Mb memory).
  1029.                 Level  Memory  Comment
  1030.                   0     640kb  memory manager may require min. 1Mb
  1031.                   1       3Mb  -
  1032.                   2       7Mb  -
  1033.                   3      16Mb  could not test it - no 16Mb RAM
  1034.      Be warned, that the method may change again!
  1035.  
  1036. 6. Temporary file names
  1037. =====================
  1038. While compressing, the program uses a temporary file "X???????.SWP"
  1039. (where ??..?? are randomly chosen). It contains the new archive being built.
  1040. If the entire operation seems successful, then the file is renamed to the
  1041. requested name.
  1042.  
  1043. While decompressing, an extracted archive entry may be requested to
  1044. overwrite the archive itself. In that case, the original archive is
  1045. temporarily renamed to a neutral name (X???????.SWP) - and deleted, once all
  1046. requested entries are extracted.
  1047.  
  1048. At no point is more than 3 files opened (when updating an old archive).
  1049. Once started, the program will use maximum one temporary file - and only
  1050. one name for it (X???????.SWP).
  1051.  
  1052. The extension may appear a bit misguiding. The temporary file is not a
  1053. swapfile. The file is renamed at the end - contents is not copied elsewhere.
  1054. But the filename extension should give associations to other programs
  1055. (Borland compilers..), which may cause less hesitations, when the user
  1056. considers deleting a file.
  1057.  
  1058. Because swap files are not really necessary, no special work directories
  1059. are supported. For optimal speed, the compression process should take
  1060. place on a virtual (RAM) drive - and the resulting file(s) subsequently copied
  1061. to the desired destination.
  1062.  
  1063.  
  1064. 7. Exit return codes
  1065. ====================
  1066.  
  1067. Internal reference Value  Comment
  1068. ------------------ ----- -----------------------------
  1069.  EXIT_OK             0     No error
  1070.  EXIT_INT_ERR        1     Internal error (?)
  1071.  EXIT_NO_MEM         2     Out of memory
  1072.  EXIT_NO_DISK        3     Out of disk space
  1073.  EXIT_NO_OPEN        4     Cannot open archive file
  1074.  EXIT_NO_TMP         5     Cannot open temporary file
  1075.  EXIT_NO_FOUND       6     Cannot find matching archive(s)
  1076.  EXIT_NO_PATH        7     Cannot find path
  1077.  EXIT_NO_BASE        8     Cannot access base directory
  1078.  EXIT_NO_MKDIR       9     Cannot create directory
  1079.  EXIT_BREAK          10    User interrupt
  1080.  EXIT_FILE_ERR       11    Unknown file error - cannot read from file
  1081.  EXIT_BAD_HDR        12    Archive directory (partly) corrupted
  1082.  EXIT_BAD_EXT        13    Contents of archive does not correspond to extension
  1083.  EXIT_BAD_ARC        14    An archive at all?
  1084.  EXIT_LONG_NO        15    Unsupported long arg.format - or too many arg.
  1085.  EXIT_LONG_PATH      16    Path too long
  1086.  EXIT_NO_OVERRIDE    17    Cannot override base path
  1087.  EXIT_NEST           18    Dir's nested too deeply
  1088.  EXIT_SCRIPT_ERR     19    Error(s) in script file
  1089.  EXIT_NOTHING        20    Nothing to do
  1090.  EXIT_UNSP           21    Method not supported in this version..
  1091.  EXIT_COM            22    Unknown command
  1092.  EXIT_OPT            23    Unknown option
  1093.  EXIT_OPT_DIR        24    Unknown option
  1094.  EXIT_OPT_WR         25    Unknown option
  1095.  EXIT_OPT_VIEW       26    Unknown option
  1096.  EXIT_WC_FORM        27    Wildcard inappropriate use
  1097.  EXIT_WC_NAME        28    Wildcard inappropriate use
  1098.  EXIT_WC_COMPL       29    Wildcard inappropriate use
  1099.  EXIT_CHG_WRPROT     30    Bad attempt to change (write protected) archive
  1100.  EXIT_CHG_DEL        31    Bad attempt to change (deleted) archive
  1101.  EXIT_CHG_UNI        32    Bad attempt to change (block compress) archive
  1102.  EXIT_CHG_MULTI      33    Bad attempt to change (multivol) archive
  1103.  EXIT_CHG_CR         34    Bad attempt to change (encrypted) archive
  1104.  EXIT_CHG_UNCR       35    Bad attempt to change (unencrypted) archive
  1105.  EXIT_BAD_KEYFILE    36    Bad keyfile (cryptation)
  1106.  EXIT_PASS_NO        37    no valid (user)ID (cryptation)
  1107.  EXIT_PASS_DIFF      38    Password verification failed (cryptation)
  1108.  EXIT_SECURITY       39    General secur/encryp error (cryptation)
  1109.  EXIT_NOCRYPT        40    Cannot handle encryp.archive (cryptation)
  1110.  
  1111. ------------------------------------------------------------------------------
  1112.  
  1113. Stig Valentini, x1develop@internet.dk (until march 1997)
  1114.  
  1115. ------------------------------------------------------------------------------
  1116.  
  1117.