home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / utils / arj.zip / ARJ.DOC < prev    next >
Text File  |  1990-12-28  |  71KB  |  1,596 lines

  1.  
  2.  
  3.  
  4.  
  5.      User's Manual for the ARJ archiver program,   December 1990
  6.  
  7.  
  8.  
  9.         ARJ software and manual copyright (c) 1990 by Robert K Jung.
  10.         All rights reserved.
  11.  
  12.         ARJ version 0.20  BETA test release
  13.  
  14.  
  15.  
  16.  
  17.      ***IMPORTANT NEWS*****************************************************
  18.  
  19.         Previous users of ARJ should read the WHATSNEW.DOC!!!  It contains
  20.         important information about changes and issues since test releases
  21.         0.13a, 0.14, 0.15, and 0.15a.
  22.  
  23.      **********************************************************************
  24.  
  25.  
  26.      INTRODUCTION:
  27.  
  28.         ARJ is my first attempt to use my interest in compression
  29.         technology to produce an archiver for personal use on my PC and on
  30.         minicomputers.  ARJ is written entirely in ANSI C and only uses ANSI
  31.         standard libraries.  All machine dependent functions (file
  32.         date-time modified, file attributes, etc.) are contained in a
  33.         single environment source file using ifdefs to enable one to
  34.         maintain a single version of the source code for multiple different
  35.         machines.  This version has manually optimized CRC and output
  36.         routines.
  37.  
  38.         The current functionality of ARJ is patterned after that of LHARC
  39.         with additional features derived from those of the competition.
  40.  
  41.         I have created a new archive format for ARJ to support cross
  42.         platform archives, multiple volume archives, and a new security
  43.         envelope feature.  Trying to maintain compatibility with existing
  44.         formats is difficult and possibly expensive (legally speaking).
  45.  
  46.         In addition, there are definite plans to port full blown versions
  47.         of ARJ to the AMIGA and ATARI ST platforms.  I expect those
  48.         versions to be available before mid-1991.  There will be a
  49.         simplified version of ARJ in source code to be released for the
  50.         UNIX platform late in 1991.
  51.  
  52.         This may start another compression war, but competition begets new
  53.         and better standards.  Just look at the improvements to PKZIP over
  54.         the past few years.  ARJ is the result of my desire for an archiver
  55.         that would do what I needed.  It is not an attempt to be everything
  56.         to everyone.  But if ARJ is what you need, so much the better.  I
  57.         intend to keep improving ARJ over the long haul even after LHARC
  58.         2.0 is released, because data compression is my hobby.
  59.  
  60.         Some users, however, believe that miracles will be the result of
  61.         such a war.  I have included a brief synopsis of the state of the
  62.         art of data compression research at the end of this document.  This
  63.         may be enlightening to archiver users.  Archivers have just caught
  64.         up with the state of the art.
  65.  
  66.  
  67.      TERMINOLOGY:
  68.  
  69.         The following terms are used through this manual.
  70.  
  71.         ARCHIVE - This is a file containing one or more files which may
  72.         be compressed and containing file related information such as
  73.         filename and date-time last modified, etc.
  74.  
  75.         ARJ FILE - This is an archive created by ARJ.
  76.  
  77.         COMPRESSION - The process of encoding redundant information into
  78.         data requiring less storage space.
  79.  
  80.         COMPRESSION PERCENTAGE/RATIO - The percentage compression reported
  81.         by ARJ is a variation of one of the TWO standard methods of
  82.         expressing compression ratio in the technical literature.  ARJ uses
  83.         the compressed size / original size ratio.  The other method is the
  84.         inverse ratio.  When ARJ reports 96% as the compression ratio, that
  85.         means that the compressed file is 96 percent of the original size
  86.         (very little compression).  Other archivers use their own methods.
  87.         LHARC uses the same ratio as ARJ.
  88.  
  89.         EXTRACTION or UNCOMPRESSION - The processing of recreating the
  90.         exact information that was previously compressed.
  91.  
  92.         SELF-EXTRACTION MODULE - This is an archive that is an
  93.         executable file that is capable of extracting self-contained
  94.         files.
  95.  
  96.         TEXT MODE - In text mode, ARJ inputs the file using the C library
  97.         text mode which translates the carriage return, linefeed control
  98.         characters of MS-DOS to a single linefeed character.  This saves
  99.         space and provides the option for cross platform file extraction.
  100.         On another platform, the host C library would change the single
  101.         linefeed to the host text newline separator sequence. In addition,
  102.         for platforms, such as PRIMOS which set bit 8 in ASCII text
  103.         characters, ARJ sets/resets bit 8 according to the platform
  104.         extracted to.
  105.  
  106.         VOLUMES - These are ARJ archives that are in sequence and have
  107.         been created by a single ARJ command.  Files in the volumes may
  108.         span volumes in a split format.
  109.  
  110.  
  111.      MAJOR FEATURES OF ARJ:
  112.  
  113.         BEST compression in terms of size reduction of the currently
  114.         available archivers including PKZIP 1.10, PAK 2.51, and LHARC
  115.         1.13c.  Users have reported that ARJ also compresses slightly
  116.         better than ARC 7.00 BETA.  ARJ is particularly effective with
  117.         database file, text files, and very small files.
  118.  
  119.         Archive and individual file comments with option of inputting
  120.         comments from a file.
  121.  
  122.         32 bit CRC file integrity check.
  123.  
  124.         Test new archive before overwriting the original archive option.
  125.  
  126.         Multiple volume archives with one ARJ command.  This allows the
  127.         user to backup a full hard disk drive to multiple floppies.
  128.         Recovery of individual files is convenient because each volume is
  129.         an individual archive.  No need to use SLICE with ARJ.
  130.  
  131.         Multiple string searching within archive files.
  132.  
  133.         Built-in facility to recover files from broken archives.
  134.  
  135.         Self-extraction feature that is internal to the ARJ runfile.  The
  136.         SFX module is full-featured with a built-in help screen.
  137.  
  138.         Internal string data integrity check in ARJ to resist hacking a la
  139.         LHARC to ICE.
  140.  
  141.         Archive security envelope feature to resist tampering with secured
  142.         archives.  This feature disallows ANY changes to a secured archive.
  143.         Not even comments can be changed.
  144.  
  145.         Password option to encrypt archived files.
  146.  
  147.         Text mode data compression option to enable movement of text files
  148.         from one host machine to another.  Text mode also results in
  149.         greater file size reduction on MS-DOS machines.
  150.  
  151.         File extraction to screen in a paged mode to permit browsing
  152.         through an archive.
  153.  
  154.         Specification of the files to be added to an archive via one or
  155.         more list files.  In addition, ARJ can generate a list file.
  156.  
  157.         Specification of files to be excluded from processing by ARJ.
  158.  
  159.         Sub-directory recursion during compression and extraction.
  160.  
  161.         ARJ source code compilable on any machine supporting ANSI C.  This
  162.         code has compiled and produced working archivers on at least two
  163.         platforms.  This will allow the porting of ARJ to many other
  164.         platforms.  Source code is not currently available for public
  165.         release.  However, I do intend to release source code for a UNIX
  166.         version of ARJ in 1991.
  167.  
  168.  
  169.      BETA TEST RELEASE NOTES:
  170.  
  171.         This version is provided for your personal use for evaluation.  I
  172.         would appreciate bug reports, comments, and suggestions.  This is
  173.         your opportunity to improve this archiver.  In any case, the ARJ
  174.         1.00 production release WILL maintain compatibility with version
  175.         0.20, so that your investment in time and files in ARJ will not be
  176.         obsoleted.
  177.  
  178.         This version does NOT include any expiration feature.  ARJ 0.20 is
  179.         fully functional.  No function has been crippled.  But this is a
  180.         BETA version.  You should fully test any archives that you plan to
  181.         permanently keep in ARJ format.  I suggest using the "-jt" test
  182.         archive switch to test all archives that you build.
  183.  
  184.         Your first comment after using ARJ probably may be that it is
  185.         somwhat slow during compression.  But if you value file size
  186.         reduction more than time, then ARJ may be for you.  In any case,
  187.         archive extraction speed is comparable to other archivers.  You may
  188.         also like the speed and compression of methods 3 and 4 (-m3,-m4).
  189.  
  190.         Here is a suggested command that will test ARJ on all of your files:
  191.  
  192.         arj a A:\vol c:\*.* -r -jt -y "-vasdel A:\vol.*"
  193.  
  194.         I am especially interested in your comments on the following
  195.         features of ARJ:
  196.  
  197.         Archive by date-time stamp with the "-o" switch.
  198.  
  199.         The use of .A01, .A02, etc for multiple volume archives.
  200.  
  201.         The new "-jv" verbose switch option for the "l" and "v" commands.
  202.  
  203.  
  204.      GETTING STARTED:
  205.  
  206.         I assume that you have a copy of the self-extracting ARJ module
  207.         named ARJ020.EXE.  Typing ARJ020 [RETURN] at the DOS command prompt
  208.         will initiate the self-extraction feature.  ARJ020 will by default
  209.         extract its files to the current directory.  When ARJ020 starts,
  210.         you will see several lines of text describing ARJ and then a line
  211.         asking if you wish to continue extraction.  Entering "yes" or "y"
  212.         will continue the extraction.  If there are any duplicate filenames
  213.         in the current directory, the program will prompt you for
  214.         overwriting.  You can say "yes", "no", or "quit".  Only the
  215.         extracted ARJ.EXE file needs to be copied to a directory named in
  216.         your "PATH" command in your autoexec.bat file.  On many PCs, this
  217.         directory may be C:\DOS or C:\BIN.  With MS-DOS 3.0 and above,
  218.         you can use path notation "\BIN\ARJ e archive" to use ARJ.
  219.  
  220.         You may, of course, prefer to use ARJ 0.15 to extract the contents
  221.         of ARJ020.EXE file manually.  Example:  ARJ e arj020.exe \temp\
  222.  
  223.         The AV.EXE file is only a ARJ file lister provided as a skeleton
  224.         program for software developers.  It is not needed to use ARJ.
  225.  
  226.  
  227.      QUICK START TO USING ARJ:
  228.  
  229.         To create an ARJ archive containing all of the files in the
  230.         current directory:
  231.  
  232.         ARJ a archive
  233.  
  234.         To create an ARJ archive containing all files with the ".DOC"
  235.         extension in the current directory:
  236.  
  237.         ARJ a archive *.DOC
  238.  
  239.         To create an ARJ archive containing all of the files in the
  240.         named directory and all files in subdirectories of the named
  241.         directory:
  242.  
  243.         ARJ a archive named_directory\*.* -r
  244.  
  245.         To extract all of the files in an archive to the current
  246.         directory:
  247.  
  248.         ARJ e archive
  249.  
  250.         To extract all of the files in an archive to a named directory:
  251.  
  252.         ARJ e archive named_directory\
  253.  
  254.         To extract all files with the ".DOC" extension to the current
  255.         directory:
  256.  
  257.         ARJ e archive *.DOC
  258.  
  259.         To extract all of the files in an archive recreating the
  260.         original directory structure:
  261.  
  262.         ARJ x archive original_directory_name\
  263.  
  264.         To list all of the files in an archive:
  265.  
  266.         ARJ l archive
  267.  
  268.  
  269.      HOW TO USE ARJ:
  270.  
  271.         Where I do not elaborate in this manual, you can assume that ARJ
  272.         usage is similar to that of LHARC.
  273.  
  274.         If you type ARJ [return] you will see a help screen similar to the
  275.         following:
  276.  
  277. ARJ 0.20 BETA Copyright (c) 1990 Robert K Jung
  278.  
  279. All rights reserved.  Free for non-commercial personal use.  Dec 27 1990
  280. List of frequently used commands and switches.  Type ARJ -? for more help.
  281.  
  282. Usage:     ARJ <command> [-<sw> [-<sw>...]] <archive_name> [<file_names>...]
  283. Examples:  ARJ a -r -wtemp software , ARJ l software , ARJ e software readme
  284.  
  285. <Commands>
  286.   a: Add files to archive               m: Move files to archive
  287.   d: Delete files from archive          t: Test integrity of archive
  288.   e: Extract files from archive         u: Update files to archive
  289.   f: Freshen files in archive           v: Verbosely list contents of archive
  290.   l: List contents of archive           x: eXtract files with full pathname
  291. <Switches>
  292.   c: (All) skip time-stamp Check        n: (All) only New files (not exist)
  293.   d: (afu) with Delete (move)           r: (All) Recurse subdirectories
  294.   e: (afu) Exclude paths from names     u: (All) Update files (new and newer)
  295.   f: (All) Freshen existing files       v: (All) enable multiple Volumes
  296.   g: (All) Garble with password         w: (Upd) assign Work directory
  297.   i: (All) with no progress Indicator   x: (All) eXclude selected files
  298.   m: (afu) with Method 0, 1, 2, 3, 4    y: (All) assume Yes on all queries
  299.  
  300.  
  301.         If you type ARJ -? [return] you will see a more detailed help
  302.         screen similar to the following with page pauses.  Type ARJ -? -jp
  303.         to toggle the pauses off.
  304.  
  305. ARJ 0.20 BETA Copyright (c) 1990 Robert K Jung
  306.  
  307. Usage:  ARJ <command> [{/|-}<switch>[-|+|<option>]...] <archive_name>[.ARJ]
  308.             [<base_directory_name>\] [<!list_name>|<path_name>|<wild_name>...]
  309.  
  310. <Commands>
  311.   a: Add files to archive               p: Print files to standard output
  312.   c: Comment archive files              r: Remove paths from filenames
  313.   d: Delete files from archive          s: Sample files to screen with pause
  314.   e: Extract files from archive         t: Test integrity of archive
  315.   f: Freshen files in archive           u: Update files to archive
  316.   l: List contents of archive           v: Verbosely list contents of archive
  317.   m: Move files to archive              w: Where are text strings in archive
  318.   n: reName files in archive            x: eXtract files with full pathname
  319.  
  320. <Switches>
  321.   a: (afu) allow any file Attribute     v: (All) enable multiple Volumes
  322.   b: (afu) Backup changed files            vv: beep before successive volumes
  323.  b1: (afu) Backup + reset archive bits     va: auto-detect space available
  324.   c: (All) skip time-stamp Check           vas: auto-detect and system command
  325.   d: (afu) with Delete (move)              vvas: beep, auto-detect, and command
  326.      asks permission before deleting       vascommand: -va + execute command
  327.   e: (afu) Exclude paths from names        v181000: create 180K size archives
  328.  e1: (afu) Exclude base dir from names     v360s: 362K size and system command
  329.   f: (All) Freshen existing files          v360, v720, v1200, v1440: abbrevs
  330.   g: (All) Garble with password            vv360s: beep, 362K size and command
  331.      gstew: garble with password stew   w: (Upd) assign Work directory
  332.   i: (All) with no progress Indicator      wtmp: use tmp as work directory
  333.   k: (Upd) Keep archive file backup     x: (All) eXclude selected files
  334.   l: (All) create List_name file           x*.exe: exclude *.exe files
  335.      lnames.lst: creates names.lst         x!nam.lst: exclude files in nam.lst
  336.   m: (afu) with Method 0, 1, 2, 3, 4       multiple exclusions are allowed
  337.      m0: store (no compression)         y: (All) assume Yes on all queries
  338.      m1: maximum compression               use this switch for batch mode
  339.      m2: less memory and compression   ja: (All) show ANSI comments
  340.      m3: FAST! less compression        jc: (All) test for Console RAW mode
  341.      m4: FASTEST! least compression    je: (Upd) create self-Extracting archive
  342.   n: (All) only New files (not exist)  jf: (afu) store Full specified path
  343.   o: (All) On or after YYMMDDHHMMSS    jk: (Upd) Keep temp archive on error
  344.      o901225: on/after 12/25/90        jp: (lv)  Pause after each screenful
  345.  ob: (All) Before YYMMDDHHMMSS         jr: (All) Recover broken archive files
  346.      ob901225: before 12/25/90         js: (afu) Store archives by suffix
  347.   p: (All) match using full Pathnames      default is arj, arc, lzh, pak, zip
  348.   q: (All) Query on each file              js.zoo.lzh: store .zoo, .lzh files
  349.   r: (All) Recurse subdirectories      jt: (Upd) Test temporary archive
  350.   s: (Upd) set archive time-Stamp      ju: (All) translate UNIX style paths
  351.   t: (afu) archive file in Text mode   jv: (All) set Verbose display
  352.      t0: force binary mode             jx: (afu) start at eXtended position
  353.   u: (All) Update files (new + newer)      jx10000: start at position 10000
  354.  
  355. Simple examples:
  356.   Archive all files in current directory:      arj a archive
  357.   Extract archive to current directory:        arj e archive
  358.   Extract new and newer files without query:   arj e archive -u -y
  359.   List contents of archive:                    arj l archive
  360.  
  361. Other examples:
  362.   arj a -wd:\ /t /m2 /s archive.arj c:\source\ *.c *.h
  363.   arj a floppy software\*.* product\*.* /lnames.lst /r /v360000
  364.   arj e archive \temp\ *.c *.h read.me -u -y
  365.  
  366. ARJ 0.20 - Archiver - Copyright (c) 1990 Robert K Jung.  All rights reserved.
  367.  
  368. ARJ is free to use, copy, and distribute for non-commercial personal use if
  369. ARJ is not modified and no fee is charged for using, copying, or distributing
  370. ARJ except as noted in the license document.  If you find ARJ of value, a gift
  371. of 10 dollars or any amount would be greatly appreciated.  For more
  372. information concerning ARJ, see the accompanying documentation or contact:
  373.  
  374.   Robert K Jung                  CompuServe userid: 72077,445
  375.   2606 Village Road West         Internet address:  72077.445@compuserve.com
  376.   Norwood, Massachusetts 02062
  377.   USA
  378.  
  379.  
  380.      ARJ LIMITATIONS:
  381.  
  382.         ARJ will accept up to:    64 filenames/wildnames on command line
  383.                                16000 filenames resulting from wildnames
  384.                                 8000 filenames/wildnames to exclude
  385.                                 8000 ARJ filenames resulting from wildnames
  386.                                 2048 character comments
  387.                                      (up to 25 lines or 1 file)
  388.  
  389.         ARJ requires approximately 300,000 bytes plus the memory necessary
  390.         to store all of the pathnames to be archived.
  391.  
  392.         As far as I know there is no limitation on the number of files that
  393.         can be stored in one archive.  However, each add command can only
  394.         add a maximum of 16000 files at a time depending upon memory
  395.         availability.  I expect that a normal maximum of 5000 to 8000
  396.         filenames can be handled without running out of memory during the
  397.         compress phase.
  398.  
  399.         If you do not have enough memory, you should use the "-l" switch to
  400.         dump the filenames to a list file.  You can then break the list
  401.         file into smaller files and use multiple ARJ commands to archive
  402.         all of the files.
  403.  
  404.         Example:
  405.  
  406.            ARJ a archive \*.* -r -lname.lst
  407.  
  408.            If the above command fails due to lack of memory, split the
  409.            name.lst file into smaller pieces named name1.lst, name2.lst,
  410.            etc.  Then execute:
  411.  
  412.            ARJ a archive !name1.lst
  413.            ARJ a archive !name2.lst
  414.            .
  415.            .
  416.  
  417.         ARJ currently does NOT differentiate between wildnames like "C:*.*"
  418.         and "C:\*.*".  ARJ would expand each of those two wildnames into a
  419.         list twice that could be up to twice as long as necessary.
  420.  
  421.         When updating an archive, ARJ creates a temporary file named
  422.         ARJ.$$$ in the current directory or work directory.
  423.  
  424.         While ARJ is scanning a wildcard filespec, ARJ will change the name
  425.         of the target archive to ARJ.$$$ while the scan is proceeding to
  426.         avoid including the archive itself in an add command.  Also, as a
  427.         result, you cannot add a file named ARJ.$$$ to an ARJ archive.
  428.  
  429.  
  430.      DIFFERENCES BETWEEN ARJ AND LHARC:
  431.  
  432.         The archive formats are NOT compatible.
  433.  
  434.         The compression and decompression algorithms are NOT compatible.
  435.  
  436.         ARJ only supports its own archive format.
  437.  
  438.         ARJ by default stores the full specified pathname of files
  439.         archived minus any drive letter and root symbol.
  440.  
  441.         The "e" and "x" commands will by default extract all of the files
  442.         in the archive without using date time stamps to select files.  You
  443.         should specify "-u -y" to duplicate LHARC functionality.
  444.  
  445.         The ARJ archive suffix is ".ARJ".
  446.  
  447.         ARJ does NOT sort filenames when archiving.
  448.  
  449.  
  450.      IMPORTANT NOTES:
  451.  
  452.         When using the "-w" working directory switch, ARJ does not check on
  453.         space availability before overwriting the original archive if it
  454.         exists.  Be sure that you have enough disk space for the new
  455.         archive before using the "-w" switch.  If ARJ aborts in this
  456.         situation because of disk space, ARJ will keep the temporary
  457.         archive.
  458.  
  459.         By default, ARJ does not see hidden or system files when using
  460.         wildnames.  ARJ will process system and hidden when you either
  461.         specify the exact filename or specify the "-a" switch.
  462.  
  463.         For MS-DOS environments that switch on RAW console mode via
  464.         programs like RAW.COM, ARJ has a new switch "-jc" which tells ARJ
  465.         to check for RAW mode and switch its STDIN from fgets() to cgets().
  466.         If this switch is not used, ARJ will hang up on its first user
  467.         prompt.
  468.  
  469.         Like LHARC and PKZIP, ARJ requires extra disk space to UPDATE an
  470.         archive file.  ARJ will backup the original archive while it
  471.         creates the new archive, so enough room must be available for both
  472.         archives at the same time.
  473.  
  474.         Currently, ARJ will not extract to a readonly file.
  475.  
  476.  
  477.      ARJ ERROR SITUATIONS:
  478.  
  479.         ADD:
  480.  
  481.         If a user specified file is not found during an add, ARJ will
  482.         continue processing, but will keep the archive and terminate with
  483.         an error condition.
  484.  
  485.         In a disk full condition or any other file i/o error, ARJ will
  486.         promptly terminate with an error condition and delete the temporary
  487.         archive file unless the user has specified the "-jk" switch.
  488.  
  489.         MOVE:
  490.  
  491.         ARJ will only delete files that have been successfully added to the
  492.         archive.  If you have specified the "-jt" (test) switch, ARJ will
  493.         abort on any error including the file not found during add. If you
  494.         specify the "-jk" switch, ARJ will not delete the temporary archive
  495.         upon an abort.
  496.  
  497.  
  498.         EXTRACT:
  499.  
  500.         In a disk full condition or any other file i/o error, ARJ will
  501.         promptly terminate with an error condition and delete the current
  502.         output file.
  503.  
  504.  
  505.      ARJ USER ACTION PROMPTS:
  506.  
  507.         ARJ prompts the user for action at certain times.  There are
  508.         several types of prompts.  One is for yes/no permission, another is
  509.         for a new filename, another is for archive comments, and one other
  510.         is for search strings.  The yes/no prompts will also accept "quit"
  511.         for program termination and "always" to bypass further user
  512.         prompts.
  513.  
  514.         Since ARJ uses STDIN for user input, be careful about typing ahead
  515.         anticipating prompts.  ARJ may prompt you for an unexpected action
  516.         and use your earlier input.
  517.  
  518.  
  519.      ARJ ENVIRONMENT VARIABLE:
  520.  
  521.         ARJ will first look for an environment variable named ARJ_SW and
  522.         use its value as switch options for ARJ.  If ARJ finds such an
  523.         environment variable, it will display a message to that effect.
  524.  
  525.         Type SET ARJ_SW = <switches>
  526.  
  527.         Example:  SET ARJ_SW = -w\temp -k -e
  528.  
  529.         As in LHARC, command line switches can be selected to override
  530.         ARJ_SW settings.
  531.  
  532.  
  533.      ARJ COMMAND LINE SYNTAX:
  534.  
  535.         ARJ <command> [-<switch>[-|+|<option>]...] <archive_name>[.ARJ]
  536.         [<base_directory_name>\] [<!list_name>|<path_name>|<wild_name>...]
  537.  
  538.         Currently commands and switches can be entered in upper or lower
  539.         case.  That is subject to change.  For compatibility with future
  540.         versions, you should use lower case commands and switches.
  541.  
  542.         ARJ now supports the use of either "-" or "/" as the switch option
  543.         character.  The first occurrence of either "-" or "/" that ARJ
  544.         encounters will determine the switch symbol.  You may NOT mix and
  545.         match switch symbols.  This also includes the ARJ_SW environment
  546.         variable.  ARJ_SW is checked first for switches.  Throughout this
  547.         document, the symbol "/" may be substituted for "-" in switch
  548.         usage.
  549.  
  550.         Examples:  ARJ a A:archive *.* /va /r    is correct
  551.                    ARJ a A:archive *.* /va -r    IS INCORRECT USAGE!
  552.  
  553.         Switch options SHOULD NOT be combined.  At this time combinations
  554.         such as "-ki" representing "-k" and "-i" will work, but may not in
  555.         the future.
  556.  
  557.         The switch option "--" tells ARJ that there are no more switch
  558.         options to process in the current command line.  This is useful
  559.         when you need to enter filenames beginning with "-".
  560.         Example:  ARJ a archive -- -testfile
  561.  
  562.         The standard ARJ file suffix is ".ARJ".  Subsequent multiple volume
  563.         archives end in ".A01", ".A02", etc.
  564.  
  565.         The ARJ command must be the first non-switch argument after "ARJ".
  566.         The ARJ archive name must be the first filename on the command
  567.         line.  The base directory, if any, must be the second filename
  568.         argument.  The switches and other filenames can be in any order.
  569.         The base directory name must end with "\" (backslash) or ":"
  570.         (colon).
  571.  
  572.         For commands other than adding files to an archive (a, f, m, u),
  573.         you can specify a wildcard for the archive name such as "*.ARJ".
  574.         Also, if you also specify the "-r" switch,  ARJ will search
  575.         sub-directories for ARJ archives (*.ARJ) also.  Be careful using
  576.         wildcards this way.  The command ARJ d *.ARJ -r will delete every
  577.         file in every archive in and under the current directory.
  578.  
  579.         Example:  ARJ l * -r  will list all of your *.ARJ files.
  580.  
  581.         Switches specified on the command line will either toggle or
  582.         override switches specified with the ARJ_SW environment variable.
  583.         Switch usage is identical to that of LHARC.
  584.  
  585.         "-s+"        turns on switch "s".
  586.         "-s-"        turns off switch "s".
  587.         "-s"         toggles the state of switch "s".
  588.         "-sname"     provides the name argument for switch "-s".
  589.         "--"         skip processing of any more switch options.
  590.  
  591.         Wild_names follow MS-DOS convention.  "*.*" means all files.
  592.         "*.DOC" means all files with an extension of ".DOC".  "?B*.*"
  593.         means all files with a second character of "B".
  594.  
  595.         The default for <wild_name> for all commands except for "d" is
  596.         "*.*".
  597.  
  598.         Filename matching in the archive does not use full pathnames unless
  599.         the "-p" switch is specified.
  600.  
  601.         You can supply one or more filenames for files containing lists of
  602.         files to be added to an archive.  The filenames must be listed one
  603.         per line with no leading or trailing blanks.  The list filename(s)
  604.         must be prefixed with "!".  Because of the list filename syntax,
  605.         you cannot specify a filename or wildname beginning with "!".
  606.  
  607.         You can in ARJ 0.20 exclude filenames/wildnames from the list of
  608.         filenames to be processed by ARJ.
  609.  
  610.         Example:  ARJ a software *.* -x*.exe -x*.obj   adds all files
  611.         in the current directory except .EXE and .OBJ files.
  612.  
  613.  
  614.      ARJ COMMANDS:
  615.  
  616.         a: Add files to archive
  617.  
  618.            This is the basic command to add disk files to an ARJ archive.
  619.            You can specify 0 to 64 filename arguments (one can be a
  620.            destination directory).  The arguments can be wildnames.  If
  621.            you specify the "-r" switch (recurse subdirectories), ARJ
  622.            will add all of the files in all of the subdirectories that
  623.            match the specified wildname.
  624.  
  625.            Example:  ARJ a -t archive subdir\*.*
  626.                      Archive all files in directory "subdir" in text mode.
  627.  
  628.         c: Comment archive files
  629.  
  630.            This command allows you to comment the header and individual
  631.            files.  ARJ will prompt you for each comment.  The user will be
  632.            prompted for up to 25 lines for each comment.  A line containing
  633.            only a [return] will terminate the comment.
  634.  
  635.            The user can elect to input comment data from a file by entering
  636.            the comment filename preceded by an "!" as in "!archive.txt"
  637.            starting in column 1 of the first comment line.
  638.  
  639.            To erase a comment from an archive, type [space] [return] on the
  640.            first comment line and [return] on the second comment line.
  641.  
  642.            To add only the archive comment and not file comments, use the
  643.            following command:
  644.  
  645.            ARJ c archive ...
  646.  
  647.            The "..." will not match any filenames.
  648.  
  649.         d: Delete files from archive
  650.  
  651.            This commands allows you to delete files from the archive.  When
  652.            wildcard selection is not suitable, you can use the "-q" switch
  653.            which causes ARJ to prompt you for deletion for each file
  654.            selected.
  655.  
  656.            Example:  ARJ d archive *.c
  657.                      Delete all files in archive ending in ".c".
  658.  
  659.                      ARJ d archive *.c -q
  660.                      Prompt before deleting files ending in ".c".
  661.  
  662.         e: Extract files from archive
  663.  
  664.            This command will extract one or more files from the archive to
  665.            the current directory or base directory if specified.  ARJ will
  666.            prompt the user before overwriting existing files unless the
  667.            user specifies the "-y" switch.  If the user gives a "no"
  668.            answer, ARJ will prompt for a new filename.  If the user enters
  669.            a single [return] instead of a filename, ARJ will skip the
  670.            current file extraction.
  671.  
  672.            When extracting a file located on multiple volumes, ARJ may
  673.            prompt the user with an "Append? " like prompt.  This will
  674.            usually occur with files split across volumes.
  675.  
  676.            Example:  ARJ e archive soft\ *.c
  677.                      Extract all files ending in ".c" to subdirectory
  678.                      "soft".
  679.  
  680.         f: Freshen files in archive
  681.  
  682.            Update matching files in the archive that are OLDER than the
  683.            selected disk files.
  684.  
  685.            Example:  arj f archive *.c *.h
  686.  
  687.         l: List contents of archive
  688.  
  689.            List contents of archive to standard output.  The display can be
  690.            paused after each screenful with the "-jp" switch.  The files
  691.            are listed in stored order.  There are no sort options
  692.            currently.
  693.  
  694.            The last field on the display TPMGVX stands for:
  695.                T -> text/binary mode
  696.                P -> path information available in "V" listing
  697.                M -> compression method used
  698.                G -> file has been garbled (encrypted)
  699.                V -> archive has been continued to another volume
  700.                X -> this file is an extended portion of a larger file
  701.  
  702.            Example:  arj l archive *.c *.h
  703.  
  704.         m: Move files to archive
  705.  
  706.            This command is the same as specifying the "a" command with the
  707.            "-d" switch.  The "m" commands adds the selected files to the
  708.            archive.  If the adds are successful, then the added files are
  709.            deleted.  The move command does not ask permission before
  710.            deleting the files.  Use the "-d" switch for that feature.
  711.  
  712.            Example:  ARJ m archive soft\*.*
  713.  
  714.         n: reName files in archive
  715.  
  716.            This command allows you to change the names of the files stored
  717.            in an ARJ archive.  ARJ will prompt for the new name of each
  718.            selected file.  You can skip changing the name of a particular
  719.            file by entering a blank line.
  720.  
  721.            Example:  ARJ n archive *.c
  722.  
  723.            In the above example, ARJ prompts for new names for all *.c
  724.            files.
  725.  
  726.         p: Print files to standard output
  727.  
  728.            Output files to standard output.  This function works such that
  729.            the output file will contain only the file data extracted.  This
  730.            is important for UNIX-like usage.
  731.  
  732.            Example:  ARJ p archive manual.doc > output.fil
  733.  
  734.            In the above example, output.fil will be an exact copy of
  735.            manual.doc.  There will be no extraneous header information in
  736.            output.fil.  All extraction phase information is written to the
  737.            STDERR device, which is normally the display screen.
  738.  
  739.            NOTE:  Because of a problem using fwrite() and STDOUT, errors
  740.            occurring during redirection to serial and printer ports may not
  741.            be detected.  Errors during redirection to disk files will be
  742.            detected.
  743.  
  744.         r: Remove paths from filenames
  745.  
  746.            This command causes ARJ to remove the path component from the
  747.            specified filenames stored in the archive.  The default is all
  748.            filenames stored in the archive.  This command is useful if you
  749.            forgot to specify "-e" to exclude paths.
  750.  
  751.         s: Sample files to screen with pause
  752.  
  753.            This command is similar to the "p" command except that one
  754.            screenful of data is displayed to the user and a user action is
  755.            then requested.  The action prompt can be suppressed with the
  756.            "-y" switch.
  757.  
  758.            The "s" command filters the text to output by truncating at 79
  759.            characters per line and displaying '?' for control characters.
  760.  
  761.         t: Test integrity of archive
  762.  
  763.            Test the contents of the selected files for the correct CRC
  764.            value.  ARJ uses a 32 bit CRC to validate the contents of the
  765.            files.  The use of 32 bit CRCs is many times better than the
  766.            use of 16 bit CRCs for the detection of errors.
  767.  
  768.            Use this command to fully test the security envelope on an
  769.            ARJ-SECURED archive.
  770.  
  771.         u: Update files to archive
  772.  
  773.            Update older files in the archive and add files that are new to
  774.            the archive.
  775.  
  776.            Example:  arj u software
  777.  
  778.         w: Where are text strings in archive
  779.  
  780.            This command will prompt the user for up to 20 text strings to
  781.            search for within the archive.  The search is done with case
  782.            being significant.  A count of all matches will displayed after
  783.            each individual file is scanned.
  784.  
  785.            Search strings are limited to 79 characters.
  786.  
  787.            Matches that span archive volumes will not be detected by
  788.            this string search.
  789.  
  790.         v: Verbosely list contents of archive
  791.  
  792.            This command lists the full pathname and comments of the archive
  793.            files as well as the same information as the "l" command.
  794.  
  795.            Use the "-jp" switch to pause the output after each screen.
  796.  
  797.         x: eXtract files with full pathname
  798.  
  799.            This command extracts one or more files from the archive to
  800.            their full paths in the current directory or to the base
  801.            directory if specified.  ARJ stores pathnames as if they were
  802.            children of the target directory.  Any drive or root directory
  803.            specifications are stripped before storing unless the "-jf"
  804.            switch was specified.
  805.  
  806.            Example:  arj x archive *.c
  807.  
  808.  
  809.      ARJ SWITCH OPTIONS:
  810.  
  811.         -: (all) skip any more switch options
  812.  
  813.            The switch option "--" will cause ARJ to stop looking for any
  814.            more switch options on the command line.  This is useful for
  815.            entering filenames beginning with "-".
  816.  
  817.            Example:  ARJ a archive -- -file
  818.  
  819.         a: (afu) allow any file Attribute
  820.  
  821.            By default ARJ will not select system or hidden files via
  822.            wildcarding unless the "-a" option is specified.
  823.  
  824.         b: (afu) Backup changed files
  825.  
  826.            This switch will select only files that have the archive bit
  827.            set.
  828.  
  829.            If you specify the "-b1" option, the archive bits of all
  830.            archived files will be reset after a successful archive has been
  831.            built.
  832.  
  833.            Example:  arj a a:backup1 c:\*.* -b1 -r -va   simulates BACKUP
  834.            command.
  835.  
  836.         c: (All) skip time-stamp Check
  837.  
  838.            Normally with the "u" and "f" commands, ARJ will only update
  839.            files to an archive which are newer.  The "-c" switch will cause
  840.            ARJ to update the archive regardless of the date-time modified
  841.            time stamps.
  842.  
  843.            When extracting files from an archive with the "-y" and "-f"
  844.            switches set, ARJ would normally skip extracting older files.
  845.            The "-c" switch will force ARJ to extract these older files.
  846.  
  847.         d: (afu) with Delete (move)
  848.  
  849.            This switch provides the standard MOVE command.  Successfully
  850.            added files will be deleted.  ARJ will prompt the user before
  851.            deleting the files unless the "-y" switch is specified.  Also,
  852.            you can use the "m" command which does not prompt before
  853.            deleting the files.
  854.  
  855.            ARJ a archive filename -d -y       is equivalent to
  856.  
  857.            ARJ m archive filename             and
  858.  
  859.            ARJ a archive filename
  860.            delete filename
  861.  
  862.         e: (afu) Exclude paths from filenames
  863.  
  864.            By default ARJ always stores the pathname of the archived file.
  865.            This switch will cause ARJ to store only the filename component.
  866.  
  867.            Normally, ARJ strips any drive letter and root symbol from
  868.            pathnames.  If you specify the "-jf" switch, ARJ will keep the
  869.            drive and root as in C:\TEMP\FILES.
  870.  
  871.            The "-e1" switch option causes ARJ to NOT store the base
  872.            directory name with the filenames in the archive.
  873.  
  874.            Example:  ARJ a archive C:\SOFTWARE\ARJ\ *.* -r -e1
  875.  
  876.            In the above example, ARJ will NOT store the C:\SOFTWARE\ARJ\ as
  877.            part of the filenames.
  878.  
  879.         f: (All) Freshen existing files
  880.  
  881.            This switch causes ARJ to only extract newer files from the
  882.            archive.
  883.  
  884.         g: (All) Garble with password
  885.  
  886.            This switch followed by a password "-gpassword" will encrypt or
  887.            decrypt an archived file.  During a "l" or "v" command, a
  888.            garbled file will display an "G" after the method number.
  889.  
  890.            Example:  ARJ e archive -gpassword
  891.  
  892.            IMPORTANT INFORMATION:  Due to a bug in previous versions of
  893.            ARJ, certain files that are stored with method 0 with a password
  894.            will not be extractable.  You will see CRC errors reported.
  895.            This version of ARJ has a temporary option "-jg" that will
  896.            extract those garbled files.
  897.  
  898.            Example:  ARJ e archive -gpassword -jg
  899.  
  900.         i: (All) with no progress Indicator
  901.  
  902.            Do not display the percentage progress indicator.  The progress
  903.            indicator appears during the add, extract, search, and test
  904.            operations.
  905.  
  906.         j: (All) selects alternate set of switch characters.
  907.  
  908.            This switch toggles the set of switch characters.  For example,
  909.            "-ja" is not the same function as "-a".
  910.  
  911.         k: (Upd) Keep archive file backup
  912.  
  913.            Backup the original archive file during an update.  The old
  914.            archive will be suffixed with ".BAK".  Any existing ".BAK" file
  915.            will be overwritten.
  916.  
  917.         l: (All) create List_name file
  918.  
  919.            This switch will cause ARJ to dump to the filename after the
  920.            "-l" switch all of the filenames to be processed by this ARJ
  921.            command.  This list contains all files that matched the file
  922.            wildnames given on the command line.
  923.  
  924.            This list file can be used as a listfile on the command line.
  925.  
  926.            Example:  ARJ a -lname.lst archive *.exe
  927.  
  928.            This example will create a file named "name.lst" with all *.exe
  929.            files.
  930.  
  931.         m: (afu) with Method 0, 1, 2, 3, 4
  932.  
  933.            Method 0 = storing   (no compression)
  934.            Method 1 = maximum compression
  935.                                 (requires 334,000 plus bytes memory)
  936.            Method 2 = slightly less compression
  937.                                 (requires 256,000 plus bytes memory)
  938.            Method 3 = less compression
  939.                                 (requires 272,000 plus bytes memory)
  940.            Method 4 = fastest compression
  941.                                 (requires 256,000 plus bytes memory)
  942.  
  943.            Example:  ARJ a archive *.exe -m2
  944.  
  945.            Method 1 and 2 are similar.  Method 2 uses less memory and
  946.            produces slightly less compression.
  947.  
  948.            Method 3 is very fast and gives compression slightly less than
  949.            PKZIP, PAK, and LHARC.
  950.  
  951.            Method 4 uses a different decoder than 1 to 3.  Method 4 is
  952.            provided as a fast compression format.  It is comparable in
  953.            speed to PKZIP but provides slightly less compression.
  954.  
  955.            IMPORTANT INFORMATION:  ARJ 0.20 method 4 has been improved in
  956.            size compression but is NOT compatible with versions earlier
  957.            than 0.15.  However, ARJ 0.20 will still extract and test
  958.            method 4 files correctly, but future versions of ARJ may not
  959.            have that capability.  The new method 4 is more effective with
  960.            files over 8000 bytes in size.  NOTE that the use of method 4 is
  961.            purely user specified.  ARJ will never by default use method 4.
  962.            Methods 1, 2, and 3 are slightly different from earlier
  963.            versions, but are STILL compatible with earlier versions.  The
  964.            method 1 in ARJ 0.15 no longer exists because of the time
  965.            penalty.  Archives created by 0.15 are still compatible with
  966.            all versions of ARJ (0.13 to 0.20).
  967.  
  968.         n: (All) only New files (not exist)
  969.  
  970.            Only archive or extract files that do not exist in the target
  971.            archive or directory.
  972.  
  973.         o: (All) On or after date YYMMDDHHMMSS
  974.  
  975.            The switch "-o" by itself means select files modified today.  If
  976.            "-o" is followed by a date and optionally a time, ARJ will only
  977.            select files modified on or after that date-time.
  978.  
  979.            Example:  ARJ a test -o9001021700    means select files modified
  980.            on or after Jan 2, 1990, 5:00 PM.
  981.  
  982.            Years less than "80" will be considered as 21st century years.
  983.  
  984.            There is no option for using other date-time formats.
  985.  
  986.            The switch "-ob" selects files modified before today.  If "-ob"
  987.            is followed by a date and optionally a time, ARJ will only
  988.            select files modified before that date-time.
  989.  
  990.         p: (All) match using full Pathnames
  991.  
  992.            By default ARJ normally uses just the filename component to
  993.            match files within the archive.  When "-p" is specified, ARJ
  994.            looks for an exact path match, and then, looks for a filename
  995.            component match.
  996.  
  997.            You should use the "-p" switch when updating an archive built
  998.            with the "-r" switch.
  999.  
  1000.         q: (All) Query on each file
  1001.  
  1002.            This switch causes ARJ to prompt the user prior to acting upon
  1003.            each archived file for all but the "l", "t", "v", and "w"
  1004.            commands.  This allows you to selectively delete, add, etc.
  1005.  
  1006.         r: (All) Recurse subdirectories
  1007.  
  1008.            This switch will cause ARJ to recurse any wildcards specified on
  1009.            the command line including ARJ archive filenames by traversing
  1010.            all subdirectories scanning for matches.
  1011.  
  1012.            ARJ will also recurse non-wildcard filenames as in:
  1013.            ARJ a archive FILE.BBS -r
  1014.  
  1015.            You should use the "-p" switch when updating an archive built
  1016.            with the "-r" switch.
  1017.  
  1018.         s: (Upd) set archive time-Stamp
  1019.  
  1020.            This switch causes ARJ to set the date-time stamp of the archive
  1021.            to that of the newest file in the archive.
  1022.  
  1023.            This option will also work with non-update commands as in:
  1024.            ARJ l archive -s ...
  1025.  
  1026.         t: (afu) archive file in Text mode
  1027.  
  1028.            This switch causes ARJ to open and read the file to be archived
  1029.            in text mode.  This option should not be used on non-text files.
  1030.            The "-t" switch is equivalent to "-t1".
  1031.  
  1032.            If you specify the switch "-t0", ARJ will always use the binary
  1033.            mode even for freshening files already in the archive.
  1034.  
  1035.         u: (All) Update files (new and newer)
  1036.  
  1037.            This switch causes ARJ to archive or extract newer and
  1038.            non-existing files.
  1039.  
  1040.         v: (All) enable multiple Volumes
  1041.  
  1042.            This switch allows the creation of multiple volumes in the ADD
  1043.            mode.  The command "arj a a:arjvol \*.* -b -r -v360000" allows a
  1044.            user to backup up all files changed since the last backup to
  1045.            multiple floppy disks.  ARJ will pause between volumes to allow
  1046.            changing disks.  Subsequent volumes will be suffixed .A01, .A02,
  1047.            .A03, ... , .A99, .A00, .A01, etc.
  1048.  
  1049.            Archived files can be split across volumes.  ARJ will try to
  1050.            fill each volume to within 200 to 3000 bytes of specified
  1051.            maximum size.
  1052.  
  1053.            The command "arj x a:arjvol -v" would restore files starting
  1054.            from arjvol.arj.  You must specify the entire ARJ volume name
  1055.            including the .Ann suffix when starting from the middle of a
  1056.            series of volumes.
  1057.  
  1058.            The pauses between volumes can be suppressed with the "-y"
  1059.            switch.  You should not suppress the pauses when archiving to
  1060.            diskettes.
  1061.  
  1062.            Because of the splitting process, archived split files with a
  1063.            size of zero bytes are possible.  This is not an error.
  1064.  
  1065.            If you comment your archives with long comments, you should take
  1066.            that into account when specifying volume size.  You should
  1067.            specify a smaller volume size during the "a" command before
  1068.            adding the comments.
  1069.  
  1070.            The "-v" switch will accept the abbreviations 360, 720, 1200,
  1071.            and 1440.
  1072.  
  1073.            The "-vv" switch turns on the next volume beep option.  When you
  1074.            select this option, ARJ will sound a beep prior to the next
  1075.            volume.  The "v" modifier must come before any other modifier.
  1076.  
  1077.            The "-va" switch sets the disk space auto-detect option.  ARJ
  1078.            will check for the disk space available on the target directory
  1079.            and try to use all or most of it.  This option is aimed at
  1080.            diskette usage.
  1081.  
  1082.            Examples:  ARJ a A:backup -b -va
  1083.                       ARJ a backup -v360
  1084.  
  1085.            The switch modifier "s" can be used to make ARJ execute one
  1086.            specified system command prior to each volume or make ARJ pause
  1087.            for manual execution of system commands.  This is useful for
  1088.            purging target diskettes before ARJ writes to them.  The "s"
  1089.            modifier must following the "a" modifier or the volume size.
  1090.            Optionally, after the "s" modifier, you can specify a system
  1091.            command or batch file name.  ARJ will automatically execute the
  1092.            command or batch file before each volume.  If the command has
  1093.            embedded blanks, then the entire switch option must be
  1094.            surrounded by double quotes.
  1095.  
  1096.            Examples:  ARJ a A:backup -vas
  1097.                       ARJ a A:backup -vvas
  1098.                       ARJ a A:backup -v360s
  1099.                       ARJ a A:backup -vv360s
  1100.                       ARJ a A:backup -vaspurge.bat
  1101.                       ARJ a A:backup -v360sdelete.bat
  1102.                       ARJ a A:backup "-vasFORMAT A:"
  1103.  
  1104.            Volume archives can be used as stand-alone archives save for the
  1105.            files that are split across volumes.
  1106.  
  1107.            It is recommended that the "-jt" (test archive) option be used
  1108.            with the "-v" switch to ensure perfectly built volumes as it is
  1109.            tedious to retest volumes after they are built.
  1110.  
  1111.            WARNING:  Updating multiple volume archives with the "-v" switch
  1112.            set is NOT recommended, especially if the new file sizes are not
  1113.            identical.
  1114.  
  1115.         w: (Upd) assign Work directory
  1116.  
  1117.            By default, ARJ builds a new ARJ archive file in the same
  1118.            directory as the old archive file.  By specifying the "-w"
  1119.            switch, you can specify the working directory where the
  1120.            temporary archive file will be built.  After the temporary
  1121.            archive file is built, it is copied over the original one and
  1122.            deleted.
  1123.  
  1124.            Normally ARJ requires enough disk space for the original archive
  1125.            and the new temporary archive.  Specifying the "-w" switch
  1126.            allows you to move some of that disk space need to another
  1127.            directory.
  1128.  
  1129.            If the copy of the temporary archive on top of the original
  1130.            archive fails, you will have to manually do the copy.  ARJ will
  1131.            not delete the temporary archive in this case.
  1132.  
  1133.            Example:  ARJ a -we:\temp\ archive *.c
  1134.  
  1135.         x: (All) Exclude filenames
  1136.  
  1137.            This switch is used to exclude filenames or wildnames from the
  1138.            list of filenames to be processed.
  1139.  
  1140.            Example:  ARJ a archive soft\*.* -r -x*.exe -x*.obj -xtest
  1141.  
  1142.            This example will archive all files in the soft directory and
  1143.            sub-directories with the exception of any files named "test"
  1144.            or ending in ".exe" and ".obj".
  1145.  
  1146.            You can also specify an exclude file list by preceding the
  1147.            filename with the "!" character.  The exclude file list must
  1148.            contain a list of filenames/wildnames one per line with no
  1149.            leading or trailing blanks.
  1150.  
  1151.            Example:  ARJ a archive soft\*.* -r -x!exclude.lst
  1152.  
  1153.            A maximum of 8000 filenames or wildnames can be excluded.
  1154.  
  1155.         y: (All) assume Yes on all queries
  1156.  
  1157.            Use this switch for batch type uses of ARJ.  This switch
  1158.            disables most of the normal user queries during ARJ execution.
  1159.            Use this switch to suppress overwrite queries in the "e" and "x"
  1160.            commands, to suppress the make new directory query in the "e"
  1161.            and "x" commands, to suppress the pause during the "s" command
  1162.            and to suppress the next volume pause using the "-v" option.
  1163.            Use this option with due caution, especially during extraction
  1164.            as this sets ARJ to overwrite files.
  1165.  
  1166.        ja: (All) show ANSI comments
  1167.  
  1168.            Display any ANSI escape sequences unaltered.  By default, escape
  1169.            characters in comments are not displayed.  In ARJ 0.20, IBM
  1170.            graphics characters will always be displayed.
  1171.  
  1172.        jc: (All) test for Console RAW mode
  1173.  
  1174.            In MS-DOS environments where the console input is RAW and not
  1175.            cooked (tested for CTL C, CTL S, etc.), ARJ may hang up the
  1176.            system at the first ARJ user prompt.  As a temporary facility,
  1177.            the "-jc" switch causes ARJ to test the STDIN device for RAW
  1178.            mode.  If the STDIN device is in RAW mode, ARJ will switch to
  1179.            using CGETS() instead of ANSI FGETS() for input.
  1180.  
  1181.            Example:  ARJ e archive -jc
  1182.  
  1183.            A convenient method of using this switch would be to include it
  1184.            in the ARJ_SW environment variable.
  1185.  
  1186.            Example:  set arj_sw=-jc
  1187.  
  1188.            If this option proves to be stable and reliable, it will become
  1189.            the default and the "-jc" option will become unnecessary.
  1190.  
  1191.        je: (Upd) create self-Extracting archive
  1192.  
  1193.            This option causes ARJ to create a self-extracting .EXE file
  1194.            instead of an .ARJ file.  This self-extractor is about 14,600
  1195.            bytes in size and supports full pathname extraction.  The
  1196.            current commands ARJSFX supports are:
  1197.  
  1198.            Usage: ARJSFX [-command] [-switch(s)] [directory\] [file(s)]
  1199.  
  1200.            Commands:
  1201.            e: Extract files (default)
  1202.            l: List contents            v: Verbosely list contents
  1203.            t: Test contents            x: eXtract files with pathname
  1204.  
  1205.            Switches:
  1206.            a: show ANSI comments       n: only New files (not exist)
  1207.            c: skip time stamp Check    p: match with Pathname
  1208.            f: Freshen existing files   u: Update files (new + newer)
  1209.            g: unGarble with password   y: assume Yes on queries
  1210.  
  1211.            NOTE!!!  ARJSFX uses the "-" character before all commands and
  1212.            switches.  This is to allow extraction of files named e, l, etc.
  1213.  
  1214.            ARJSFX does not support compression method 4.
  1215.  
  1216.            The ARJSFX module supports the ARJ-SECURITY envelope feature by
  1217.            itself.  The ARJ-SECURITY feature is only available as a
  1218.            licensed option.  It is intended as a feature for software
  1219.            developers.
  1220.  
  1221.            ARJ will create a self-extracting module without an intermediate
  1222.            archive file.
  1223.  
  1224.            Example:  ARJ a software *.* -je
  1225.  
  1226.            If you want to make a self-extracting module from an ARJ
  1227.            archive, use the freshen command with a non-existent filename
  1228.            argument such as "...".  In this case, ARJ will report the
  1229.            self-extractor created with 0 file(s).  The 0 file(s) indicate
  1230.            that no files were modified during the self-extractor creation.
  1231.  
  1232.            Example:  ARJ f software ... -je
  1233.  
  1234.        jf: (afu) store Full specified path
  1235.  
  1236.            Normally, ARJ will strip all pathnames of drive letter and root
  1237.            symbol.  This switch disables this action.  When extracting with
  1238.            the "x" command from an archive that was built with this switch,
  1239.            you should NOT use the base directory option on the command
  1240.            line.
  1241.  
  1242.        jk: (Upd) Keep temp archive on error
  1243.  
  1244.            When the "-jk" switch has been specified, ARJ will keep the
  1245.            temporary archive during an aborted archive build/update. During
  1246.            a failed build, ARJ will modify the temporary archive to make it
  1247.            useable by removing the broken portion.
  1248.  
  1249.        jp: (lv)  Pause after each screenful
  1250.  
  1251.            This switch will cause ARJ to pause after listing each screenful
  1252.            of data for the "l" and "v" commands.  Press the ENTER key to
  1253.            continue the listing.  You can also enter "quit" to exit ARJ.
  1254.  
  1255.            In one special case, "ARJ -? -jp", the use of the -jp switch
  1256.            toggles page pauses off, because by default, pausing is on.
  1257.  
  1258.        jr: (All) Recover broken archive files
  1259.  
  1260.            This switch is used to access headers and files in an archive
  1261.            that has been corrupted either with bad data or missing data.
  1262.            This switch lets ARJ find the next valid header for listing,
  1263.            extraction or testing.  ARJ will continue to look for headers
  1264.            until it finds the end of file.  At that point ARJ will print an
  1265.            error message stating that it encountered the end of file
  1266.            unexpectedly.  This is to be expected.
  1267.  
  1268.            If file header data has been corrupted, ARJ will be unable to
  1269.            recover any file data associated with that header.  If file data
  1270.            has been corrupted, ARJ will abort but not delete any extracted
  1271.            file data.  To continue recovering from such a corrupted
  1272.            archive, simple specify one filename to extract at a time or use
  1273.            the "-q" query switch to prompt for individual files.
  1274.  
  1275.            Example:  ARJ e archive -jr -q
  1276.  
  1277.        js: (afu) Store archives by suffix
  1278.  
  1279.            This switch is used to force ARJ to store and not compress files
  1280.            with the following extensions: .ARJ, .ZIP, .LZH, .PAK, .ARC.
  1281.  
  1282.            The file extensions can be specified as follows:
  1283.  
  1284.            ARJ a archive -js.zoo.ice.gif
  1285.  
  1286.            The above command will store files with extensions ending in
  1287.            .ZOO, .ICE, and .GIF.  This overrides the defaults.
  1288.  
  1289.            You can use the environment variable ARJ_SW to set up your own
  1290.            defaults as follows:
  1291.  
  1292.            set arj_sw = -js.arj.zip.lzh -js-
  1293.  
  1294.            The "-js-" turns off the option by default so that when you
  1295.            specify the "-js" switch on the command line, ARJ will already
  1296.            know what extensions that you want to store.
  1297.  
  1298.        jt: (Upd) Test temporary archive
  1299.  
  1300.            This switch causes ARJ to execute an archive integrity check on
  1301.            the intermediate temporary archive before overwriting any
  1302.            pre-existing original archive.  If any error occurs, ARJ will
  1303.            not overwrite the original archive.  When using the "-w" switch,
  1304.            ARJ will test the final archive file before deleting any files.
  1305.  
  1306.            Example:  ARJ m archive *.c -jt
  1307.  
  1308.        ju: (All) translate UNIX style paths
  1309.  
  1310.            This switch causes ARJ to translate any subsequently encountered
  1311.            pathnames to MS-DOS style from UNIX style.  This switch also
  1312.            causes translation of filenames entered as a result of ARJ
  1313.            prompts such as in comment filenames.
  1314.  
  1315.            Example:  ARJ a archive -ju /soft/*.c
  1316.  
  1317.        jv: (All) set Verbose display
  1318.  
  1319.            This switch sets ARJ to display more information during the
  1320.            "t"est, "l"ist, "v"erbose list, and "ex"tract commands.
  1321.  
  1322.            Example:  ARJ l archive -jv
  1323.  
  1324.        jx: (afu) start at eXtended position
  1325.  
  1326.            This switch is used to continue a file on another archive
  1327.            manually.  This switch is normally used when a multiple volume
  1328.            "a" command has aborted.
  1329.  
  1330.            Example:  ARJ a arjvol.a01 manual.doc -jx100000
  1331.  
  1332.            This example archives manual.doc starting from file byte
  1333.            position 100000 and on.
  1334.  
  1335.  
  1336.      ARJ_SECURITY ENVELOPE:
  1337.  
  1338.         The ARJ-SECURITY ENVELOPE feature provides a facility similar to
  1339.         other archivers.  This feature disallows any type of modification,
  1340.         even commenting, to an ARJ-SECURED archive by ARJ.  Moreover, there
  1341.         are additional internal checks to determine if the ARJ-SECURED
  1342.         archive has been modified in any way.  This feature is intended for
  1343.         use by software developers who distribute their software in
  1344.         archived format.  However, there can be no guarantee that computer
  1345.         pirates will not defeat this mechanism.
  1346.  
  1347.         In normal use, ARJ will display one of two messages when processing
  1348.         an archive with a valid ARJ-SECURITY envelope.  ARJ will either
  1349.         state that the archive MAY have a valid ARJ-SECURITY envelope or
  1350.         that the archive HAS a valid ARJ-SECURITY envelope.  ARJ can only
  1351.         be sure that the envelope is valid when the "t", "e", or "x"
  1352.         command is executed on ALL of the archived files.  In order to
  1353.         fully test the security envelope of an archive, use the "t" command
  1354.         as in "ARJ t archive".
  1355.  
  1356.         If the security envelope has been tampered with or the archive has
  1357.         suffered data corruption, ARJ will display a message stating that
  1358.         the security envelope has been violated.
  1359.  
  1360.  
  1361.      KNOWN ARJ ISSUES/PROBLEMS:
  1362.  
  1363.         When using a working directory, ARJ does not check for disk space
  1364.         before overwriting the original archive.  Be sure you have enough
  1365.         space before updating an archive using the "-w" switch.
  1366.  
  1367.         DO NOT continue to use older versions of ARJ earlier than 0.15a.
  1368.         ARJ archives that have been created with 2048 byte sized comments
  1369.         will produce unpredictable results when processed by older versions
  1370.         of ARJ.
  1371.  
  1372.  
  1373.      ARJ TECHNICAL SUPPORT:
  1374.  
  1375.         I have received many useful suggestions from users all over the
  1376.         world.  Many of those suggestions are in this version or will be
  1377.         incorporated in later versions of ARJ.
  1378.  
  1379.         I will try to resolve software problems with ARJ as they become
  1380.         known to me.  Please notify me of any ARJ problems by mail, email
  1381.         or via the ARJ support BBSes mentioned below.  Despite the fact
  1382.         that ARJ is free for non-commercial use, I will strive to make ARJ
  1383.         a robust, stable and useful product for all users.
  1384.  
  1385.  
  1386.      ARJ AVAILABILITY:
  1387.  
  1388.         The latest version of ARJ can obtained from the following sources:
  1389.  
  1390.  
  1391.         ARJ SUPPORT BBSes:
  1392.  
  1393.         Wonderland BBS, Billerica, MA, BBS (508) 663-6220
  1394.         This BBS receives ARJ directly from the author.
  1395.  
  1396.         Dimensional Crossroads BBS, Brockton, MA, BBS (508) 427-5379
  1397.         This BBS receives ARJ directly from the author.
  1398.  
  1399.         If you run a BBS and would like to support ARJ and get updates as
  1400.         soon as they are released, please contact me.  I am looking for a
  1401.         few more support sites.
  1402.  
  1403.  
  1404.         OTHER BBS ARJ SOURCES:
  1405.  
  1406.         Channel 1 BBS, Cambridge, MA, BBS (617) 354-8873
  1407.  
  1408.  
  1409.         ARJ is available from a number of other BBS's, but I can only vouch
  1410.         for the integrity of the archive if the ARJ020.EXE verifies its
  1411.         ARJ-SECURITY envelope as valid.  If no security envelope exists,
  1412.         then the data has been re-archived and there is no assurance of
  1413.         data integrity.
  1414.  
  1415.  
  1416.         If none of the above sources is suitable, you may order a copy of
  1417.         the latest version of ARJ directly from the author.
  1418.  
  1419.         Send a check or money order for five dollars (US) to cover the
  1420.         costs of shipping and handling for U.S.  delivery.  For foreign
  1421.         delivery, send ten dollars (US) to cover shipping and handling.
  1422.         Please specify diskette size (3.5 or 5.25 inch);  otherwise, a 5.25
  1423.         inch diskette will be shipped.  Please allow a few weeks for
  1424.         delivery, longer for foreign deliveries.
  1425.  
  1426.         Robert Jung, 2606 Village Road West, Norwood, Massachusetts 02062
  1427.  
  1428.  
  1429.      ACKNOWLEDGEMENTS:
  1430.  
  1431.         LHARC is the name of an archiver by Haruyazu Yoshizaki.
  1432.         PKZIP and ZIP are trademarks of PKWare, Inc.
  1433.         PAK is trademark of NoGate Consulting.
  1434.  
  1435.         I wish to express my gratitude to Haruyasu Yoshizaki (Yoshi) for
  1436.         developing LHARC and distributing its source code.  LHARC gave me
  1437.         the impetus to start studying data compression.  I also wish to
  1438.         thank Haruhiko Okumura for providing additional ideas.
  1439.  
  1440.         I wish to thank those who have helped in the development of ARJ.
  1441.         Those include Ron Freimuth, Michael Lawler, Arkady Kleyner, Joseph
  1442.         Teller, Brian Godette, and Jonathan Forbes.
  1443.  
  1444.         I wish to thank my wife, Susan, and my son, Timothy, for putting up
  1445.         with this ARJ obsession for the last few months.  Without their
  1446.         encouragement and support, ARJ would never have come to be.
  1447.  
  1448.         But my greatest thanks goes to Almighty God for His inspiration and
  1449.         great salvation.
  1450.  
  1451.  
  1452.      USAGE AND DISTRIBUTION POLICY:
  1453.  
  1454.         See LICENSE.DOC file for license policy.
  1455.  
  1456.  
  1457.      FINAL COMMENTS:
  1458.  
  1459.         I do hope that you find this program as useful as I have.  I would
  1460.         appreciate any suggestions to improve this archiver.  I do have
  1461.         another archiver called ARJX which is completely compatible with
  1462.         ARJ and provides slightly tighter compression at two to three times
  1463.         the speed using a proprietary compression algorithm.  ARJX will not
  1464.         be released until early 1991 at the earliest.  The file RESULTS.DOC
  1465.         shows the ARJX performance.
  1466.  
  1467.  
  1468.         I can be reached at:
  1469.  
  1470.         Robert Jung at the Wonderland BBS (508) 663-6220
  1471.  
  1472.         Robert Jung at the Dimensional Crossroads BBS (508) 427-5379
  1473.  
  1474.         Robert Jung at the CHANNEL 1 BBS (617) 354-8873
  1475.  
  1476.         Robert Jung in the COMPRESS (ILINK), or LHARC / COMPRESSIONS
  1477.         (SMARTNET) echo conferences.
  1478.  
  1479.         Internet address until Jan 31, 1991, rjung@s37.prime.com
  1480.  
  1481.         2606 Village Road West
  1482.         Norwood, Massachusetts 02062
  1483.  
  1484.         CompuServe userid: 72077,445  (Checked once or twice a week)
  1485.  
  1486.         Internet address:  72077.445@compuserve.com
  1487.  
  1488.  
  1489.      RECENT DATA COMPRESSION RESEARCH:
  1490.  
  1491.         The following information is explained in more detail in the book,
  1492.         TEXT COMPRESSION by Timothy Bell, John Cleary and Ian Witten
  1493.         published by Prentice Hall, 1990.  ISBN 0-13-911991-4.
  1494.  
  1495.         Three of the most useful types of data compression involve context
  1496.         modeling, Lempel-Ziv 1977, and Lempel-Ziv 1978.
  1497.  
  1498.         Context models use the preceding few characters to PREDICT
  1499.         (estimate the probability of) the next character.  For example,
  1500.         what is the next character after "tabl"?  There is a high
  1501.         probability that the character is "e".  Much of today's research is
  1502.         focused on these types of data compressors because they provide the
  1503.         best "TEXT" compression results.  The disadvantage of this family
  1504.         of compressors is the amount of memory required.  Three practical
  1505.         models require from 500,000 to 5,000,000 bytes of memory.
  1506.  
  1507.         More familiar is the Lempel-Ziv 1978 (LZ78) family of data
  1508.         compressors.  This family as well as Lempel-Ziv 1977 are classified
  1509.         as adaptive dictionary encoders.  In these methods, text strings
  1510.         are replaced by pointers to previous occurrences of duplicate
  1511.         strings.  For example, the words in this document could be
  1512.         represented by dictionary page and line numbers.  The significant
  1513.         characteristic of LZ78 algorithms is the parsing of previous text
  1514.         data into PHRASES that are stored in a dictionary.  Pointers are
  1515.         allowed to reference such phrases; however, pointers are not
  1516.         allowed to reference substrings of such phrases.
  1517.  
  1518.         Lempel-Ziv-Welch, 1984, (ARC shrinking, crushing, UNIX COMPRESS) is
  1519.         the most familiar of this family.  Numerous articles have been
  1520.         published concerning this method.  Unknown to many is the fact that
  1521.         this algorithm has a US patent number owned by UNISYS.  These
  1522.         algorithms are FAST.  Their disadvantages include the problem of
  1523.         handling a FULL dictionary when the input text data no longer
  1524.         matches the contents of the dictionary and the poor compression of
  1525.         non-text data.
  1526.  
  1527.         Lempel-Ziv 1977 (LZ77) algorithms have recently come into popular
  1528.         practical use (LHARC, PKZIP 1.10, ARJ, PAK).  In the original LZ77
  1529.         scheme, pointers are allowed to reference any phrase in a
  1530.         fixed-size window that precedes the current phrase.  A matched
  1531.         current phrase is replaced by the pointer to the previously
  1532.         occurring duplicate phrase.  This pointer in LZ77 consists of an
  1533.         offset into the window and the length of the phrase.  The original
  1534.         implementation was considered impractical as it used a brute force
  1535.         string searching method to find duplicates.  It was quite slow
  1536.         requiring up to N character comparisons in an N sized window for
  1537.         each phrase looked for.
  1538.  
  1539.         However, in 1987, Timothy Bell proposed using a binary tree to
  1540.         index into the window to speed the lookup of phrases.  This
  1541.         provided an order of magnitude speed increase.  In the same year,
  1542.         Brent published an algorithm that used a secondary compression
  1543.         method (Huffman encoding, 1952) to further encode the output of a
  1544.         LZ77 encoder.  Huffman encoding is the subsitution of variable
  1545.         bit-length codes for standard codes (8-bit ASCII) based upon
  1546.         frequency of occurrence.  The most frequent codes have the shortest
  1547.         bit-lengths.
  1548.  
  1549.         LHARC is a combination of these two ideas.  It uses a binary tree
  1550.         LZ77 encoder with dynamic Huffman encoding (1978) of the output.
  1551.         The advantage of using dynamic Huffman encoding is adaptivity to
  1552.         rapidly changing data.  The disadvantage is slow decoding.
  1553.  
  1554.         PKZIP 1.0, I believe, uses a combination of binary tree encoding
  1555.         with SHANNON-FANO (1949) static encoding.  Static SHANNON-FANO
  1556.         encoding has the advantage of fast decoding and the disadvantage of
  1557.         less optimal compression especially on rapidly changing data.
  1558.  
  1559.         PKZIP will perform better in compression than LHARC on many large
  1560.         files because PKZIP uses a larger window (8K) than LHARC (4K).
  1561.         LHARC will perform best on binary data with rapidly changing
  1562.         characteristics like executables that include a lot of text data.
  1563.  
  1564.         LH (LHarc 2.0), I believe, uses a digital TRIE LZ77 encoder with a
  1565.         static Huffman encoder.  It uses an 8K window.  LH uses a
  1566.         particularly efficient Huffman encoder which works on small data
  1567.         sets.  Many static encoders suffer from the cost of including the
  1568.         table of codes with the encoded data.  The digital TRIE has the
  1569.         advantage of always producing the most recent match unlike binary
  1570.         trees.  This recency of match is significant when secondary
  1571.         compression is used. Much of this work has been derived and
  1572.         improved upon from literature published in the last two years.
  1573.  
  1574.         ARJX improves upon LH by using a proprietary LZ77 encoder (1990)
  1575.         that is one of the fastest available for limited memory use.  This
  1576.         encoder is not derived from any published literature.
  1577.  
  1578.         It will be interesting to see if developers can significantly
  1579.         improve upon LH since it is based upon the most recent published
  1580.         research in data compression.
  1581.  
  1582.         One of the most significant new encoders published is that of Fiala
  1583.         and Greene, 1989.  This method uses pointers that point to nodes in
  1584.         the TRIE data structure as opposed to the phrases in the window.
  1585.         This bypasses the problem of redundancy of phrases in any given
  1586.         window.  Since each node is unique, fewer pointers are needed and
  1587.         thus are more easily compressed by a secondary compressor.  This
  1588.         technique is currently patent pending.
  1589.  
  1590.         I hope that this synopsis of compression research has been
  1591.         enlightening.
  1592.  
  1593.  
  1594.      End of document
  1595.  
  1596.