home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Spezial / SPEZIAL2_97.zip / SPEZIAL2_97.iso / ANWEND / PACKER / X1OS295A / x1user.uk < prev   
Text File  |  1997-05-03  |  59KB  |  1,190 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.95a (beta)
  7. LAST UPDATE (YEAR MONTH DAY): 970503
  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 under DOS by the archiver is the memory
  44. indirectly reported by DPMI - which is the memory actually "visible".
  45. Depending on the memory manager (DOS...OS/2...), disk-mapped memory could be
  46. used and the reported value may exceed the physically installed amount of
  47. memory. But it matters less for the program how memory is managed. It is more
  48. important, how 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. D<number> option (chose subcoder - if possible)    >>NEW<<
  593. -----------------------------------------------
  594.      Compression may be done with 3 parameters:
  595.        * method (option M) selects algorithm used (LZW,LZHUF,PPM,BW95,..)
  596.        * memory model size (option L) selected according to RAM available
  597.        * subcoder selection (option D) for special abilities - possibly
  598.          applying filters to input data before performing compression - or
  599.          selecting a special variant of the method in question
  600.  
  601.      Imaginable filters are runlength-preprocessors (for pictures) or
  602.      delta-coders (for multimedia). If the option isn't succeded by a number,
  603.      it defaults to 0 (zero).
  604.  
  605.      The option is currently restricted to PPM method 6 (target for continued
  606.      development). Subcoders 0-16 (16 included) are supported. In case no
  607.      subcoder is specified, the subcoder defaults to number 9.
  608.  
  609.      Example (method 6, at 16Mb, subcoder level 9): "x1 am6l3   text.x *.*"
  610.      Example (method 6, at 4Mb, subcoder level 0):  "x1 am6l1c  text.x *.*"
  611.      Example (method 6, at 16Mb, subcoder level 5): "x1 am6l3c5 text.x *.*"
  612.  
  613. E option (exclude path from filenames)
  614. ----------------------------------------
  615.      Compression:
  616.      The function is to exclude paths found during a possible recursive search
  617.      for files. Unless activated, all paths are included in the archiver by
  618.      default.
  619.  
  620.      Extraction:
  621.      The function is to make sure that all files are extracted into the same
  622.      directory - regardless of the paths recorded in the archive.
  623.  
  624.      File refreshing:
  625.      The function is to avoid refreshing files with paths in the archive.
  626.      Otherwise, all files are refreshed regardless of path by default.
  627.  
  628. F option (force file movement in/out of archive)
  629. --------------------------------------------------
  630.      **Not implemented**
  631.      Compression:
  632.      The function is to delete files from disk as soon as they have all been
  633.      compressed and the entire operation looks successful. This is to ensure
  634.      extra safety - so if the operation is prematurely aborted, then it should
  635.      not result in lost data.
  636.  
  637.      Extraction:
  638.      Then the function is to reduce the size of the archive - by deleting the
  639.      entries of the extracted files.
  640.  
  641. G option (go with new type - overriding archiver extention type)  >>NEW<<
  642. ----------------------------------------------------------------
  643.      Compression:
  644.      By default, the target archiver format is dictated by filename extention.
  645.      For example, if target archive name has extention .ZIP, files are
  646.      compressed using headers and compression methods for that archiver format.
  647.      Using the option mentioned, compression can be done to completely
  648.      arbitrary filenames.
  649.  
  650.      Example (to ARJ format in .123 disguise):    "x1 agj test.123 *.*"
  651.      Example (to TGZ format in .tar.gz disguise): "x1 agg test.tar.gz *.*"
  652.  
  653.      Decompression:
  654.      Overrides default assumption of archiver type from filename extention.
  655.      Allows extraction or listing of archives with arbitrary names (provided
  656.      that their archiver format corresponds to the override assumption). If
  657.      the file is recognized as another contradictarry format, a small reference
  658.      may be made (fx. "(ZIP ?)" for test.arj as falsely renamed zip-archive)
  659.      before persueing the primary type assumption (from G option or deducted
  660.      through file extention).
  661.  
  662.      Example (extract from example above): "x1 xgj test.123 *.*"
  663.      Example (to list .tar.gz files):      "x1 lgg *.tar.gz"
  664.  
  665.      In all cases, here is a quick overview of sub-options to use (after G
  666.      option) to force assumption of archiver format type.
  667.  
  668.      ARJ - j   ZIP - z   RAR - r   ARC - c   PUT - u   X   - x
  669.      LHA - l   ZOO - o   TAR - t   PAK - k   SQZ - s
  670.      LZH - l   HA  - h   TGZ - g   ARX - a   HAP - p
  671.  
  672.      Special provision is also made for avoiding long filenames in Win95
  673.      (used by default). Should be used under IBM DOS 7.x. That version identifies
  674.      itself identically to a DOS-box under Win95 - but crashes if presented
  675.      with Win95 calls...
  676.  
  677.      DOS - d
  678.  
  679.      Using "x1 agd test.x *.*" packs by using conventional 8+3 filename format
  680.      under DOS. Has no significance on other platforms.
  681.  
  682. I option (quiet mode)
  683. -----------------------
  684.      **Not implemented**
  685.      This option suppresses all output to the screen. This include the
  686.      standard header and %-progress indication. This should allow other
  687.      pieces of software to shell out and let the archiver process data
  688.      - without having the screen messed up with irrelevant symbols.
  689.  
  690. K option (overwrite existing archive)
  691. ---------------------------------------
  692.      **Not implemented**
  693.      Compression:
  694.      Then the function is to cause overwriting of a possibly already existing
  695.      archive. Otherwise the archive would have been updated - and new entries
  696.      added to existing.
  697.  
  698. L<number> option (level of compression)
  699. -----------------------------------------
  700.      Compression:
  701.      Then option specified a more detailed level of compression. This may mean
  702.      use of more memory - or degraded/faster compression - all depending on the
  703.      selected compression method.
  704.  
  705.      .x method 4: then valid levels are 0,1,2,3. Each level determines
  706.                   a different memory model.
  707.      other methods: <no effect>
  708.  
  709. M<method> option (method of compression)
  710. ------------------------------------------
  711.      Compression:
  712.      Specifies the compression method to be used. Method is specified as a
  713.      number 0..256. If the number cannot be associated with a valid compression
  714.      method, then an error message is displayed.
  715.  
  716. N option ("NO" assumed at all enquiries)
  717. ----------------------------------------
  718.      Extraction:
  719.      Option "N" is complementary to option "Y". Option "N" causes all potential
  720.      questions to be answered with a "NO". This will avoid any attempts to halt
  721.      the process and ask the user for advice. It mainly affects possible
  722.      overwriting of files, creation of directories etc.
  723.  
  724. O option (order files according to name,size,date,etc.)
  725. ---------------------------------------------------------
  726.      There should always be two 'O' characters in the option string on the
  727.      command-line. Between the "O...O" will be sort sub-options - which
  728.      defines the sort keys - and their priority. However, if no other options
  729.      is to succeed the 'O' option then the last 'O' can be left out.
  730.  
  731.      Supported sort sub-options are:
  732.        A: ascending (descending is default)
  733.        D: date
  734.        E: extension
  735.        N: name
  736.        P: pathname
  737.        S: size
  738.        T: time
  739.  
  740.        B: best compression
  741.      So for example, "OSNO" mean: first sort according to size - and if two
  742.      files have same size, then sort according to name.
  743.  
  744.      Compression:
  745.      If compressing to a new archive, then files are inserted into the archive
  746.      in the order specified by the sorting keys. If updating an archive,
  747.      then existing entries will be updated in their current order - but
  748.      new entries will be sorted according to the options.
  749.  
  750.      Extraction:
  751.      **Not implemented**
  752.      Then files are extracted in the order specified by the options.
  753.  
  754.      Example:
  755.        Sorting compressed files according to (1) date (2) size and (3) name:
  756.                             "x1 aodsno test.x *.*"
  757.  
  758. P option (pause screen output)  >>NEW<<
  759. ------------------------------
  760.  
  761.      Pauses screen output until key pressed (enter). Prevents lines flipping by
  762.      without possibility of closer reading. Soo far, only has effect during
  763.      help-screen viewing.
  764.  
  765.      Example (default 24-line screen): x1 ?p
  766.      Example (tweaked 50-line screen): x1 ?p50
  767.  
  768. R option (recursive search through subdirectories)
  769. ----------------------------------------------------
  770.      Compression:
  771.      Without this option, only the files in the command-line specified
  772.      directories will be processed. Where no directories are explicitly
  773.      defined, here the current directory is assumed. But activating the option
  774.      will result in additional processing of all files in subsequent
  775.      subdirectories. Subdirectories are visited recursively in the order they
  776.      are found on the disk. The directory paths recorded in the archive are
  777.      extended according to the subdirectories visited - unless option "E" is
  778.      activated. Files are visited twice: first during an initial scan - and
  779.      later when actually processing the file as an archive entry. The initial
  780.      scan is performed in order to allow an overall progress-indicator - and
  781.      allow size-estimation for solid headers (with several file entries).
  782.  
  783. S option (change archive date/time to newest entry in archive)
  784. ----------------------------------------------------------------
  785.      **Not implemented**
  786.      Compression:
  787.      Three practical possibilities seem possible when setting the date/time mark
  788.      according to the newest file:
  789.        * selecting the newest date/time among the entries added to
  790.          an updated archive
  791.        * selecting the newest date/time among the entries already
  792.          present in an archive - before starting to update it
  793.        * select the newest date/time among all files after all updating
  794.          is done.
  795.      But in the current implementation, only the last approach has been
  796.      implemented.
  797.  
  798.      An easy way to set the date/time tag, when not wishing to add extra
  799.      files is by "x1 lis test.x", which causes listing (but not displaying)
  800.      of the contents - and setting the date/time tag in the process.
  801.  
  802. T option (set file(s) date/time tag according to current time)
  803. ----------------------------------------------------------------
  804.      **Not implemented**
  805.      Compression:
  806.      The option sets date/time tag for files added to the archive to the
  807.      current date/time. The original date/time for the files are ignored.
  808.  
  809.      Extraction:
  810.      Brands the extracted file with the current time - rather than the time
  811.      recorded in the archiver.
  812.  
  813.      Note: all files in one process will receive the same date/time tag. Even
  814.      though files may be processed with a few seconds difference, then they
  815.      will all receive the time, when the process was started.
  816.  
  817. U option (solid compression mode)
  818. -----------------------------------
  819.      Compression:
  820.      If only one file is to be compressed, then the option will have no effect.
  821.      But if more than one file are compressed - then they are compressed in
  822.      "solid mode". This means, that files are compressed as a continuous data
  823.      stream (as if they were concatenated) - which for related files should
  824.      result in increased compression tightness.
  825.  
  826.      For optimal compression, files should be grouped intelligently, so that
  827.      most related files are placed closest together. However, this is not
  828.      automaticly attempted in the current implementation.
  829.  
  830. V<size> option (multivolume processing)
  831. -----------------------------------
  832.      **Not implemented**
  833.      Compression:
  834.      If <size> is not specified, compression will be done to a
  835.      (multi-volume) archive limited in upper size by the currently
  836.      available disk space. After each volume, a promt will appear
  837.      (unless option 'Y' activated) - which in case of a removable disk
  838.      drive will allow insertion of a new disk. When allowed, the
  839.      compression will continue with another archive part.
  840.      If <size> is specified, compression is done to a (multi-volume)
  841.      archive limited in upper size by the specified value.
  842.      In any case, the end result should be a sequence of archives with
  843.      identical names - and changing extentions .x00, .x01,... where
  844.      .x00 contains the first data compressed.
  845.      It is not possible to update a multi-volume archive in multi-volume
  846.      mode. But it is possible to update a multi-volume archive with
  847.      additional ordinary entries - or update a non-volume archive with
  848.      multi-volume entries.
  849.  
  850.      Extraction:
  851.      Here <size> has no relevance.
  852.      Extraction should only be attempted on a complete sequence of
  853.      multi-volume archives. Attempting to extract an individual multi-volume
  854.      part is possible - but will only be successfull for non-continous file
  855.      entries, not spanning over more than one volume. Prompting for each
  856.      volume part is done unless option 'Y' is activated.
  857.  
  858. W option (overwrite extracted smartly)
  859. ----------------------------------------
  860.      **Not implemented**
  861.      Extraction:
  862.      This option attempts to intelligently resolve situations, where extracted
  863.      files risk overwriting already existing files. Traditionally the
  864.      situations would be resolved by asking the user if overwriting was allowed
  865.      - and avoiding extraction if not. But a third possibility is possible by
  866.      extracting the files to slightly changed filenames. Filename extensions
  867.      00X,01X,.. (not to be confused with actual .x type archives) are used for
  868.      collision-resolved extraction.
  869.  
  870. X option (exclude path in filenames on command-line)
  871. ------------------------------------------------------
  872.      Compression:
  873.      By default, all paths written on the command-line will be included in
  874.      pathnames (for files added to the archive). If a directory is specified
  875.      with "x1 a test.x dir\*.*" then pathnames "dir\file1", "dir\file2",...
  876.      are recorded in the archive. Option "X" avoids the default recording of
  877.      paths on the command-line. "x1 ax test.x dir\*.*" will record previous
  878.      file entries as "file1", "file2",... Please notice, that the option does
  879.      not affect pathnames recorded during recursive search on a disk (option
  880.      "R"). To eliminate paths in those cases, option "E" is required.
  881.  
  882.      Extraction:
  883.      Then the option will have no effect - only option "E" should
  884.      be used to exclude full paths from files to be extracted.
  885.  
  886. Y option ("YES" assumed at all enquiries)
  887. -------------------------------------------
  888.      Extraction:
  889.      Option "Y" is complementary to option "N". Option "Y" causes all potential
  890.      questions to be answered with a "YES". This will avoid any attempts to halt
  891.      the process and ask the user for advice. It mainly affects possible
  892.      overwriting of files, creation of directories etc.
  893.  
  894. Z<number> option (exclude files otherwise archived)
  895. ---------------------------------------------
  896.      Compression:
  897.      When the option is not used, all filemasks on the command-line
  898.      specifie files to be included in the archive. When the option is
  899.      used, but not succeeded by a number (as specified), then that number
  900.      defaults to 1. The number specifies how many of the last filemasks on
  901.      the command-line specifie excluded files. This convention does not
  902.      allow mixing of include-masks and exclude-masks. All(!) exclude-masks
  903.      have to be specified together - and at the end of the command-line. In
  904.      the example "x1 az3 test.x test1.* test2.* *.bak *.swp *.tmp" the
  905.      number "3" follows option "Z" and tells that the last 3 filemasks
  906.      "*.bak *.swp *.tmp" mark files, which should not(!) be added to the
  907.      archive. The number counts backward from the end of the command-line
  908.      and are consequently not affected by the number of include-masks.
  909.  
  910.      In case the exclude option number equals or exceeds the total number of
  911.      filemasks on the command-line, then by default the files "*.*" are
  912.      assumed to be included - and all specified files excluded.
  913.  
  914. 4. Environment variables
  915. ========================
  916.      At present, only one environment variable is supported. This is
  917.      "COUNTRY", which is used for language/character-set selection.
  918.  
  919.      In DOS, the environment variable COUNTRY can be used to specify
  920.      the currently active country and character set. Special language-dependant
  921.      characters are supported in the upper ASCII character set (offsets 128 to
  922.      255) - and may change with the configuration. Depending on character set,
  923.      the language-dependant characters may occur at different offsets in the
  924.      extended ASCII table - if available at all. When needing such characters,
  925.      it becomes important first to identify the character set.
  926.  
  927.      For example, the configuration for an US keyboard could be:
  928.                           COUNTRY=001,437
  929.      The "001" specifies US language, while "437" specifies codepage 437 (US
  930.      character set). Consult you DOS manuals for a detailed list of numbers
  931.      and association. For "x1", "001" should cause messages to be
  932.      displayed in english. The "437" causes possible extended characters to be
  933.      located at offsets corresponding to codepage 437.
  934.  
  935.      If for some reason the environment variable COUNTRY is preferred not
  936.      used - then the other variable LANGUAGE can be used instead. Same syntax
  937.      is required.
  938.  
  939.      Notice, that if for some reason, a sentence is not supported in the
  940.      current language, then the original english message will be displayed
  941.      (in lack of a better choice).
  942.  
  943.      Other environment variables are not supported at this current point.
  944.  
  945. 5. Formats and compression methods (user level)
  946. ==============================================
  947.  
  948. First an overview of the header formats and methods supported.
  949.  
  950. "x1" archiver as of version 0.94a ("+" indicates support and "-" indicates
  951. lack of support):
  952. ------------------------------------------------------------------------------
  953.     archiver   capable of listing
  954.     name       |   capable of unpacking
  955.                |   |   capable of packing
  956.                |   |   |   compressing methods supported
  957.                |   |   |   |      uncompressing methods supported
  958.                |   |   |   |      |          comments
  959.                |   |   |   |      |          |
  960.     arj        +   +   +   0,1    0,1,2,3,4  1,..,4 are basicly identical
  961.     zip        +   +   +   0,1,8  0,1,7,8    1:shrink,7:implode,8:deflate
  962.     lzh/lha    +   +   +   0,5    0,1,5      no AMIGA-LHA support (no Amiga!)
  963.     zoo        +   +   +   0,2    0,2
  964.     ha         +   +   +   0,1,2  0,1,2
  965.     tar        +   -   -   -      -
  966.     tgz        +   +   +   8      8          requires gzip'ed TAR headers
  967.     hap        +   +   +   0,1    0,1
  968.     rar        +   -  (+)  0      0
  969.     arc        +   -   -   -      -
  970.     pak        +   -   -   -      -
  971.     sqz        +   -  (+)  0      0
  972.     arx        +   -  (+)  0      0,1 (5)    algorithms as LHA1.13
  973.     put        +   +   +   0,5    0,5        algorithms as LHA2.x
  974.     x          +   +   +   0,1,.. 0,1,..
  975. ------------------------------------------------------------------------------
  976. (+) means that storing only is not much fun... :-)
  977.  
  978. About the ARJ module:
  979. ---------------------
  980.      An example in compressing to the ARJ header format could be:
  981.                            "x1 a test.arj *.*"
  982.          This will cause all files in the current directory to be compressed to
  983.      the archive "test.arj" (by default with method 1).
  984.      Store files with:     "x1 am0 test.arj *.*"
  985.      Please notice that ARJ multivolumes are not (yet) supported.
  986.  
  987. About the ZIP module:
  988. ---------------------
  989.      An example in compressing to the ZIP header format could be:
  990.                            "x1 a test.zip *.*"
  991.      This will cause all files to be compressed - by default with the ZIP
  992.      "deflate" method known from ZIP versions 2.x. If backward compatibility is
  993.      an issue, then it is also possible to compress with an older method:
  994.                            "x1 am1 test.zip *.*"
  995.      This applies the method "shrink" from ZIP versions 0.9 and 1.1. This old
  996.      method is not intended for any serious use. It dates back to my first
  997.      humble experiments with the ZIP format in 1991...
  998.      Testing archive integrity (after compression) is done with:
  999.                     "x1 t test.x"   or   "x1 t test.x *.*"
  1000.  
  1001. About the LHA module:
  1002. ---------------------
  1003.      An example in compressing to the LHA header format could be:
  1004.             "x1 a test.lha *.*"   or   "x1 a test.lzh *.*"
  1005.      The extensions ".lha" and ".lzh" are supported on equal terms (both
  1006.      caught if listing "x1 l *"). Method 5 is default.
  1007.  
  1008. About the ZOO module:
  1009. ----------------------
  1010.      An example in compressing to the ZOO header format could be:
  1011.                            "x1 a test.zoo *.*"
  1012.      WARNING: the zoo format specifies two header types and only one is
  1013.      currently supported by "x1" (the all-dominating type 2). This may cause
  1014.      problems, when "x1" updates old zoo-created archives (header type 1?).
  1015.      Maybe I am too cautious - cannot tell... E-mail me some examples with old
  1016.      headers!!!
  1017.  
  1018. About the HA module:
  1019. --------------------
  1020.      An example in compressing to the HA header format could be:
  1021.                            "x1 a test.ha *.*"
  1022.      This causes all files in current directory to be archived (by default
  1023.      with method 1..ASC). If requesting tighter compression by a 4th order PPM,
  1024.      then it would be more appropriate to use (HSC):
  1025.                            "x1 am2 test.ha *.*"
  1026.      Letting the computer try both methods and automaticly choose the best is
  1027.      done with:            "x1 am# test.ha *.*"
  1028.  
  1029. About the TGZ module:
  1030. ---------------------
  1031.      An example in compressing to the TAR+GZIP header format could be:
  1032.                            "x1 a test.tgz *.*"
  1033.      This causes all files to be wrapped in TAR headers and consequently
  1034.      compressed into GZIP format. On platforms supporting longer filenames,
  1035.      the more appropriate filename extension should be ".tar.gz".
  1036.      When listing the contents of such a file, total decompression
  1037.      (in memory) is necessary - so a little extra patience may be required.
  1038.      Listing contents is done by:
  1039.                            "x1 l test.x"
  1040.      Currently, it is not possible to extract the contents of a GZIP file as
  1041.      a single (TAR) file.
  1042.  
  1043. About the X module:
  1044. -------------------
  1045.      A thing that not directly relates to any compression method - but
  1046.      differentiatess the X header format from most other archives - is the double-crc
  1047.      recording (ability of fast CRC check). CRC is calculated for both
  1048.      uncompressed and compressed data. When just wanting to check for
  1049.      transmission errors, checking the latter CRC field will be sufficient.
  1050.  
  1051.      Because the size of the compressed data are usually smaller than the
  1052.      original size, the work involved with the extra crc-calculation are
  1053.      usually insignificant. It does not slow down any process in a significant
  1054.      way.
  1055.  
  1056.      Furthermore, notice that .x archives may contain more than one file with
  1057.      exactly the same pathname. This cannot be avoided when solid entries are
  1058.      involved. If the solid entry with the duplicate filename(s) is deleted
  1059.      - then other files are deleted (compressed together) - which will result
  1060.      in lost data. This problem could be avoided by "pretending" that a
  1061.      duplicate filename just ain't there (not showing it, as in UC2 or HPACK).
  1062.      But it seemed reasonable, that when it is actually there, the user should
  1063.      see it... A convention!
  1064.  
  1065.      Method number Name Packing example     Comments
  1066.      ------------- ---- ------------------- --------
  1067.            1       XLZ  "x1 am1 test.x *.*" 64k window LZ77
  1068.           (2)       -
  1069.           (3)       -
  1070.            4       XXC  "x1 am4 test.x *.*" Variable memory selection possible
  1071.           (5)      LZP  "x1 am5 test.x *.*"
  1072.        best method  -   "x1 am# test.x *.*"
  1073.      ------------- --- --------------------
  1074.      NOTE: best method will first try method 4, then 1. The method finally
  1075.      accepted will be the one offering the tightest result.
  1076.  
  1077.      WARNING: methods >4 is currently target for additional work... Expect no
  1078.      backward/forward compatibility here!!!!
  1079.  
  1080.      The X module supports solid format. An example while compressing in solid
  1081.      format could be:      "x1 aum1 test.x *.*"
  1082.      An archive can contain several independent solid entries - and solid
  1083.      entries can be freely mixed with normal single-file entries. Once created,
  1084.      a solid entry cannot be updated.
  1085.  
  1086.      To verify compressed file by integrity-checking ability to uncompress:
  1087.                            "x1 t test.x *.*"
  1088.      To verify compressed file by checking for transmission errors:
  1089.                            "x1 tf test.x *.*"
  1090.      Yes, this gives the "F" option ("force" file in/out) another meaning
  1091.      ("faster" CRC check), when validating files. But this does not restrict
  1092.      the use of the option in the original meaning, because it would make no
  1093.      sense to "force" files out of an archive during a test process.
  1094.  
  1095.      Attempting to "fast"-CRC check other formats, which do not support
  1096.      double CRC will just result in a normal CRC check.
  1097.  
  1098.      A brief word on method 4:
  1099.      It works with the "compression level" option "l" in the way that:
  1100.                            "x1 am4l2 test.x *.*"
  1101.      ... actually means compression on level 2 (<4Mb memory).
  1102.                 Level  Memory  Comment
  1103.                   0     640kb  memory manager may require min. 1Mb
  1104.                   1       3Mb  -
  1105.                   2       7Mb  -
  1106.                   3      16Mb  could not test it - no 16Mb RAM
  1107.      Be warned, that the method may change again!
  1108.  
  1109. 6. Temporary file names
  1110. =====================
  1111. While compressing, the program uses a temporary file "X???????.SWP"
  1112. (where ??..?? are randomly chosen). It contains the new archive being built.
  1113. If the entire operation seems successful, then the file is renamed to the
  1114. requested name.
  1115.  
  1116. While decompressing, an extracted archive entry may be requested to
  1117. overwrite the archive itself. In that case, the original archive is
  1118. temporarily renamed to a neutral name (X???????.SWP) - and deleted, once all
  1119. requested entries are extracted.
  1120.  
  1121. At no point is more than 3 files opened (when updating an old archive).
  1122. Once started, the program will use maximum one temporary file - and only
  1123. one name for it (X???????.SWP).
  1124.  
  1125. The extension may appear a bit misguiding. The temporary file is not a
  1126. swapfile. The file is renamed at the end - contents is not copied elsewhere.
  1127. But the filename extension should give associations to other programs
  1128. (Borland compilers..), which may cause less hesitations, when the user
  1129. considers deleting a file.
  1130.  
  1131. Because swap files are not really necessary, no special work directories
  1132. are supported. For optimal speed, the compression process should take
  1133. place on a virtual (RAM) drive - and the resulting file(s) subsequently copied
  1134. to the desired destination.
  1135.  
  1136.  
  1137. 7. Exit return codes
  1138. ====================
  1139.  
  1140. Internal reference Value  Comment
  1141. ------------------ ----- -----------------------------
  1142.  EXIT_OK             0     No error
  1143.  EXIT_INT_ERR        1     Internal error (?)
  1144.  EXIT_NO_MEM         2     Out of memory
  1145.  EXIT_NO_DISK        3     Out of disk space
  1146.  EXIT_NO_OPEN        4     Cannot open archive file
  1147.  EXIT_NO_TMP         5     Cannot open temporary file
  1148.  EXIT_NO_FOUND       6     Cannot find matching archive(s)
  1149.  EXIT_NO_PATH        7     Cannot find path
  1150.  EXIT_NO_BASE        8     Cannot access base directory
  1151.  EXIT_NO_MKDIR       9     Cannot create directory
  1152.  EXIT_BREAK          10    User interrupt
  1153.  EXIT_FILE_ERR       11    Unknown file error - cannot read from file
  1154.  EXIT_BAD_HDR        12    Archive directory (partly) corrupted
  1155.  EXIT_BAD_EXT        13    Archiver extention (contents?) not recognized
  1156.  EXIT_BAD_ARC        14    An archive at all?
  1157.  EXIT_LONG_NO        15    Unsupported long arg.format - or too many arg.
  1158.  EXIT_LONG_PATH      16    Path too long
  1159.  EXIT_NO_OVERRIDE    17    Cannot override base path
  1160.  EXIT_NEST           18    Dir's nested too deeply
  1161.  EXIT_SCRIPT_ERR     19    Error(s) in script file
  1162.  EXIT_NOTHING        20    Nothing to do
  1163.  EXIT_UNSP           21    Method not supported in this version..
  1164.  EXIT_COM            22    Unknown command
  1165.  EXIT_OPT            23    Unknown option
  1166.  EXIT_OPT_DIR        24    Unknown option
  1167.  EXIT_OPT_WR         25    Unknown option
  1168.  EXIT_OPT_VIEW       26    Unknown option
  1169.  EXIT_WC_FORM        27    Wildcard inappropriate use
  1170.  EXIT_WC_NAME        28    Wildcard inappropriate use
  1171.  EXIT_WC_COMPL       29    Wildcard inappropriate use
  1172.  EXIT_CHG_WRPROT     30    Bad attempt to change (write protected) archive
  1173.  EXIT_CHG_DEL        31    Bad attempt to change (deleted) archive
  1174.  EXIT_CHG_UNI        32    Bad attempt to change (block compress) archive
  1175.  EXIT_CHG_MULTI      33    Bad attempt to change (multivol) archive
  1176.  EXIT_CHG_CR         34    Bad attempt to change (encrypted) archive
  1177.  EXIT_CHG_UNCR       35    Bad attempt to change (unencrypted) archive
  1178.  EXIT_BAD_KEYFILE    36    Bad keyfile (cryptation)
  1179.  EXIT_PASS_NO        37    no valid (user)ID (cryptation)
  1180.  EXIT_PASS_DIFF      38    Password verification failed (cryptation)
  1181.  EXIT_SECURITY       39    General secur/encryp error (cryptation)
  1182.  EXIT_NOCRYPT        40    Cannot handle encryp.archive (cryptation)
  1183.  
  1184. ------------------------------------------------------------------------------
  1185.  
  1186. Stig Valentini, x1develop@dk-online.dk
  1187.  
  1188. ------------------------------------------------------------------------------
  1189.  
  1190.