home *** CD-ROM | disk | FTP | other *** search
/ Eagle Eye CD-ROM BBS Network / eagle-eye-cdrom-bbs-network.iso / recent / gus_170.arj / GUS.DOC < prev    next >
Text File  |  1993-04-14  |  58KB  |  1,184 lines

  1.                   ╔══════════════════════════════════════════╗
  2.                   ║       █▀▀▀▀▀▀█  █      █  █▀▀▀▀▀▀█       ║
  3.                   ║       █         █      █  █              ║
  4.                   ║       █   ▀▀██  █     ██  ▀▀▀▀▀▀██       ║
  5.                   ║       █     ██  █     ██  ▄     ██       ║
  6.                   ║       ████████  ████████  ████████       ║
  7.                   ║       ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡       ║
  8.                   ║           General Unpack Shell           ║
  9.                   ║               version 1.70               ║
  10.                   ╚══╤═════════════════════════════════════╤═╝
  11.                      │Copyright (C) 1993 by TRI-SYSTEMS co.│
  12.                      │       - ALL RIGHTS RESERVED -       │
  13.                      │     Written by Johan Zwiekhorst     │
  14.                      └─────────────────────────────────────┘
  15.  
  16.  
  17.                        T A B L E   O F   C O N T E N T S
  18.                        *********************************
  19.  
  20.       1. LEGAL STUFF
  21.          The no-nonsense licence statement
  22.          Warranty
  23.          Contact
  24.          Payment
  25.          What you should have received
  26.  
  27.       2. INTRODUCTION
  28.  
  29.       3. USAGE
  30.          3.1. General Usage under DOS
  31.               SYSTEM REQUIREMENTS
  32.               COMMAND-LINE PARAMETERS
  33.               NOTE
  34.               EXAMPLES
  35.               EXIT CODES
  36.          3.2. Unpacking Mailarchives
  37.          3.3. Identifying Archive Types
  38.  
  39.       4. BUILT-IN DEFINITIONS
  40.          4.1. Built-in Unpacker Definitions
  41.          4.2. How To Define Other Unpackers
  42.  
  43.       5. GUS & OTHER SHELLS
  44.  
  45.       6. HOW GUS IDENTIFIES ARCHIVES
  46.          6.1. Recognition patterns as used by GUS
  47.          6.2. Record layout of ARC/PAK/ARC+
  48.          6.3. How GUS identifies SFX (self-extracting) archives
  49.          6.4. Mandatory order of scanning the patterns
  50.  
  51.       7. RUNTIME MESSAGES
  52.          [A] General information messages
  53.          [B] Warning messages
  54.          [C] Fatal error messages
  55.  
  56.       8. ACKNOWLEDGEMENTS
  57.  
  58.       9. REVISION HISTORY
  59.  
  60. ═══════════════════════════════════════════════════════════════════════════════
  61.  
  62.  
  63.       ╒════════════════╕
  64.       │ 1. LEGAL STUFF │
  65.       ╘════════════════╛
  66.  
  67.       This software is copyrighted (C) 1989, 1990, 1991, 1992, 1993
  68.       by TRI-SYSTEMS co., hereafter called the Owner.
  69.       All Rights Reserved.
  70.       The software was written by Johan Zwiekhorst, hereafter called the
  71.       Author.
  72.  
  73.       The No-Nonsense Licence Statement
  74.       =================================
  75.       This software and everything enclosed with it are protected by both
  76.       Belgian copyright law and international treaty provisions.
  77.       It is called "freeware".
  78.  
  79.       FREEWARE software may be used, copied and distributed freely for
  80.       NONCOMMERCIAL use only IF:
  81.       ▀▀▀▀▀▀▀▀▀▀▀▀▀
  82.  
  83.               NO FEE IS CHARGED FOR USE, COPYING OR DISTRIBUTION.
  84.  
  85.               IT IS NOT MODIFIED IN ANY WAY.
  86.  
  87.       It may be distributed ONLY in it's original, unmodified compressed
  88.       package file.                                ~~~~~~~~~~
  89.  
  90.       This means you may not add comments to the compressed package file
  91.       (also known as an archive file or simply an archive), nor may you
  92.       delete files from or add files to the archive file, UNLESS YOU HAVE
  93.       A WRITTEN PERMISSION TO DO SO.
  94.  
  95.       Converting the archive file to another compression method or
  96.       another archive file format is allowed, provided that the above
  97.       conditions are met.
  98.  
  99.       The original package as released by me is in Robert Jung's ARJ
  100.       archive format. (See below for what you should have received.)
  101.       In order to extract the files from an ARJ archive, you will need
  102.       to get the file ARJ***.EXE, where '***' stands for the version
  103.       number of the program ARJ.  At the time this is written, the
  104.       latest version is 2.30, so look for ARJ230.EXE.
  105.       Note, that recompressing the archive will nearly always result
  106.       in a bigger archive.
  107.  
  108.       The use of FREEWARE software is prohibited in a governmental
  109.       or commercial situation. In these cases, this software must be
  110.       purchased and a Commercial Licence Statement will then be provided
  111.       for.  You may write to TRI-SYSTEMS at the address below for more
  112.       information.
  113.  
  114.       Warranty
  115.       ========
  116.       This software is provided AS IS without any warranty, expressed or
  117.       implied, including but not limited to fitness for a particular
  118.       purpose.
  119.       IN NO EVENT SHALL THE AUTHOR/OWNER OF THIS PRODUCT BE LIABLE FOR
  120.       ANY DIRECT OR CONSEQUENTIAL LOSS OR DAMAGES WHICH MAY HAVE ARISEN
  121.       FROM THE USE OF THIS PRODUCT.
  122.       If your local law does not permit any of the statements made above,
  123.       or if you do not agree with any of them yourself, THEN YOU ARE NOT
  124.       LICENCED TO USE THIS PROGRAM!
  125.  
  126.       Contact
  127.       =======
  128.       The Author can be reached via electronic mail at phone number
  129.       +32-89-762626.
  130.       This is the Tripod BBS.  Network addresses:
  131.  
  132.       Internet       jz@f118.n292.z2.fidonet.org
  133.       Compuserve     >INTERNET:jz@f118.n292.z2.fidonet.org
  134.       FIDOnet        2:292/118
  135.       SIGnet         27:332/0
  136.  
  137.       The Owner can be contacted at the following address:
  138.  
  139.       TRI-SYSTEMS co.
  140.       Langstraat 89
  141.       3630 MAASMECHELEN (Belgium)
  142.       Phone +32-89-764905 during office hours, Central European Time.
  143.  
  144.       Payment
  145.       =======
  146.       If you would like to use this product in a commercial or
  147.       governmental situation, please contact TRI-SYSTEMS at the address
  148.       above. You will then learn the price of the product and a
  149.       Commercial Licence Statement will be made available to you.
  150.  
  151.       For all others, this product is free, as mentioned before.
  152.       But if you would like to support the author and encourage him to
  153.       write more useful software, you're welcome to pay some money.
  154.       You may pay whatever you feel the product is worth to you.
  155.       Note that this kind of freeware products is developed entirely in
  156.       the author's leisure time and he receives absolutely no
  157.       compensation for it, apart from what you as a user would pay him.
  158.  
  159.       If you pay at least U.S. $15 (BEF 500, NLG 30, DEM 25), you will
  160.       receive, when available, a 5.25" or 3.5" floppy diskette with the
  161.       next version.  Please specify which.
  162.       Immediately after receiving your payment, I will send you
  163.       an acknowledgement and a list of the latest versions of all
  164.       freeware I wrote. Payments to the author can be sent in cash to the
  165.       address mentioned above or transferred to one of the following bank
  166.       accounts:
  167.       Bank Brussel Lambert (Belgium) - account number 335-0076382-89
  168.       Rabobank (Holland)             - account number 1059.19.519
  169.  
  170.       ***NOTE THAT THIS IS FOR NON-COMMERCIAL SITUATIONS ONLY!
  171.  
  172.       For all payments made: please specify NAME and VERSION NUMBER of
  173.       the product!
  174.  
  175.  
  176.       What you should have received:
  177.       ==============================
  178.  
  179.       You should have received the file
  180.  
  181.       GUS_170.ARJ - (32432 bytes)
  182.  
  183.       with the following contents:
  184.  
  185.       ┌──────────┐  ┌─────┐ ┌─────────────────────────┐
  186.       │ filename │  │bytes│ │ description             │
  187.       └══════════┘  └═════┘ └═════════════════════════┘
  188.       GUS     .DOC   58872  This documentation.
  189.       GUS     .EXE   11873  The program file.           CRC/32 = dec3b859
  190.       GUS_WCFG.PAS    6185  TP source for a program     CRC/32 = 66948e00
  191.                             that writes a new configur-
  192.                             ation into GUS.EXE.
  193.  
  194.       You may also use the program VALIDATE from McAfee Associates for
  195.       the purpose of checking the authenticity of the program file(s).
  196.       It should produce the following:
  197.  
  198.                 File Name:  gus.exe             gus_wcfg.pas
  199.                      Size:  11,873              6,185
  200.                      Date:  4-14-1993           4-14-1993
  201.       File Authentication:
  202.            Check Method 1 - 713A                5944
  203.            Check Method 2 - 1FA2                184D
  204.  
  205.  
  206.  
  207.       ╒═════════════════╕
  208.       │ 2. INTRODUCTION │
  209.       ╘═════════════════╛
  210.  
  211.       The General Unpack Shell, or GUS, identifies compressed file types
  212.       and calls the correct unpacker in order to extract the files from
  213.       them.
  214.       Its main purpose is, of course, to take work out of YOUR hands.
  215.       You can use GUS with its straight-forward and easy to remember
  216.       commands instead of having to learn a new set of commands each time
  217.       a new archiver sees the daylight.
  218.  
  219.       GUS will also work nicely in automated tasks, where any type of
  220.       archive should be uncompressed, or where a certain file has to be
  221.       added to any given archive.
  222.  
  223.       GUS was made to be command-line compatible with the ARCE.COM
  224.       unpacker program by Vernon Buerg.  This makes it possible for you
  225.       to rename GUS.EXE to ARCE.COM and have it invoked by any program
  226.       that expects both ARCE and SEA's ARC-type compressed files, so that
  227.       such a program will in fact work with any archive format YOU
  228.       choose. Ben Baker's MAKENL is but one example of such a program.
  229.  
  230.       GUS does not require you to fiddle with cumbersome and difficult
  231.       configuration files: it's just a single EXE file.  You copy it into
  232.       your favourite utility directory and you can immediately start
  233.       using it, no hassles at all.
  234.  
  235.  
  236.       ╒══════════╕
  237.       │ 3. USAGE │
  238.       ╘══════════╛
  239.  
  240.       GUS assumes you have located all archiver programs it has to invoke
  241.       somewhere in your system PATH.
  242.       GUS is small and it will only occupy about 21K while shelling out
  243.       to other programs, which should leave more than enough memory for
  244.       those archiver programs.
  245.  
  246.       3.1. General Usage under DOS
  247.       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  248.       SYSTEM REQUIREMENTS:
  249.       --------------------
  250.       GUS will run on any IBM PC compatible computer running DOS 3.0 or
  251.       greater, provided that at least 25K plus the memory the largest
  252.       archiver program to invoke would need is available.
  253.  
  254.       COMMAND-LINE PARAMETERS:
  255.       ------------------------
  256.       As said before, GUS is command-line compatible with ARCE.
  257.       Hence, the general syntax is:
  258.  
  259.       GUS «compressed_filespec» [filespec(s)] [target_path] [switch(es)]
  260.  
  261.       (Entries enclosed within [] are optional, those within « » are
  262.       mandatory.  The [] and « » signs serve to indicate this only and
  263.       should never be typed!)
  264.  
  265.       «compressed_filespec»  ::=  this specifies where to find the
  266.                                   compressed file.  If an extension
  267.                                   is not given, GUS will assume '.*'.
  268.                                   Currently, the following archive types
  269.                                   are supported: ARC and ARC+, ARJ, DWC,
  270.                                   HA, HAP, HPK, HYP, LZH (both LHarc and LHA),
  271.                                   PAK, SQZ, ZIP and ZOO.
  272.  
  273.       [filespec(s)]          ::=  specifies which files should be
  274.                                   unpacked. You may give more than one
  275.                                   file specification, all of which may
  276.                                   contain wild cards.
  277.  
  278.       [target_path]          ::=  specifies where to locate the unpacked
  279.                                   files.  In order to allow GUS to be as
  280.                                   flexible as possible, the ordering of
  281.                                   the file specifications and the target
  282.                                   path is not important.  You may define
  283.                                   the target path first and then the
  284.                                   files to be extracted.  It is even
  285.                                   allowed to put the target path in the
  286.                                   middle of a number of specifications of
  287.                                   files to extract!  If you give more
  288.                                   than one directory, GUS will ignore all
  289.                                   but the last.
  290.  
  291.       [switch(es)]           ::=  specifies one or more of the following
  292.                                   switches...
  293.          /D     :  Delete archive after successful unpacking
  294.          /I     :  Identify only, don't shell out (see 3.3 below)
  295.          /M     :  unpack Mailarchives only (see 3.2 below)
  296.          /N     :  do Not use embedded path while extracting
  297.                    (for the sake of compatibility with ARCE, /5 may also be
  298.                    used)
  299.          /P     :  Print file(s) on standard output device
  300.          /Q     :  Quiet mode, suppresses shell output
  301.          /R     :  Replace existing files
  302.          /T     :  Test archive integrity
  303.          /Gpswd :  supply password 'pswd' for Garbled archive
  304.  
  305.       All parameters have to separated by at least one blank.  Switches
  306.       may be joined together without spaces, but the '/' character must
  307.       be present for each switch.  GUS does not support the dash '-'
  308.       instead of the slash '/'.
  309.       Options may be given in no matter what case. Only the Delete option
  310.       _has_ to be in uppercase for safety reasons.
  311.  
  312.       NOTE:
  313.       -----
  314.       Consistent with ARCE's behaviour, GUS will create any directories
  315.       contained within an archive if they do not exist.  Both ARCE and GUS
  316.       have a commandline switch with which you can prevent this and have
  317.       them extract to the current directory.
  318.       If you are using the /M (mail archive) switch however, use of the
  319.       /N (No embedded paths) switch is automatically assumed and unpacking
  320.       will always be done in the current directory.
  321.       With /M, the option /D (Delete archive after successful unpacking) is
  322.       also automatically selected.
  323.       The /N switch is equally automatically invoked with /P (print) and /T
  324.       (test).
  325.  
  326.       EXAMPLES:
  327.       ---------
  328.       1) Extract all files from an archive CFILE.ANY:
  329.          > GUS CFILE.ANY
  330.  
  331.       2) Extract all *.COM and *.EXE files from an archive UTILS.ANY
  332.          into a target directory D:\Utils and replace all existing ones:
  333.          > GUS UTILS.ANY *.COM *.EXE D:\UTILS /R/N
  334.  
  335.       3) A batchfile LA.BAT which will list any text file inside any
  336.          archive:
  337.          LA.BAT: @echo off
  338.                  GUS %1 %2 %3 %4 %5 %6 %7 %8 %9 /P|LIST/S
  339.  
  340.          Then you can use this like:   LA KBUI_200 *.DOC
  341.  
  342.       4) Test the integrity of all archives in the directory F:\Arcs
  343.          > GUS F:\ARCS\* /T
  344.  
  345.       5) Unpack all ZIPfiles PW*.ZIP protected with password JiMmY into
  346.          the directory D:\PWS, not replacing any existing files and using
  347.          any embedded paths:
  348.          > GUS PW*.ZIP D:\PWS /GJiMmY
  349.  
  350.       EXIT CODES:
  351.       -----------
  352.       GUS will yield an errorlevel of 0 if all operations succeeded.
  353.       If something's wrong, it will pass on the errorlevel returned by
  354.       the child program invoked.
  355.       If the child program could not be started, GUS will return
  356.       errorlevel 202 = no such program file found in PATH
  357.                  203 = non-existing directory
  358.                  204 = too many open files (increase FILES=... parameter
  359.                        in your CONFIG.SYS file)
  360.                  205 = access denied
  361.                  206 = invalid handle
  362.                  208 = not enough memory to start the child program
  363.                  210 = invalid environment
  364.                  211 = invalid format
  365.                  218 = no more files
  366.       Note, that GUS will not be able to handle a PATH of more than 255
  367.       characters properly.
  368.  
  369.       3.2. Unpacking Mailarchives
  370.       ~~~~~~~~~~~~~~~~~~~~~~~~~~~
  371.       If you are a BBS SysOp or a Point connected to a Fidonet Technology
  372.       compatible electronic mail network, you receive mail packets
  373.       compressed and bundled within mailarchives.  You obviously need to
  374.       unpack those mailarchives.
  375.       You can do that in two ways:
  376.  
  377.       a) Have your mailprocessor call GUS to unpack the mailarchives.
  378.  
  379.        + If your mailprocessor allows you to specify which unpacker it
  380.          should invoke to decompress mailarchives, have it call GUS.
  381.          Example for ConfMail:
  382.          > CM IMPORT AREAS.BBS -K -N -F Conf.Imp -A GUS
  383.          This approach has the disadvantage that GUS will create any
  384.          directories embedded in the archive, should they not exist.
  385.          Another disadvantage is, that the mailprocessor is still in memory.
  386.          This occupies a lot more memory than is necessary.
  387.  
  388.        + If your mailprocessor does not allow you to specify which
  389.          unpacker to use, it will most likely expect ARCE or PKXARC/
  390.          PKUNPAK.  Rename GUS.EXE to ARCE.COM or PKXARC.EXE or
  391.          PKUNPAK.EXE, whatever your mailprocessor wants.
  392.          If your mailprocessor wants to use an unpacker that needs a
  393.          specific decompress command (like PAK E Archive), you cannot
  394.          have it call GUS, since GUS would interpret its first
  395.          command-line argument as the archive name.
  396.          Use the method described in item b) to have GUS unpack your
  397.          mailarchives BEFORE your mailprocessor is started.  Since your
  398.          mailprocessor will only see mail packets then and no
  399.          mailarchives, there will be no problem.
  400.  
  401.       b) Have GUS unpack all mailarchives BEFORE you invoke your
  402.          mailprocessor. This is the preferred method.
  403.          You this by starting GUS with the following command-line:
  404.  
  405.          GUS «Inbound_directory» /M
  406.  
  407.          Instead of the archive name, you specify the path to the
  408.          directory where your inbound mail is located.
  409.          Suppose your inbound directory is D:\Opus\NetFiles.  GUS will
  410.          unpack all mailarchives in that directory with the following
  411.          command:
  412.          > GUS D:\OPUS\NETFILES /M
  413.  
  414.          After a mailarchive has been unpacked succesfully, GUS will
  415.          delete it automatically.
  416.          If a mailarchive cannot be unpacked succesfully, then GUS will
  417.          create a subdirectory BADARC.GUS in your inbound directory and
  418.          move that mailarchive to it.  This allows you to inspect the
  419.          problematic mailarchives later on while retaining their original
  420.          name.  Other unpack shells always rename a faulty archive to
  421.          BADARC.001, which makes it very difficult if you would like to
  422.          restore the archive to its original name after you have
  423.          inspected and maybe repaired it.  I didn't like that procedure,
  424.          so I decided to let GUS move problematic archives to a special
  425.          subdirectory instead.  Let me know how you feel.
  426.  
  427.       3.3. Identifying Archive Types
  428.       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  429.       With the /I switch, you can have GUS simply report which archive
  430.       type is at hand and do nothing else.
  431.       This switch can be used just to get a list of archive types, like
  432.       this:
  433.       > GUS J:\Outbound\*.MO? /I
  434.  
  435.       Type Archive Filename
  436.       ---- ----------------
  437.       LZH  J:\OUTBOUND\0009FE64.MO1
  438.       ???  J:\OUTBOUND\8FDCB1E2.MO1
  439.       ZIP  J:\OUTBOUND\8FDCB243.MO0
  440.       ARJ  J:\OUTBOUND\FF24FFE9.MO0
  441.       LZH  J:\OUTBOUND\8FDCB241.MO0
  442.  
  443.       GUS yields something like the above list.  The '???' means that GUS
  444.       was unable to determine the archive type, possibly because it isn't
  445.       an archive at all.  In this case, it was a zero-length file.
  446.  
  447.       A much more useful way of using this switch is to determine the
  448.       type of just one archive and act upon that.  For instance, to add a
  449.       file to any archive that comes along.
  450.       If used with /I, GUS will return an errorlevel from 0 to 13,
  451.       indicating the archive type.
  452.  
  453.       Archive Type: Unknown ARC ARC+ ARJ DWC HA HAP HPK HYP LZH PAK SQZ ZIP ZOO
  454.       Errorlevel  :    0     1   2    3   4   5  6   7   8   9   10  11  12  13
  455.  
  456.       Example: suppose you want to add a header text LOGO.TXT to ZIP and
  457.       ARJ files, and leave other archive types alone.
  458.       These batchfile instructions will take care of that:
  459.  
  460.         GUS %1 /I
  461.         if not errorlevel 13 if errorlevel 12 goto IsZIP
  462.         if not errorlevel  4 if errorlevel  3 goto IsARJ
  463.         goto Finish
  464.       :IsZIP
  465.         PKZIP -z %1 <LOGO.TXT
  466.         goto Finish
  467.       :IsARJ
  468.         ARJ c -zLOGO.TXT %1
  469.       :Finish
  470.  
  471.       Please be advised that the errorlevel codes assigned to each archive
  472.       type may change! If a new archive type is added to GUS, its extension
  473.       will be merged into the list shown above so that the order of the
  474.       extensions is alphabetical. If you don't like this and would rather see
  475.       new types simply be added to the end of the list, let me know. I will
  476.       comply with your wishes if enough people feel like that.
  477.       At this time, I like to have an alphabetical list and so do most of the
  478.       people I asked about this.
  479.  
  480.  
  481.       ╒═════════════════════════╕
  482.       │ 4. BUILT-IN DEFINITIONS │
  483.       ╘═════════════════════════╛
  484.  
  485.       4.1. Built-In Unpacker Definitions
  486.       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  487.       The following unpackers are defined by default within GUS.EXE:
  488.  
  489.       ╔════╤════════════╤═══════╤═══════╤═══════╤═════╤═════╤════════╗
  490.       ║Type│Program     │Extract│Replace│Display│Test │Path │Password║
  491.       ╟────┼────────────┼───────┼───────┼───────┼─────┼─────┼────────╢
  492.       ║ARC │PKUNPAK .EXE│-n     │-r     │-c     │-t   │*****│g       ║
  493.       ║A7+ │XARC    .EXE│       │/o     │*****  │*****│*****│/g      ║
  494.       ║ARJ │ARJ     .EXE│e -uy  │e -y   │p      │t    │<x   │─g      ║
  495.       ║DWC │DWC     .EXE│xow    │xw     │p      │t    │r    │g       ║
  496.       ║HA  │HA      .EXE│et     │ety    │*****  │t    │<x   │*****   ║
  497.       ║HAP │PAH     .EXE│e      │e      │*****  │**** │*****│*****   ║
  498.       ║HPK │HPACK   .EXE│x -on-r│x -oa-r│p -r   │t -r │-p   │-c      ║
  499.       ║HYP │HYPER   .EXE│-x     │-xo    │*****  │*****│p    │*****   ║
  500.       ║LZH │LHA     .EXE│e /m+  │e /m+c+│p /m+  │t /m+│x+   │*****   ║
  501.       ║PAK │PAK     .EXE│e/WO   │e/WA   │p      │t    │/PATH│/g=     ║
  502.       ║SQZ │SQZ     .EXE│e /o0  │e /o1  │p      │t    │<x   │*****   ║
  503.       ║ZIP │PKUNZIP .EXE│-n     │-o     │-c     │-t   │-d   │-s      ║
  504.       ║ZOO │ZOO     .EXE│e:O    │e:OS   │e:p    │e:N  │//   │*****   ║
  505.       ╟────┼────────────┼───────┼───────┼───────┼─────┼─────┼────────╢
  506.       ║ 3  │    12      │  10   │  10   │  10   │ 10  │  5  │   5    ║
  507.       ╚════╧════════════╧═══════╧═══════╧═══════╧═════╧═════╧════════╝
  508.       The numbers above indicate the number of characters provided for
  509.       each string.
  510.  
  511.       Note that Extract, Replace, Display and Test are COMMANDS, while
  512.       Path and Password are OPTIONS.  The difference is, that an OPTION
  513.       is always combined with a COMMAND and cannot be used alone.
  514.       If the first character of the Path option is a `<', however, it means
  515.       that the second character should be used to replace the first command
  516.       string character. This is currently only the case with ARJ, HA and SQZ,
  517.       who all need the `e' command to be replaced with `x' in order to
  518.       extract files while using embedded path information.
  519.  
  520.       All spaces means that that particular program does not need any
  521.       parameters for that particular command.
  522.  
  523.       All stars means that that particular program does not support that
  524.       command or that option.
  525.  
  526.       ATTENTION! When encountering an ARC sfx made by SEA's MKSARC program,
  527.       GUS will identify it correctly, but PKUNPAK can't handle this sfx and
  528.       will therefore exit with an error. If you expect to handle a lot of
  529.       MKSARC sfx files, then you'd better replace PKUNPAK by ARC 6.02 in GUS'
  530.       configuration segment.
  531.  
  532.       You may want to redefine some of those built-in definitions for
  533.       various reasons. To use another unpacker program, for instance.
  534.       Or to change some parameters.
  535.  
  536.       4.2. How To Define Other Unpackers
  537.       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  538.       There are two ways to modify the built-in definitions.
  539.  
  540.       You can grab a hex editor and change GUS.EXE directly. If you do,
  541.       please take note of the lengths of the strings as listed above in
  542.       section 4.1. All strings occupy the specified number of characters.
  543.       To achieve that, they were padded with spaces where necessary. If you
  544.       edit them, make sure you retain the number of characters and do NOT
  545.       change the funny looking character at the start of each string
  546.       (that's in fact the string length indicator byte). If a particular
  547.       parameter is not supported by a certain unpacker program, then you
  548.       should edit the appropriate field to contain all stars.
  549.  
  550.       If you own a Turbo Pascal compiler v5.0 or later from Borland
  551.       International, you can edit the file GUS_WCG.PAS and re-compile it.
  552.       This small program will update the configuration information at the
  553.       end of GUS.EXE for you. Do *NOT* modify the record layout of that
  554.       information, since GUS will not recognize it anymore if you do.
  555.  
  556.       Future versions of GUS may come with a complete setup program to
  557.       edit and save a new configuration.
  558.  
  559.  
  560.       ╒═══════════════════════╕
  561.       │ 5. GUS & OTHER SHELLS │
  562.       ╘═══════════════════════╛
  563.  
  564.       Since GUS was first created, other authors have joined the club and
  565.       released their own versions of a utility that identifies archive
  566.       types and shells out to the appropriate unpacker programs.
  567.  
  568.       Some of those other shell programs come with source, others don't.
  569.       Some have configuration files, others don't.
  570.       Some are large, others small.
  571.       Only one is GUS and all the others "ain't"! :-)
  572.  
  573.       Why should you use GUS?
  574.  
  575.       1. GUS is small and fast. Other shell programs typically use a lot
  576.          more memory than GUS does.
  577.       2. GUS provides you with all possible commands to allow not only
  578.          automatic use, but also easy DOS command-line usage.
  579.       3. While scanning a file to determine the archive type, the
  580.          identification bytes have to be investigated in a well-defined
  581.          order. Only then, the program will not be fooled by things like
  582.          archives within archives.
  583.          GUS is the only program that does this flawlessly: it will never
  584.          be fooled.
  585.       4. GUS has built-in code especially designed for archives that have
  586.          their identification code at the end of the file.  If such an
  587.          archive has been transmitted by means of a protocol like
  588.          X-modem, some junk may have been appended to the file to make it
  589.          grow to the next 128 byte or even 1 K-byte boundary!
  590.          GUS is the *only* program that will recognize an archive with
  591.          appended junk because it can skip that while scanning.
  592.          (At this time, this is only needed for DWC archives, but you
  593.          never know...)
  594.       5. The HAP&PAH, HPack and DWC archivers require their compressed files
  595.          to have the respective extension '.HAP', 'HPK' and '.DWC' or else
  596.          they won't work with them. GUS knows this and will rename any such
  597.          archive that does not have the proper extension before calling
  598.          the dearchiver program and rename it back to the original name
  599.          afterwards.
  600.       6. Because *I* wrote it! <grin>
  601.  
  602.  
  603.       ╒════════════════════════════════╕
  604.       │ 6. HOW GUS IDENTIFIES ARCHIVES │
  605.       ╘════════════════════════════════╛
  606.  
  607.       GUS recognizes archives by searching for well-defined patterns in the
  608.       archive file. Such a pattern can be from 1 to 5 bytes in length and
  609.       it is extremely important that they be checked in the PROPER ORDER!
  610.       That is what distinguishes GUS from all it's competitors: most
  611.       programs do search for the right patterns (with the exception of the
  612.       pattern for ZOO, which is almost always wrong), but don't do this in
  613.       the proper order. That can result in faulty identifications,
  614.       specifically when encoutering archives within archives.
  615.  
  616.       6.1. Recognition patterns as used by GUS
  617.       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  618.       ArcType Offset  Pattern         Comment
  619.       ------- ------  ------------    -------------------------------
  620.       ARC     0       0x1A
  621.       ARC+    0       0x1A            Method byte (offset 1) of all
  622.       PAK                             entries needs to be scanned: if
  623.       HYP                             >= 0x0A then PAK;
  624.                                       >= 0x48 then HYP;
  625.                                       == 0x14 then ARC+
  626.                                       Note: PAK can also be recognized
  627.                                       by locating the byte 0xFE at offset
  628.                                       EOF-2, but GUS doesn't use that
  629.                                       because it is less accurate than
  630.                                       scanning the method bytes, which
  631.                                       has to be done anyway for identi-
  632.                                       fying ARC+ and HYP.
  633.                                       For completeness, the record layout
  634.                                       of an ARC archive will be given in
  635.                                       item 2.
  636.       ARJ     0       0x60 0xEA
  637.       HA      0       'HA'            Offset 4 binary ANDed with 0xFC should
  638.                                       yield 0x20. This is an additional check.
  639.       DWC     -3      'DWC'           Offset -3 means the third LAST byte
  640.                                       of the archive file.
  641.                                       It is possible that some junk is
  642.                                       present at the end of an archive,
  643.                                       because of Xmodem transmissions for
  644.                                       example.
  645.                                       In order to avoid GUS not
  646.                                       recognizing the archive because of
  647.                                       this, the last 1028 bytes (or 343
  648.                                       triplets) are read into a buffer
  649.                                       and if that contains the string
  650.                                       'DWC', then we have a DWC archive.
  651.                                       An additional check will be done,
  652.                                       however. The `DWC' string will have
  653.                                       to be the last item in a 27 byte
  654.                                       structure of which the first two
  655.                                       items are ArcStrucSize=27 (2 bytes)
  656.                                       and DirStrucSize=34 (1 byte) before
  657.                                       GUS will accept the file to be a DWC
  658.                                       archive.
  659.       LZH     2       '-l??-'         The '?' specifies a wildcard
  660.                                       character.
  661.       HAP     0       0x91 '3HF'
  662.       HPK     0       'HPAK'
  663.       ZIP     0       'PK' 0x03 0x04
  664.       ZOO     20      0xDC 0xA7 0xC4 0xFD
  665.                                       Most other programs search for the
  666.                                       string 'ZOO' at the front of the
  667.                                       archive, but that is wrong! Only
  668.                                       the ZOO archives made using MS-DOS
  669.                                       would be recognized this way. ZOO
  670.                                       archives made by an Amiga or a
  671.                                       computer running Unix would not be
  672.                                       necessarily be recognized this way.
  673.       SQZ     0       'HLSQZ'
  674.  
  675.       6.2. Record layout of ARC/ARC+/PAK
  676.       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  677.       var
  678.           ArcHeader : record
  679.                         Marker: Byte;
  680.                         Method: Byte;
  681.                         Name  : array [1..13] of char;
  682.                         Size  : DWord;
  683.                         Stamp : DWord;
  684.                         CRC   : Word;
  685.                         Length: DWord;
  686.                       end;
  687.  
  688.       Procedure to scan all archive entries:
  689.  
  690.       |begin
  691.       | seek(F,0);
  692.       | notOK:=false;
  693.       | YieldARC:=ARC;
  694.       | repeat
  695.       |   {$I-}
  696.       |   blockread(F,ArcHeader,sizeof(ArcHeader));
  697.       |   {$I+}
  698.       |   if IOresult=0
  699.       |    then begin
  700.       |          if ArcHeader.Method>=PAKid
  701.       |           then begin
  702.       |                 notOK:=true;
  703.       |                 YieldARC:=PAK;
  704.       |                 if ArcHeader.Method>=HYPid
  705.       |                  then YieldARC:=HYP
  706.       |                  else if ArcHeader.Method=ARPid
  707.       |                        then YieldARC:=ARP
  708.       |                end
  709.       |           else MoveFilePtr(F,ArcHeader.Size);
  710.       |         end
  711.       |    else notOK:=true
  712.       | until notOK
  713.       |end;
  714.  
  715.       This is of course all in Turbo Pascal, the language in which GUS was
  716.       written. The above are in fact literal excerpts from GUS's source
  717.       code.
  718.  
  719.       6.3. How GUS identifies SFX (self-extracting) archives
  720.       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  721.       The basic principle is simple. A self-extracting archive consists of an
  722.       extraction program in EXE form followed by the archive itself as
  723.       appended data.
  724.       The header of an EXE file contains information to determine the size of
  725.       the EXE portion of the file and hence the offset where the appended data
  726.       starts.
  727.       This proved to be true for all archive types, except for SFXs made by
  728.       MKSARC, the ZIP/sfx as used in PKLTE115.EXE and the ZIP/sfx for OS/2.
  729.       GUS has those offset values hardcoded.
  730.  
  731.       6.4. Mandatory order for scanning the patterns
  732.       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  733.               1 - SQZ
  734.               2 - ZIP
  735.               3 - HPK
  736.               4 - HAP
  737.               5 - ZOO
  738.               6 - LZH
  739.               7 - HA
  740.               8 - ARJ
  741.               9 - DWC
  742.              10 - ARC/PAK/ARC+/HYP
  743.  
  744.       This order is mandatory because it guarantees the greatest chance for
  745.       a correct recognition.
  746.       Every other order would enlarge the chance for a faulty result.
  747.       This is also the reason why the archive specifications are still
  748.       built into GUS and not given in a seperate configuration file (like
  749.       PolyXarc, for example): I still haven't found a good method to have
  750.       GUS determine automatically in which order the patterns have to be
  751.       scanned, if a possibility exists that new patterns would be added to
  752.       the list. I can't expect the users to include new patterns in the
  753.       proper order themselves, can I?
  754.       Therefore, I don't think providing GUS with a CFG file is very
  755.       important at this time. I see no problem for providing a new GUS when
  756.       a new and exciting archiver is released.
  757.  
  758.       That's it folks! If you're curious: the TP source for GUS is about
  759.       870 lines in length. Those lines are `filled' in the same way as
  760.       those of the procedure quoted above.
  761.  
  762.       NOTE: you may use the scanning and identification method as used by
  763.       GUS and as described above in your own programs, but please be so kind
  764.       and don't forget the reference indicating where you got the information!
  765.  
  766.  
  767.       ╒═════════════════════╕
  768.       │ 7. RUNTIME MESSAGES │
  769.       ╘═════════════════════╛
  770.  
  771.       GUS may produce a number of messages while it's working.
  772.       I will list all messages below, with an explanation what's wrong.
  773.  
  774.       [A] General information messages
  775.       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  776.       MESSAGE: Child program returns exit code #
  777.       -> this message is given when the invoked unpacker program returns
  778.          control to GUS.  It shows the errorlevel returned by the
  779.          unpacker program.  The "#" will be replaced by the actual
  780.          exit code.
  781.  
  782.       [CHILD]: «unpacker_commandline»
  783.       -> this is shown in Quiet mode (/Q switch) instead of the
  784.          archiver's screen output.  The «unpacker_commandline» will be
  785.          replaced by just that.
  786.  
  787.       Extract: ALL files (XARC cannot extract specific files)
  788.       -> this message is shown when the first four characters of the
  789.          unpacker program definition string are "XARC".  Any files to
  790.          extract specified on the command-line will be ignored.
  791.  
  792.  
  793.       [B] Warning messages
  794.       ~~~~~~~~~~~~~~~~~~~~
  795.       WARNING: multiple target directories defined -- will use the LAST one!
  796.       -> you have defined more than one target path on the command-line.
  797.          GUS warns you that it will ignore all paths but the last.
  798.  
  799.       WARNING: you need to use /D (capital!) to have the unpacked archive
  800.                deleted.
  801.       -> you have specified "/d" in lower case. For security reasons, GUS
  802.          will only accept a capital D for the Delete switch.
  803.  
  804.       WARNING: unknown switch /X ignored
  805.       -> you have specified a switch that GUS doesn't know.  In the above
  806.          warning message, the "X" will be replaced by the actual
  807.          character (converted to upper case) that you used.
  808.          GUS will continue but ignores this unknown switch.
  809.  
  810.       WARNING: a slash by itself is not a valid option -- ignored
  811.       -> you have typed a slash "/" followed by a space or an end-of-line.
  812.          GUS will continue and ignore this.
  813.  
  814.       WARNING: unknown parameter #9 «X» ignored
  815.       -> you have typed something on the command-line that GUS can't
  816.          decipher.  The actual word you typed will be inserted instead of
  817.          "X" in the above message, and the number of that parameter on
  818.          the commandline will be shown instead of the "9" above.
  819.  
  820.       WARNING: unable to determine archive type due to error
  821.                while opening file
  822.       -> for some reason, GUS can't open the file it has to investigate.
  823.          Bummer! GUS will simply skip it and continue with the next one, if
  824.          any.
  825.  
  826.       WARNING: can't open NUL device -- Quiet command ignored
  827.       -> this occurs most often if the /Q (Quiet) command is used and when
  828.          one or more TSRs were loaded with their output redirected to NUL.
  829.          This yields a DOS sharing violation error, hence this message from
  830.          GUS.
  831.  
  832.       WARNING: moving bad archive HHHHHHHH.XX9 to X:\Inbound\BADARC.GUS\
  833.       -> in mail unpack mode (/M switch), GUS was unable to unpack an
  834.          archive and warns you that it will be moved to the BADARC.GUS
  835.          subdirectory that GUS creates in the mail inbound directory.
  836.          The actual name of the bad archive will be inserted in the
  837.          message instead of "HHHHHHHH.XX9" and "X:\Inbound" will be
  838.          replaced by the path to your mail inbound directory.
  839.  
  840.       WARNING: unsupported command -- will do normal extract instead
  841.       -> you tried to perform an action not supported by the particular
  842.          archiver defined within GUS (i.e., issue a /T [test] command
  843.          with the HYPER archiver program).
  844.          GUS warns you it will ignore that command and do a normal
  845.          extract instead.
  846.  
  847.       WARNING: XXX type cannot be unpacked into embedded directories!
  848.       -> the unpacker program has no option to enable using embedded
  849.          directories or creating them, so all unpacking will be done
  850.          into the current directory, since that is the only way.
  851.  
  852.       WARNING: XXX type cannot be garbled - ignoring password...
  853.       -> you supplied an extraction password for an archive whose
  854.          unpacker program does not support password-protection.
  855.          GUS will continue the command while ignoring the /G switch.
  856.          The "XXX" will be replaced by the actual archive type detected.
  857.  
  858.       [C] Fatal error messages
  859.       ~~~~~~~~~~~~~~~~~~~~~~~~
  860.       >ERROR<: cannot read configuration information!
  861.       MESSAGE: aborting with exit code 255...
  862.       -> GUS complains it can't find the configuration information at the
  863.          back of it's EXE file.  This means something is terribly wrong
  864.          with that EXE file.  You better delete it and get the original
  865.          release archive unpacked again!  (You *did* save that one,
  866.          didn't you?)
  867.  
  868.       >ERROR<: cannot create new filename for rename or move!
  869.       -> while trying to rename (like when an archiver need a fixed
  870.          extension) or move (like when a mailarchive couldn't be unpacked)
  871.          a file, GUS increments the filename (in case of a fixed extension)
  872.          or the extension (in case of a bad mailarchive) when it at first
  873.          doesn't succeed with the rename or move. If the filename or
  874.          extension cannot be incremented anymore and no other options are
  875.          left, GUS issues the above error message.
  876.  
  877.       >ERROR<: cannot erase unpacked archive!
  878.       -> in mail unpack mode (/M switch) or if the Delete option (/D switch)
  879.          was used, GUS is unable to delete the archive after it has been
  880.          unpacked successfully.
  881.          This more than likely means that the archive was marked
  882.          Read/Only.  You will have to unlock and delete it manually.
  883.          As mailarchives are created fresh upon receipt, it is very
  884.          unlikely that they would be marked R/O.
  885.  
  886.       >ERROR<: can't rename fixed extension back to original, leaving as is...
  887.       -> GUS had to rename an archive to a name with the fixed extension
  888.          required by archivers like DWC, HAP or HPACK and now it can't rename
  889.          the file back to the original name. This can normally only happen
  890.          in a multitasking environment, for instance when the archive file
  891.          was renamed, moved or deleted before GUS could rename it back.
  892.          GUS issues this error message and leaves the file as it was.
  893.  
  894.       >ERROR<: DOS couldn't execute «XXX» due to: YYY
  895.       -> GUS was unable to load and execute the unpacker program.
  896.          The path and name of that unpacker will be inserted in the error
  897.          message instead of "XXX" and the reason will be shown instead of
  898.          "YYY".  That reason will be one of 9 possible problems
  899.          described in section 3.1. General Usage under DOS, EXIT CODES.
  900.          If the error code returned by DOS should be unknown to GUS, it
  901.          will display "DOS ERROR" followed by the error number instead.
  902.  
  903.       >ERROR<: error locating directory XXX
  904.                will unpack in current directory.
  905.       -> You specified a target directory GUS was unable to find.  The
  906.          target path specification will be ignored and the unpacking will
  907.          be done in the current directory.
  908.  
  909.       >ERROR<: «XXX» is no archive file or a type unkown to GUS!
  910.       -> GUS encountered a file that is not one of the known archive
  911.          types.  GUS will continue with the next file, if there is one.
  912.          "XXX" will be replaced by the actual archive name.
  913.  
  914.       >ERROR<: no such file(s)!
  915.       -> GUS was started with an archive filename specification, but no
  916.          such file could be found.  GUS will abort with errorlevel 1.
  917.  
  918.       >ERROR<: no such mail directory!
  919.       -> you specified a mail inbound directory (/M switch) that GUS was
  920.          unable to locate.  GUS will end with errorlevel 0.
  921.  
  922.  
  923.       ╒═════════════════════╕
  924.       │ 8. ACKNOWLEDGEMENTS │
  925.       ╘═════════════════════╛
  926.  
  927.     + PKUNPAK  FAST!  Archive Extract Utility  Version 3.61  08-02-88
  928.       Copyright (c) 1986-1988 PKWARE Inc. All Rights Reserved.
  929.  
  930.     + PKUNZIP (R)    FAST!    Extract Utility    Version 2.04g  02-01-93
  931.       Copr. 1989-1993 PKWARE Inc. All Rights Reserved. Shareware Version
  932.       PKUNZIP Reg. U.S. Pat. and Tm. Off.
  933.  
  934.     + XARC - to decompress a standard ARC Format Archive, Ver 7.1,
  935.       October, 1990
  936.       Copyright 1990 by System Enhancement Associates, Inc.;
  937.       ALL RIGHTS RESERVED
  938.  
  939.     + ARJ 2.39d PRE-RELEASE Copyright (c) 1990-93 Robert K Jung. Mar 06 1993
  940.       All Rights Reserved.  U.S. Patent No. 5,140,321 and patent pending.
  941.  
  942.     + DWC - Archive utility, Release 5.10, Created 3/07/90
  943.       (C) Copyright 1986-90 by Dean W. Cooper; All rights reserved.
  944.  
  945.     + HA 0.98 Copyright (c) 1993 Harri Hirvola
  946.  
  947.     + Hamarsoft (R) Hap&Pah TM 3.00
  948.       Copyright (C) 1992 By Harald Feldmann.
  949.       Publicly Distributed evaluation copy.
  950.  
  951.     + HPACK - The multi-system archiver Version 0.78a0 (shareware version)
  952.       For Amiga, Archimedes, Macintosh, MSDOS, OS/2, and UNIX
  953.       Copyright (c) Peter Gutmann 1989 - 1992.  Release date: 1 Sept 1992
  954.  
  955.     + Hyper - Pack Utility 2.5
  956.       Copyright (c) 1989,1990 P. Sawatzki and K.P. Nischke
  957.  
  958.     + LHA version 2.55b   Copyright (c) Haruyasu Yoshizaki, 1988-92
  959.  
  960.     + Pak 2.51 Copyright 1988-90 NoGate Consulting
  961.  
  962.     + SQZ -- Squeeze It(1.08.3), Jan 24 1993, Copyright J I Hammarberg
  963.  
  964.     + Zoo archiver, Version 2.10 (1991/07/09 02:10:34)
  965.       (C) Copyright 1991 Rahul Dhesi -- Noncommercial use permitted
  966.  
  967.     + ARCE Copyright (c) 1986-91 Vernon D. Buerg.
  968.       Extract ARC files, Version 4.0g, 4/12/91. All rights reserved.
  969.  
  970.     + Conference Mail - Revision: 4.07 by Bob Hartman, FidoNet Node 132/101
  971.       (C) Copyright 1986, 1987 by Spark Software Inc. All rights reserved.
  972.  
  973.  
  974.       ╒═════════════════════╕
  975.       │ 9. REVISION HISTORY │
  976.       ╘═════════════════════╛
  977.  
  978.       Ver.   Comment
  979.       ~~~~   ~~~~~~~
  980.       1.70 - Added support for the Dutch HAP archive format, which compresses
  981.              at least 10% better than PKZIP v2.04.
  982.            - Added support for the Finnish HA archiver, which beats PKZIP
  983.              v2.04 by more than 20%!
  984.            - Added the "/D" or Delete option.
  985.            - Added detection of SFX (self-extracting) archives.
  986.              GUS will recognize all EXE variants of the known archive types.
  987.              Note: GUS can't handle COM self-extractors made by LHarc 1.xx,
  988.              only the EXE sfx version.
  989.            - If the drive is full (0 bytes free), GUS is unable to move
  990.              a bad mailarchive away. It would take quite some time before
  991.              GUS would give up trying, though. Fixed: GUS will check
  992.              the drive space and abort the move if less than 32 bytes are
  993.              free. (32 bytes is what's need to create a new directory entry.)
  994.            - If a file could not be opened for the purpose of determining
  995.              the archive type, a runtime error 103 resulted. Fixed.
  996.              Added a message: «WARNING: unable to determine archive type due
  997.              to error while opening file».
  998.            - Some people experienced strange `runtime 162' errors.
  999.              Here's what happened...
  1000.              GUS tried to open the NUL device and create it. Some environments
  1001.              may have objected to that.
  1002.              I changed the code so that the NUL device is opened for writing
  1003.              only (no creation) and only if the /Q option is used, not always
  1004.              like before.
  1005.              This still caused some systems to yield that runtime error, so I
  1006.              added an error check and disabled the Quiet mode in case the NUL
  1007.              device cannot be opened. That should solve the `runtime 162'
  1008.              problem once and for all...
  1009.              Added a message: «WARNING: can't open NUL device -- Quiet command
  1010.              ignored».
  1011.              (This problem appeared mostly with system that loaded TSRs and
  1012.              redirected their output to the NUL device. That causes DOS to
  1013.              open but never close the NUL device, so when GUS tries to open
  1014.              it, a sharing violation (runtime 162) occurs.)
  1015.  
  1016.       1.61 - Fixed a bug which caused GUS to use the wrong archive name
  1017.              when operating with an archiver that requires a fixed archive
  1018.              extension (DWC and HPK at this time).
  1019.  
  1020.       1.60 - Added support for the HPACK archiver from Peter Gutmann, which
  1021.              makes the absolutely smallest archives at this time.
  1022.            - Added support for the Swedish SQZ archiver, which compresses
  1023.              better than ARJ 2.30 or the new PKZIP 1.93a!
  1024.            - Previously, the first three archive types were: ARC (#1), ARJ
  1025.              (#2) and ARC+ (#3). From now on, ARC+ will be #2 and ARJ #3.
  1026.              This is more logical. (The reason for the previous order was
  1027.              that GUS uses the abbreviation ARp internally for ARC+, and
  1028.              ARp comes after ARJ alphabetically.)
  1029.            - Due to a string length mismatch, GUS couldn't tell whether
  1030.              UsePath or UsePassword options were supported or not. The
  1031.              UsePath problem was reported by Wim Van Sebroeck (2:292/862)
  1032.              and by checking that, I discovered that the same was true for
  1033.              the UsePassword option. Corrected.
  1034.            - Added code to allow the Path option to replace a command
  1035.              instead of being added to it. (Indicated by `<' as the first
  1036.              character in the Path option in GUS_WCFG.PAS)
  1037.              Only needed for ARJ and SQZ at this time. (The previously used
  1038.              `e -jf' for ARJ doesn't seem to work equal to `x', so that was
  1039.              changed.)
  1040.            - GUS `forgot' about the specification indicating which files had
  1041.              to be extracted, once an ARC+ type archive had been worked on.
  1042.              Reported by Wim Van Sebroeck (2:292/862) and fixed.
  1043.            - If the specified target directory ended with a backslash (\),
  1044.              GUS wouldn't recognize it as the target directory. Reported by
  1045.              Wim Van Sebroeck (2:292/862) and fixed.
  1046.            - Extract command for ARJ changed from `e -n' to `e -uy' and
  1047.              modified some other archiver parameters in order to make the
  1048.              behaviour of various archiver programs more homogenious.
  1049.              GUS without /R option:
  1050.              (1) XARC and HYPER will ask you if they should overwrite older
  1051.                  files. Unfortunately, these programs have no command
  1052.                  options to work in batchmode and avoid this.
  1053.              (2) HPACK will never overwrite older files because it doesn't
  1054.                  have an option for this.
  1055.              (3) all other archivers will overwrite older files and skip
  1056.                  the rest.
  1057.              GUS with /R will cause existing files always to be
  1058.              overwritten.
  1059.            - If someone would combine several real commands on the GUS
  1060.              commandline, the effects might not be what one desires.
  1061.              Example: GUS * /T /R would start unpacking when one would
  1062.              expect it to ignore the replace command and do a test only.
  1063.              So I have changed the behaviour. The /T command now has priority
  1064.              over all other commands. This means that if you specify multiple
  1065.              commands, the /T (test) command will be executed and all others
  1066.              ignored. If you specify /P and /R, the /P has a higher priority
  1067.              and will be executed. The /R will be ignored. The priority of a
  1068.              command increases if it can do less damage. So the priority order
  1069.              for the GUS commands is in descending order: /I /T /P /R
  1070.              (remember: the other switches are options, not commands!).
  1071.              This problem was discovered after a tip by Alex Cleynhens
  1072.              (2:292/500).
  1073.            - Additional check for DWC archives. Apart from the string `DWC'
  1074.              in the last 1K of the file, it is now required that this string
  1075.              is the last item in a 27 byte structure for the file to be
  1076.              identified as a DWC archive.
  1077.            - GUS reported a runtime error when trying to rename an archive to
  1078.              a fixed extension and if the new name existed already. Reported
  1079.              by Wim Van Sebroeck (2:292/862). Fixed: the name is now
  1080.              incremented. Modified the routine which moves bad mailarchives
  1081.              to the BADARC.GUS subdirectory as well: if a file with the
  1082.              same name already exists in the BADARC.GUS subdirectory, the
  1083.              extension of the file to be moved is incremented.
  1084.            - GUS had a problem if the target directory was a root directory.
  1085.              In that case, it specified only the drive instead of the root
  1086.              directory. Reported by Wim Van Sebroeck (2:292/862). Fixed.
  1087.            - HPACK seems to require that its archives have a fixed extension
  1088.              of .HPK (like DWC does). GUS directory /M /T doesn't move bad
  1089.              archives into the BAD_ARC.GUS directory. Reported by Peter Smink
  1090.              (2:285/1). Fixed.
  1091.            - Various changes to the documentation.
  1092.  
  1093.       1.50 - Added the /N (/5) switch to prevent GUS using or creating
  1094.              paths embedded within archives.
  1095.            - Made this switch automatic while working with mail archives
  1096.              (/M).  Thanks to John Lots (2:512/36.3@fidonet.org) and Eef
  1097.              Hartman (2:281/603.5) for suggesting this and detecting the
  1098.              problem with this in GUS 1.40.
  1099.              /N is now also automatically invoked with /P and /T.
  1100.            - Changed the way the configuration information is stored a bit,
  1101.              since there was a useless amount of space being reserved for
  1102.              the "Unknown" type, which of course shouldn't have been saved.
  1103.            - Fixed a minor problem which caused a runtime error when
  1104.              GUS.EXE was given a read/only attribute.  Thanks to Rob
  1105.              Essers (2:283/406.2) for reporting this.
  1106.            - Cleaned up the batchfile listing in section 3.3 a bit.
  1107.              Thanks to Roelof Heuvel (27:3331/5000@signet.ftn) for the
  1108.              suggestion.
  1109.            - Fixed a minor problem which caused GUS to not append '.*'
  1110.              to a filename given without an extension when the pathame
  1111.              would contain a dot somewhere.  Thanks to Hans Siemons
  1112.              (2:285/214@fidonet.org) for reporting it.
  1113.            - Because of a space inserted between the appropriate switch to
  1114.              supply a password to an unarchiver and the actual password it-
  1115.              self, encrypted archives could never be unpacked. This is now
  1116.              fixed.
  1117.            - Made minor modifications for PKUNZIP 2.00, due to some changes
  1118.              in the way that one handles its command options.
  1119.            - The `use path' option was always supplied with the ZOO unpack
  1120.              commands. Corrected.
  1121.  
  1122.       1.40 - Removed MDCD archive support again, since nobody was likely
  1123.              to use it -- unless you're looking for the worst performing
  1124.              archiver ever, of course.
  1125.            - Added support for the new LHA version 2 archiver from Yoshi,
  1126.              which succeeds LHARC.  The previous version of GUS could
  1127.              already handle the new compression, but I didn't expect the
  1128.              name of the program to be changed.
  1129.            - Added support for the ARJ archiver program from Robert K.
  1130.              Jung, which yields nearly always the best compression and
  1131.              has a lot of features.
  1132.            - Added support for the HYPER archiver program from Germany,
  1133.              which seems to outperform every other archiver on 600..800K
  1134.              logfiles ONLY.  Weird.
  1135.            - Added support for ARCfiles made by the new ARC version 7
  1136.              compressor from SEA.  At this time, only one public domain
  1137.              extractor is available, which unfortunately lacks almost
  1138.              every feature GUS has to offer.
  1139.              My thanks to Donn Bly (1:236/7@fidonet.org) and Jeffrey
  1140.              Nonken (1:273/715@fidonet.org) for providing me with all the
  1141.              information on the ARC7+ archive format and the XARC
  1142.              program.
  1143.            - GUS is now fully commandline compatible with Vernon Buerg's
  1144.              ARCE program.  All of ARCE's switches are supported - except
  1145.              for /5, which prevents ARCE from creating subdirectories
  1146.              contained within ARCfile entries.
  1147.            - GUS provides two extra options: /I will identify an archive
  1148.              type by means of the exitcode (errorlevel) and /M will
  1149.              unpack and delete mailarchives in Fidonet Technology
  1150.              Networks.
  1151.            - BUGFIXES:
  1152.              * cleaned up handling zero-length and read/only files.
  1153.                From now on, GUS won't abort with a runtime error on
  1154.                those. 
  1155.              * you could only specify one single file to extract on GUS's
  1156.                commandline, although the help screen and manual suggested
  1157.                you could give more than one filespec.
  1158.                That's also corrected now.
  1159.            - OTHER IMPROVEMENTS:
  1160.              * the code which detects the archive type has been completely
  1161.                re-written and now is a *lot* faster than before!
  1162.  
  1163.       1.31 - This version was never released, but mentioned in the
  1164.              documentation of the ARCA*Simulator v2.31 (ASIM_231.LZH).
  1165.  
  1166.       1.30 - This version was never released, but mentioned in the "Latest
  1167.              Software Versions" column of the FidoNews magazine.
  1168.  
  1169.       1.20M  Added MDCD archives, corrected an error which made GUS not
  1170.              recognize uncompressed file entries in an LZH archive, made sure
  1171.              the new compression method of PAK is supported, added features to
  1172.              allow selection of files and target directory for unpacking.
  1173.              This is a maintenance release, hence the 'M' behind the version
  1174.              number.
  1175.  
  1176.       1.10 - Added LZH archives, and changed the way DWC archives are
  1177.              identified in order to identify them even if up to 1K of rubbish
  1178.              is appended to the end of a DWC archive. This is useful for DWC
  1179.              archives which have been transferred by means of an Xmodem
  1180.              protocol.
  1181.  
  1182.       1.00 - Base version.  (Turbo Pascal 5.0)
  1183. _______________________________________________________________________(eof)__
  1184.