home *** CD-ROM | disk | FTP | other *** search
/ The Original Shareware 1992 / TheOrigSharewareV1.cdr / 25 / arj200.exe / arj / ARJ.DOC < prev    next >
Text File  |  1991-04-10  |  84KB  |  1,849 lines

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