home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 1996 Counselor / COMPUSERVE.ISO / mailbox / packer / x1094e / x1user.uk < prev    next >
Encoding:
Text File  |  1996-05-04  |  54.2 KB  |  1,121 lines

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