1255 lines
62 KiB
Plaintext
1255 lines
62 KiB
Plaintext
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ
|
|||
|
<20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>
|
|||
|
<20> <20> <20> <20> <20> <20>
|
|||
|
<20> <20> <20><><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>
|
|||
|
<20> <20> <20><> <20> <20><> <20> <20><> <20>
|
|||
|
<20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>
|
|||
|
<20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>
|
|||
|
<20> General Unpack Shell <20>
|
|||
|
<20> version 1.80 <20>
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ
|
|||
|
<20> Copyright (C) 1994 and written by <20>
|
|||
|
<20> Johan Zwiekhorst <20>
|
|||
|
<20> - ALL RIGHTS RESERVED - <20>
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
|
|||
|
T A B L E O F C O N T E N T S
|
|||
|
*********************************
|
|||
|
|
|||
|
1. LEGAL STUFF
|
|||
|
The no-nonsense licence statement
|
|||
|
Warranty
|
|||
|
Contact
|
|||
|
Payment
|
|||
|
What you should have received
|
|||
|
|
|||
|
2. INTRODUCTION
|
|||
|
|
|||
|
3. USAGE
|
|||
|
3.1. General Usage under DOS
|
|||
|
SYSTEM REQUIREMENTS
|
|||
|
COMMAND-LINE PARAMETERS
|
|||
|
NOTE
|
|||
|
EXAMPLES
|
|||
|
EXIT CODES
|
|||
|
3.2. Unpacking Mailarchives
|
|||
|
3.3. Identifying Archive Types
|
|||
|
|
|||
|
4. BUILT-IN DEFINITIONS
|
|||
|
4.1. Built-in Unpacker Definitions
|
|||
|
4.2. How To Define Other Unpackers
|
|||
|
|
|||
|
5. GUS & OTHER SHELLS
|
|||
|
|
|||
|
6. HOW GUS IDENTIFIES ARCHIVES
|
|||
|
6.1. Recognition patterns as used by GUS
|
|||
|
6.2. Record layout of ARC/PAK/ARC+
|
|||
|
6.3. How GUS identifies SFX (self-extracting) archives
|
|||
|
6.4. Mandatory order of scanning the patterns
|
|||
|
|
|||
|
7. RUNTIME MESSAGES
|
|||
|
[A] General information messages
|
|||
|
[B] Warning messages
|
|||
|
[C] Fatal error messages
|
|||
|
|
|||
|
8. ACKNOWLEDGEMENTS
|
|||
|
|
|||
|
9. REVISION HISTORY
|
|||
|
|
|||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
<20> 1. LEGAL STUFF <20>
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
|||
|
This software is copyrighted (C) 1989, 1990, 1991, 1992, 1993, 1994
|
|||
|
and written by Johan Zwiekhorst, hereafter called the Author and Owner.
|
|||
|
All Rights Reserved.
|
|||
|
|
|||
|
The No-Nonsense Licence Statement
|
|||
|
=================================
|
|||
|
This software and everything enclosed with it are protected by both
|
|||
|
Belgian copyright law and international treaty provisions.
|
|||
|
It is called "freeware".
|
|||
|
|
|||
|
FREEWARE software may be used, copied and distributed freely for
|
|||
|
NONCOMMERCIAL use only IF:
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
NO FEE IS CHARGED FOR USE, COPYING OR DISTRIBUTION.
|
|||
|
|
|||
|
IT IS NOT MODIFIED IN ANY WAY.
|
|||
|
|
|||
|
It may be distributed ONLY in it's original, unmodified compressed
|
|||
|
package file. ~~~~~~~~~~
|
|||
|
|
|||
|
This means you may not add comments to the compressed package file
|
|||
|
(also known as an archive file or simply an archive), nor may you
|
|||
|
delete files from or add files to the archive file, UNLESS YOU HAVE
|
|||
|
A WRITTEN PERMISSION TO DO SO.
|
|||
|
|
|||
|
Converting the archive file to another compression method or
|
|||
|
another archive file format is allowed, provided that the above
|
|||
|
conditions are met.
|
|||
|
|
|||
|
The original package as released by me is in Yoshi's LZH archive
|
|||
|
format. (See below for what you should have received.)
|
|||
|
In order to extract the files from an LZH archive under DOS, you
|
|||
|
will need to get the file LHA***.EXE, where '***' stands for the
|
|||
|
version number of the program LHA. At the time this is written,
|
|||
|
the latest version is 2.13, so look for LHA213.EXE.
|
|||
|
If you are using OS/2, look for Peter Fitzsimmons' LH2 program.
|
|||
|
The latest version of LH2 is 2.22, so look for LH2_222.EXE.
|
|||
|
Note, that recompressing the archive will nearly always result
|
|||
|
in a bigger archive.
|
|||
|
|
|||
|
The use of FREEWARE software is prohibited in a governmental
|
|||
|
or commercial situation. In these cases, this software must be
|
|||
|
purchased and a Commercial Licence Statement will then be provided
|
|||
|
for. You may write to the Owner at the address below for more
|
|||
|
information.
|
|||
|
|
|||
|
Warranty
|
|||
|
========
|
|||
|
This software is provided AS IS without any warranty, expressed or
|
|||
|
implied, including but not limited to fitness for a particular
|
|||
|
purpose.
|
|||
|
IN NO EVENT SHALL THE AUTHOR/OWNER OF THIS PRODUCT BE LIABLE FOR
|
|||
|
ANY DIRECT OR CONSEQUENTIAL LOSS OR DAMAGES WHICH MAY HAVE ARISEN
|
|||
|
FROM THE USE OF THIS PRODUCT.
|
|||
|
If your local law does not permit any of the statements made above,
|
|||
|
or if you do not agree with any of them yourself, THEN YOU ARE NOT
|
|||
|
LICENCED TO USE THIS PROGRAM!
|
|||
|
|
|||
|
Contact
|
|||
|
=======
|
|||
|
The Author can be reached via a Bulletin Board System (BBS) and
|
|||
|
electronic mail at the Tripod BBS.
|
|||
|
|
|||
|
Phone lines:
|
|||
|
|
|||
|
[due to a move, none are currently available]
|
|||
|
|
|||
|
Network addresses:
|
|||
|
|
|||
|
Internet jz@f118.n292.z2.fidonet.org
|
|||
|
Compuserve >INTERNET:jz@f118.n292.z2.fidonet.org
|
|||
|
FIDOnet 2:292/118
|
|||
|
|
|||
|
The Owner can be contacted at the following address:
|
|||
|
|
|||
|
Johan Zwiekhorst
|
|||
|
Dorpheidestraat 63/B
|
|||
|
3590 DIEPENBEEK (Belgium)
|
|||
|
Phone [not yet available] during office hours, Central European Time.
|
|||
|
|
|||
|
Payment
|
|||
|
=======
|
|||
|
If you would like to use this product in a commercial or
|
|||
|
governmental situation, please contact the Owner at the address
|
|||
|
above. You will then learn the price of the product and a
|
|||
|
Commercial Licence Statement will be made available to you.
|
|||
|
|
|||
|
For all others, this product is free, as mentioned before.
|
|||
|
But if you would like to support the Author and encourage him to
|
|||
|
write more useful software, you're welcome to pay some money.
|
|||
|
You may pay whatever you feel the product is worth to you.
|
|||
|
Note that this kind of freeware products is developed entirely in
|
|||
|
the Author's leisure time and he receives absolutely no
|
|||
|
compensation for it, apart from what you as a user would pay him.
|
|||
|
|
|||
|
If you pay at least U.S. $15 (BEF 500, NLG 30, DEM 25), you will
|
|||
|
receive, when available, a 5.25" or 3.5" floppy diskette with the
|
|||
|
next version. Please specify which.
|
|||
|
Immediately after receiving your payment, I will send you
|
|||
|
an acknowledgement and a list of the latest versions of all
|
|||
|
freeware I wrote. Payments to the Author can be sent in cash to the
|
|||
|
address mentioned above or transferred to one of the following bank
|
|||
|
accounts:
|
|||
|
Bank Brussel Lambert (Belgium) - account number 335-0076382-89
|
|||
|
Rabobank (Netherlands) - account number 1059.19.519
|
|||
|
|
|||
|
***NOTE THAT THIS IS FOR NON-COMMERCIAL SITUATIONS ONLY!
|
|||
|
|
|||
|
For all payments made: please specify NAME and VERSION NUMBER of
|
|||
|
the product!
|
|||
|
|
|||
|
|
|||
|
What you should have received:
|
|||
|
==============================
|
|||
|
|
|||
|
You should have received the file
|
|||
|
|
|||
|
GUS_180.LZH - (35673 bytes)
|
|||
|
|
|||
|
with the following contents:
|
|||
|
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ <20><><EFBFBD><EFBFBD><EFBFBD>Ŀ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
|
|||
|
<20> filename <20> <20>bytes<65> <20> description <20>
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
FILE_ID .DIZ 311 Short description for BBS sysops.
|
|||
|
GUS .DOC 63375 This documentation.
|
|||
|
GUS .EXE 12381 The program file. CRC/32 = 4260e561
|
|||
|
GUS_WCFG.PAS 6434 TP source for a program CRC/32 = 5770b074
|
|||
|
that writes a new configur-
|
|||
|
ation into GUS.EXE.
|
|||
|
|
|||
|
You may also use the program VALIDATE from McAfee Associates for
|
|||
|
the purpose of checking the authenticity of the program file(s).
|
|||
|
It should produce the following:
|
|||
|
|
|||
|
File Name: gus.exe gus_wcfg.pas
|
|||
|
Size: 12,381 6,434
|
|||
|
Date: 2-5-1994 2-5-1994
|
|||
|
File Authentication:
|
|||
|
Check Method 1 - 5154 3AF4
|
|||
|
Check Method 2 - 1007 05C1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
<20> 2. INTRODUCTION <20>
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
|||
|
The General Unpack Shell, or GUS, identifies compressed file types
|
|||
|
and calls the correct unpacker in order to extract the files from
|
|||
|
them.
|
|||
|
Its main purpose is, of course, to take work out of YOUR hands.
|
|||
|
You can use GUS with its straight-forward and easy to remember
|
|||
|
commands instead of having to learn a new set of commands each time
|
|||
|
a new archiver sees the daylight.
|
|||
|
|
|||
|
GUS will also work nicely in automated tasks, where any type of
|
|||
|
archive should be uncompressed, or where a certain file has to be
|
|||
|
added to any given archive.
|
|||
|
|
|||
|
GUS was made to be command-line compatible with the ARCE.COM
|
|||
|
unpacker program by Vernon Buerg. This makes it possible for you
|
|||
|
to rename GUS.EXE to ARCE.COM and have it invoked by any program
|
|||
|
that expects both ARCE and SEA's ARC-type compressed files, so that
|
|||
|
such a program will in fact work with any archive format YOU
|
|||
|
choose. Ben Baker's MAKENL is but one example of such a program.
|
|||
|
|
|||
|
GUS does not require you to fiddle with cumbersome and difficult
|
|||
|
configuration files: it's just a single EXE file. You copy it into
|
|||
|
your favourite utility directory and you can immediately start
|
|||
|
using it, no hassles at all.
|
|||
|
|
|||
|
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
<20> 3. USAGE <20>
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
|||
|
GUS assumes you have located all archiver programs it has to invoke
|
|||
|
somewhere in your system PATH.
|
|||
|
GUS is small and it will only occupy about 21K while shelling out
|
|||
|
to other programs, which should leave more than enough memory for
|
|||
|
those archiver programs.
|
|||
|
|
|||
|
3.1. General Usage under DOS
|
|||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|||
|
SYSTEM REQUIREMENTS:
|
|||
|
--------------------
|
|||
|
GUS will run on any IBM PC compatible computer running DOS 3.0 or
|
|||
|
greater, provided that at least 25K plus the memory needed by the
|
|||
|
largest archiver program to invoke is available.
|
|||
|
|
|||
|
COMMAND-LINE PARAMETERS:
|
|||
|
------------------------
|
|||
|
As said before, GUS is command-line compatible with ARCE.
|
|||
|
Hence, the general syntax is:
|
|||
|
|
|||
|
GUS <20>compressed_filespec<65> [filespec(s)] [target_path] [switch(es)]
|
|||
|
|
|||
|
(Entries enclosed within [] are optional, those within <20> <20> are
|
|||
|
mandatory. The [] and <20> <20> signs serve to indicate this only and
|
|||
|
should never be typed!)
|
|||
|
|
|||
|
<20>compressed_filespec<65> ::= this specifies where to find the
|
|||
|
compressed file. If an extension
|
|||
|
is not given, GUS will assume '.*'.
|
|||
|
Currently, the following archive types
|
|||
|
are supported: ARC and ARC+, ARJ, DWC,
|
|||
|
HA, HAP, HPK, HYP, LZH (both LHarc and LHA),
|
|||
|
PAK, SQZ, UC2, ZIP and ZOO.
|
|||
|
|
|||
|
[filespec(s)] ::= specifies which files should be
|
|||
|
unpacked. You may give more than one
|
|||
|
file specification, all of which may
|
|||
|
contain wild cards.
|
|||
|
|
|||
|
[target_path] ::= specifies where to locate the unpacked
|
|||
|
files. In order to allow GUS to be as
|
|||
|
flexible as possible, the ordering of
|
|||
|
the file specifications and the target
|
|||
|
path is not important. You may define
|
|||
|
the target path first and then the
|
|||
|
files to be extracted. It is even
|
|||
|
allowed to put the target path in the
|
|||
|
middle of a number of specifications of
|
|||
|
files to extract! If you give more
|
|||
|
than one directory, GUS will ignore all
|
|||
|
but the last.
|
|||
|
|
|||
|
[switch(es)] ::= specifies one or more of the following
|
|||
|
switches...
|
|||
|
/D : Delete archive after successful unpacking
|
|||
|
/I : Identify only, don't shell out (see 3.3 below)
|
|||
|
/M : unpack Mailarchives only (see 3.2 below)
|
|||
|
/N : do Not use embedded path while extracting
|
|||
|
(for the sake of compatibility with ARCE, /5 may also be
|
|||
|
used)
|
|||
|
/P : Print file(s) on standard output device
|
|||
|
/Q : Quiet mode, suppresses shell output
|
|||
|
/R : Replace existing files
|
|||
|
/T : Test archive integrity
|
|||
|
/V : View archive contents
|
|||
|
/Gpswd : supply password 'pswd' for Garbled archive
|
|||
|
|
|||
|
All parameters have to separated by at least one blank. Switches
|
|||
|
may be joined together without spaces, but the '/' character must
|
|||
|
be present for each switch. GUS does not support the dash '-'
|
|||
|
instead of the slash '/'.
|
|||
|
Options may be given in no matter what case. Only the Delete option
|
|||
|
_has_ to be in uppercase for safety reasons.
|
|||
|
|
|||
|
NOTE:
|
|||
|
-----
|
|||
|
Consistent with ARCE's behaviour, GUS will create any directories
|
|||
|
contained within an archive if they do not exist. Both ARCE and GUS
|
|||
|
have a commandline switch with which you can prevent this and have
|
|||
|
them extract to the current directory.
|
|||
|
If you are using the /M (mail archive) switch however, use of the
|
|||
|
/N (No embedded paths) switch is automatically assumed and unpacking
|
|||
|
will always be done in the current directory.
|
|||
|
With /M, the option /D (Delete archive after successful unpacking) is
|
|||
|
also automatically selected.
|
|||
|
The /N switch is equally automatically invoked with /P (print) and /T
|
|||
|
(test).
|
|||
|
Since SEA's XARC program cannot list the directory of an ARC+ (A7+)
|
|||
|
archive, GUS will switch to the program configured for the regular
|
|||
|
ARC type instead for the View Contents command.
|
|||
|
|
|||
|
EXAMPLES:
|
|||
|
---------
|
|||
|
1) Extract all files from an archive CFILE.ANY:
|
|||
|
> GUS CFILE.ANY
|
|||
|
|
|||
|
2) Extract all *.COM and *.EXE files from an archive UTILS.ANY
|
|||
|
into a target directory D:\Utils and replace all existing ones:
|
|||
|
> GUS UTILS.ANY *.COM *.EXE D:\UTILS /R/N
|
|||
|
|
|||
|
3) A batchfile LA.BAT which will list any text file inside any
|
|||
|
archive:
|
|||
|
LA.BAT: @echo off
|
|||
|
GUS %1 %2 %3 %4 %5 %6 %7 %8 %9 /P|LIST/S
|
|||
|
|
|||
|
Then you can use this like: LA KBUI_200 *.DOC
|
|||
|
|
|||
|
4) Test the integrity of all archives in the directory F:\Arcs
|
|||
|
> GUS F:\ARCS\* /T
|
|||
|
|
|||
|
5) Unpack all ZIPfiles PW*.ZIP protected with password JiMmY into
|
|||
|
the directory D:\PWS, not replacing any existing files and using
|
|||
|
any embedded paths:
|
|||
|
> GUS PW*.ZIP D:\PWS /GJiMmY
|
|||
|
|
|||
|
EXIT CODES:
|
|||
|
-----------
|
|||
|
GUS will yield an errorlevel of 0 if all operations succeeded.
|
|||
|
If something's wrong, it will pass on the errorlevel returned by
|
|||
|
the child program invoked.
|
|||
|
If the child program could not be started, GUS will return
|
|||
|
errorlevel 202 = no such program file found in PATH
|
|||
|
203 = non-existing directory
|
|||
|
204 = too many open files (increase FILES=... parameter
|
|||
|
in your CONFIG.SYS file)
|
|||
|
205 = access denied
|
|||
|
206 = invalid handle
|
|||
|
208 = not enough memory to start the child program
|
|||
|
210 = invalid environment
|
|||
|
211 = invalid format
|
|||
|
218 = no more files
|
|||
|
If the child program could be started but something else is wrong,
|
|||
|
GUS will return
|
|||
|
errorlevel 1 = for all errors not reported in the list below
|
|||
|
220 = no such (mail) directory
|
|||
|
221 = no such file(s)
|
|||
|
Note, that GUS will not be able to handle a PATH of more than 255
|
|||
|
characters properly.
|
|||
|
|
|||
|
3.2. Unpacking Mailarchives
|
|||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|||
|
If you are a BBS SysOp or a Point connected to a Fidonet Technology
|
|||
|
compatible electronic mail network, you receive mail packets
|
|||
|
compressed and bundled within mailarchives. You obviously need to
|
|||
|
unpack those mailarchives.
|
|||
|
You can do that in two ways:
|
|||
|
|
|||
|
a) Have your mailprocessor call GUS to unpack the mailarchives.
|
|||
|
|
|||
|
+ If your mailprocessor allows you to specify which unpacker it
|
|||
|
should invoke to decompress mailarchives, have it call GUS.
|
|||
|
Example for ConfMail:
|
|||
|
> CM IMPORT AREAS.BBS -K -N -F Conf.Imp -A GUS
|
|||
|
This approach has the disadvantage that GUS will create any
|
|||
|
directories embedded in the archive, should they not exist.
|
|||
|
Another disadvantage is, that the mailprocessor is still in memory.
|
|||
|
This occupies a lot more memory than is necessary.
|
|||
|
|
|||
|
+ If your mailprocessor does not allow you to specify which
|
|||
|
unpacker to use, it will most likely expect ARCE or PKXARC/
|
|||
|
PKUNPAK. Rename GUS.EXE to ARCE.COM or PKXARC.EXE or
|
|||
|
PKUNPAK.EXE, whatever your mailprocessor wants.
|
|||
|
If your mailprocessor wants to use an unpacker that needs a
|
|||
|
specific decompress command (like PAK E Archive), you cannot
|
|||
|
have it call GUS, since GUS would interpret its first
|
|||
|
command-line argument as the archive name.
|
|||
|
Use the method described in item b) to have GUS unpack your
|
|||
|
mailarchives BEFORE your mailprocessor is started. Since your
|
|||
|
mailprocessor will only see mail packets then and no
|
|||
|
mailarchives, there will be no problem.
|
|||
|
|
|||
|
b) Have GUS unpack all mailarchives BEFORE you invoke your
|
|||
|
mailprocessor. This is the preferred method.
|
|||
|
You this by starting GUS with the following command-line:
|
|||
|
|
|||
|
GUS <20>Inbound_directory<72> /M
|
|||
|
|
|||
|
Instead of the archive name, you specify the path to the
|
|||
|
directory where your inbound mail is located.
|
|||
|
Suppose your inbound directory is D:\Opus\NetFiles. GUS will
|
|||
|
unpack all mailarchives in that directory with the following
|
|||
|
command:
|
|||
|
> GUS D:\OPUS\NETFILES /M
|
|||
|
|
|||
|
After a mailarchive has been unpacked succesfully, GUS will
|
|||
|
delete it automatically.
|
|||
|
If a mailarchive cannot be unpacked succesfully, then GUS will
|
|||
|
create a subdirectory BADARC.GUS in your inbound directory and
|
|||
|
move that mailarchive to it. This allows you to inspect the
|
|||
|
problematic mailarchives later on while retaining their original
|
|||
|
name. Other unpack shells always rename a faulty archive to
|
|||
|
BADARC.001, which makes it very difficult if you would like to
|
|||
|
restore the archive to its original name after you have
|
|||
|
inspected and maybe repaired it. I didn't like that procedure,
|
|||
|
so I decided to let GUS move problematic archives to a special
|
|||
|
subdirectory instead. Let me know how you feel.
|
|||
|
|
|||
|
3.3. Identifying Archive Types
|
|||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|||
|
With the /I switch, you can have GUS simply report which archive
|
|||
|
type is at hand and do nothing else.
|
|||
|
This switch can be used just to get a list of archive types, like
|
|||
|
this:
|
|||
|
> GUS J:\Outbound\*.MO? /I
|
|||
|
|
|||
|
Type Archive Filename
|
|||
|
---- ----------------
|
|||
|
LZH J:\OUTBOUND\0009FE64.MO1
|
|||
|
??? J:\OUTBOUND\8FDCB1E2.MO1
|
|||
|
ZIP J:\OUTBOUND\8FDCB243.MO0
|
|||
|
ARJ J:\OUTBOUND\FF24FFE9.MO0
|
|||
|
LZH J:\OUTBOUND\8FDCB241.MO0
|
|||
|
|
|||
|
GUS yields something like the above list. The '???' means that GUS
|
|||
|
was unable to determine the archive type, possibly because it isn't
|
|||
|
an archive at all. In this case, it was a zero-length file.
|
|||
|
|
|||
|
A much more useful way of using this switch is to determine the
|
|||
|
type of just one archive and act upon that. For instance, to add a
|
|||
|
file to any archive that comes along.
|
|||
|
If used with /I, GUS will return an errorlevel from 0 to 13,
|
|||
|
indicating the archive type.
|
|||
|
|
|||
|
Archive Type: Unknown ARC ARC+ ARJ DWC HA HAP HPK HYP LZH PAK
|
|||
|
Errorlevel : 0 1 2 3 4 5 6 7 8 9 10
|
|||
|
Archive Type: SQZ UC2 ZIP ZOO
|
|||
|
Errorlevel : 11 12 13 14
|
|||
|
|
|||
|
Example: suppose you want to add a header text LOGO.TXT to ZIP and
|
|||
|
ARJ files, and leave other archive types alone.
|
|||
|
These batchfile instructions will take care of that:
|
|||
|
|
|||
|
GUS %1 /I
|
|||
|
if not errorlevel 14 if errorlevel 13 goto IsZIP
|
|||
|
if not errorlevel 4 if errorlevel 3 goto IsARJ
|
|||
|
goto Finish
|
|||
|
:IsZIP
|
|||
|
PKZIP -z %1 <LOGO.TXT
|
|||
|
goto Finish
|
|||
|
:IsARJ
|
|||
|
ARJ c -zLOGO.TXT %1
|
|||
|
:Finish
|
|||
|
|
|||
|
Please be advised that the errorlevel codes assigned to each archive
|
|||
|
type may change! If a new archive type is added to GUS, its extension
|
|||
|
will be merged into the list shown above so that the order of the
|
|||
|
extensions is alphabetical. If you don't like this and would rather see
|
|||
|
new types simply be added to the end of the list, let me know. I will
|
|||
|
comply with your wishes if enough people feel like that.
|
|||
|
At this time, I like to have an alphabetical list and so do most of the
|
|||
|
people I asked about this.
|
|||
|
|
|||
|
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
<20> 4. BUILT-IN DEFINITIONS <20>
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
|||
|
4.1. Built-In Unpacker Definitions
|
|||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|||
|
The following unpackers are defined by default within GUS.EXE:
|
|||
|
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ
|
|||
|
<20>Type<70>Program <20>Extract<63>Replace<63>Display<61>Test <20>View <20>Path <20>Password<72>
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ
|
|||
|
<20>ARC <20>PKUNPAK .EXE<58>-n <20>-r <20>-c <20>-t <20>-v <20>*****<2A>g <20>
|
|||
|
<20>A7+ <20>XARC .EXE<58> <20>/o <20>***** <20>*****<2A>*****<2A>*****<2A>/g <20>
|
|||
|
<20>ARJ <20>ARJ .EXE<58>e -uy <20>e -y <20>p <20>t <20>l <20><x <20><>g <20>
|
|||
|
<20>DWC <20>DWC .EXE<58>xow <20>xw <20>p <20>t <20>v <20>r <20>g <20>
|
|||
|
<20>HA <20>HA .EXE<58>et <20>ety <20>***** <20>t <20>l <20><x <20>***** <20>
|
|||
|
<20>HAP <20>PAH .EXE<58>e <20>e <20>***** <20>**** <20>l <20>*****<2A>***** <20>
|
|||
|
<20>HPK <20>HPACK .EXE<58>x -on <20>x -oa <20>p <20>t <20>v <20>-da <20>-c <20>
|
|||
|
<20>HYP <20>HYPER .EXE<58>-x <20>-xo <20>***** <20>*****<2A>-v <20>p <20>***** <20>
|
|||
|
<20>LZH <20>LHA .EXE<58>e /m+ <20>e /m+c+<2B>p /m+ <20>t /m+<2B>l <20>x+ <20>***** <20>
|
|||
|
<20>PAK <20>PAK .EXE<58>e/WO <20>e/WA <20>p <20>t <20>l <20>/PATH<54>/g= <20>
|
|||
|
<20>SQZ <20>SQZ .EXE<58>e /o0 <20>e /o1 <20>p <20>t <20>l <20><x <20>***** <20>
|
|||
|
<20>UC2 <20>UC .EXE<58>E <20>E -F <20>***** <20>T <20>V <20>-S <20>***** <20>
|
|||
|
<20>ZIP <20>PKUNZIP .EXE<58>-n <20>-o <20>-c <20>-t <20>-v <20>-d <20>-s <20>
|
|||
|
<20>ZOO <20>ZOO .EXE<58>e:O <20>e:OS <20>e:p <20>e:N <20>lC <20>// <20>***** <20>
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ
|
|||
|
<20> 3 <20> 12 <20> 10 <20> 10 <20> 10 <20> 10 <20> 10 <20> 5 <20> 5 <20>
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ
|
|||
|
The numbers above indicate the number of characters provided for
|
|||
|
each string.
|
|||
|
|
|||
|
Note that Extract, Replace, Display, Test and View are COMMANDS,
|
|||
|
while Path and Password are OPTIONS. The difference is, that an
|
|||
|
OPTION is always combined with a COMMAND and cannot be used alone.
|
|||
|
If the first character of the Path option is a `<', however, it means
|
|||
|
that the second character should be used to replace the first command
|
|||
|
string character. This is currently only the case with ARJ, HA and
|
|||
|
SQZ, who all need the `e' command to be replaced with `x' in order to
|
|||
|
extract files while using embedded path information.
|
|||
|
|
|||
|
All spaces means that that particular program does not need any
|
|||
|
parameters for that particular command.
|
|||
|
|
|||
|
All stars means that that particular program does not support that
|
|||
|
command or that option.
|
|||
|
|
|||
|
ATTENTION! When encountering an ARC sfx made by SEA's MKSARC program,
|
|||
|
GUS will identify it correctly, but PKUNPAK can't handle this sfx and
|
|||
|
will therefore exit with an error. If you expect to handle a lot of
|
|||
|
MKSARC sfx files, then you'd better replace PKUNPAK by ARC 6.02 in GUS'
|
|||
|
configuration segment.
|
|||
|
|
|||
|
You may want to redefine some of those built-in definitions for
|
|||
|
various reasons. To use another unpacker program, for instance.
|
|||
|
Or to change some parameters.
|
|||
|
|
|||
|
4.2. How To Define Other Unpackers
|
|||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|||
|
There are two ways to modify the built-in definitions.
|
|||
|
|
|||
|
You can grab a hex editor and change GUS.EXE directly. If you do,
|
|||
|
please take note of the lengths of the strings as listed above in
|
|||
|
section 4.1. All strings occupy the specified number of characters.
|
|||
|
To achieve that, they were padded with spaces where necessary. If you
|
|||
|
edit them, make sure you retain the number of characters and do NOT
|
|||
|
change the funny looking character at the start of each string
|
|||
|
(that's in fact the string length indicator byte). If a particular
|
|||
|
parameter is not supported by a certain unpacker program, then you
|
|||
|
should edit the appropriate field to contain all stars.
|
|||
|
|
|||
|
If you own a Turbo Pascal compiler v5.0 or later from Borland
|
|||
|
International, you can edit the file GUS_WCG.PAS and re-compile it.
|
|||
|
This small program will update the configuration information at the
|
|||
|
end of GUS.EXE for you. Do *NOT* modify the record layout of that
|
|||
|
information, since GUS will not recognize it anymore if you do.
|
|||
|
|
|||
|
Future versions of GUS may come with a complete setup program to
|
|||
|
edit and save a new configuration, or have a text configuration file.
|
|||
|
I haven't decided yet which way to go.
|
|||
|
|
|||
|
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
<20> 5. GUS & OTHER SHELLS <20>
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
|||
|
Since GUS was first created, other authors have joined the club and
|
|||
|
released their own versions of a utility that identifies archive
|
|||
|
types and shells out to the appropriate unpacker programs.
|
|||
|
|
|||
|
Some of those other shell programs come with source, others don't.
|
|||
|
Some have configuration files, others don't.
|
|||
|
Some are large, others small.
|
|||
|
Only one is GUS and all the others "ain't"! :-)
|
|||
|
|
|||
|
Why should you use GUS?
|
|||
|
|
|||
|
1. GUS is small and fast. Other shell programs typically use a lot
|
|||
|
more memory than GUS does.
|
|||
|
2. GUS provides you with all possible commands to allow not only
|
|||
|
automatic use, but also easy DOS command-line usage.
|
|||
|
3. While scanning a file to determine the archive type, the
|
|||
|
identification bytes have to be investigated in a well-defined
|
|||
|
order. Only then, the program will not be fooled by things like
|
|||
|
archives within archives.
|
|||
|
GUS is the only program that does this flawlessly: it will never
|
|||
|
be fooled.
|
|||
|
4. GUS has built-in code especially designed for archives that have
|
|||
|
their identification code at the end of the file. If such an
|
|||
|
archive has been transmitted by means of a protocol like
|
|||
|
X-modem, some junk may have been appended to the file to make it
|
|||
|
grow to the next 128 byte or even 1 K-byte boundary!
|
|||
|
GUS is the *only* program that will recognize an archive with
|
|||
|
appended junk because it can skip that while scanning.
|
|||
|
(At this time, this is only needed for DWC archives, but you
|
|||
|
never know...)
|
|||
|
5. The HAP&PAH, HPack and DWC archivers require their compressed files
|
|||
|
to have the respective extension '.HAP', 'HPK' and '.DWC' or else
|
|||
|
they won't work with them. GUS knows this and will rename any such
|
|||
|
archive that does not have the proper extension before calling
|
|||
|
the dearchiver program and rename it back to the original name
|
|||
|
afterwards.
|
|||
|
6. Because *I* wrote it! <grin>
|
|||
|
|
|||
|
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
<20> 6. HOW GUS IDENTIFIES ARCHIVES <20>
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
|||
|
GUS recognizes archives by searching for well-defined patterns in the
|
|||
|
archive file. Such a pattern can be from 1 to 5 bytes in length and
|
|||
|
it is extremely important that they be checked in the PROPER ORDER!
|
|||
|
That is what distinguishes GUS from all it's competitors: most
|
|||
|
programs do search for the right patterns (with the exception of the
|
|||
|
pattern for ZOO, which is almost always wrong), but don't do this in
|
|||
|
the proper order. That can result in faulty identifications,
|
|||
|
specifically when encountering archives within archives.
|
|||
|
|
|||
|
6.1. Recognition patterns as used by GUS
|
|||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|||
|
ArcType Offset Pattern Comment
|
|||
|
------- ------ ------------ -------------------------------
|
|||
|
ARC 0 0x1A
|
|||
|
ARC+ 0 0x1A Method byte (offset 1) of all
|
|||
|
PAK entries needs to be scanned: if
|
|||
|
HYP >= 0x0A then PAK;
|
|||
|
>= 0x48 then HYP;
|
|||
|
== 0x14 then ARC+
|
|||
|
Note: PAK can also be recognized
|
|||
|
by locating the byte 0xFE at offset
|
|||
|
EOF-2, but GUS doesn't use that
|
|||
|
because it is less accurate than
|
|||
|
scanning the method bytes, which
|
|||
|
has to be done anyway for identi-
|
|||
|
fying ARC+ and HYP.
|
|||
|
For completeness, the record layout
|
|||
|
of an ARC archive will be given in
|
|||
|
item 2.
|
|||
|
ARJ 0 0x60 0xEA
|
|||
|
HA 0 'HA' Offset 4 binary ANDed with 0xFC should
|
|||
|
yield 0x20. This is an additional check.
|
|||
|
DWC -3 'DWC' Offset -3 means the third LAST byte
|
|||
|
of the archive file.
|
|||
|
It is possible that some junk is
|
|||
|
present at the end of an archive,
|
|||
|
because of Xmodem transmissions for
|
|||
|
example.
|
|||
|
In order to avoid GUS not
|
|||
|
recognizing the archive because of
|
|||
|
this, the last 1028 bytes (or 343
|
|||
|
triplets) are read into a buffer
|
|||
|
and if that contains the string
|
|||
|
'DWC', then we have a DWC archive.
|
|||
|
An additional check will be done,
|
|||
|
however. The `DWC' string will have
|
|||
|
to be the last item in a 27 byte
|
|||
|
structure of which the first two
|
|||
|
items are ArcStrucSize=27 (2 bytes)
|
|||
|
and DirStrucSize=34 (1 byte) before
|
|||
|
GUS will accept the file to be a DWC
|
|||
|
archive.
|
|||
|
LZH 2 '-l??-' The '?' specifies a wildcard
|
|||
|
character.
|
|||
|
HAP 0 0x91 '3HF'
|
|||
|
HPK 0 'HPAK'
|
|||
|
UC2 0 'UC2' 0x1A
|
|||
|
ZIP 0 'PK' 0x03 0x04
|
|||
|
ZOO 20 0xDC 0xA7 0xC4 0xFD
|
|||
|
Most other programs search for the
|
|||
|
string 'ZOO' at the front of the
|
|||
|
archive, but that is wrong! Only
|
|||
|
the ZOO archives made using MS-DOS
|
|||
|
would be recognized this way. ZOO
|
|||
|
archives made by an Amiga or a
|
|||
|
computer running Unix would not
|
|||
|
necessarily be recognized this way.
|
|||
|
SQZ 0 'HLSQZ'
|
|||
|
|
|||
|
6.2. Record layout of ARC/ARC+/PAK
|
|||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|||
|
var
|
|||
|
ArcHeader : record
|
|||
|
Marker: Byte;
|
|||
|
Method: Byte;
|
|||
|
Name : array [1..13] of char;
|
|||
|
Size : DWord;
|
|||
|
Stamp : DWord;
|
|||
|
CRC : Word;
|
|||
|
Length: DWord;
|
|||
|
end;
|
|||
|
|
|||
|
Procedure to scan all archive entries:
|
|||
|
|
|||
|
|begin
|
|||
|
| seek(F,0);
|
|||
|
| notOK:=false;
|
|||
|
| YieldARC:=ARC;
|
|||
|
| repeat
|
|||
|
| {$I-}
|
|||
|
| blockread(F,ArcHeader,sizeof(ArcHeader));
|
|||
|
| {$I+}
|
|||
|
| if IOresult=0
|
|||
|
| then begin
|
|||
|
| if ArcHeader.Method>=PAKid
|
|||
|
| then begin
|
|||
|
| notOK:=true;
|
|||
|
| YieldARC:=PAK;
|
|||
|
| if ArcHeader.Method>=HYPid
|
|||
|
| then YieldARC:=HYP
|
|||
|
| else if ArcHeader.Method=ARPid
|
|||
|
| then YieldARC:=ARP
|
|||
|
| end
|
|||
|
| else MoveFilePtr(F,ArcHeader.Size);
|
|||
|
| end
|
|||
|
| else notOK:=true
|
|||
|
| until notOK
|
|||
|
|end;
|
|||
|
|
|||
|
This is of course all in Turbo Pascal, the language in which GUS was
|
|||
|
written. The above are in fact literal excerpts from GUS's source
|
|||
|
code.
|
|||
|
|
|||
|
6.3. How GUS identifies SFX (self-extracting) archives
|
|||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|||
|
The basic principle is simple. A self-extracting archive consists of an
|
|||
|
extraction program in EXE form followed by the archive itself as
|
|||
|
appended data.
|
|||
|
The header of an EXE file contains information to determine the size of
|
|||
|
the EXE portion of the file and hence the offset where the appended data
|
|||
|
starts.
|
|||
|
This proved to be true for all archive types, except for SFXs made by
|
|||
|
MKSARC, the ZIP/sfx as used in PKLTE115.EXE and the ZIP/sfx for OS/2.
|
|||
|
GUS has those offset values hardcoded.
|
|||
|
|
|||
|
6.4. Mandatory order for scanning the patterns
|
|||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|||
|
1 - SQZ
|
|||
|
2 - ZIP
|
|||
|
3 - HPK
|
|||
|
4 - UC2
|
|||
|
5 - HAP
|
|||
|
6 - ZOO
|
|||
|
7 - LZH
|
|||
|
8 - HA
|
|||
|
9 - ARJ
|
|||
|
10 - DWC
|
|||
|
11 - ARC/PAK/ARC+/HYP
|
|||
|
|
|||
|
This order is mandatory because it guarantees the greatest chance for
|
|||
|
a correct recognition.
|
|||
|
Every other order would enlarge the chance for a faulty result.
|
|||
|
This is also the reason why the archive specifications are still
|
|||
|
built into GUS and not given in a seperate configuration file (like
|
|||
|
PolyXarc, for example): I still haven't found a good method to have
|
|||
|
GUS determine automatically in which order the patterns have to be
|
|||
|
scanned, if a possibility exists that new patterns would be added to
|
|||
|
the list. I can't expect the users to include new patterns in the
|
|||
|
proper order themselves, can I?
|
|||
|
Therefore, I don't think providing GUS with a CFG file is very
|
|||
|
important at this time. I see no problem for providing a new GUS when
|
|||
|
a new and exciting archiver is released.
|
|||
|
|
|||
|
That's it folks! If you're curious: the TP source for GUS is about
|
|||
|
870 lines in length. Those lines are `filled' in the same way as
|
|||
|
those of the procedure quoted above.
|
|||
|
|
|||
|
NOTE: you may use the scanning and identification method as used by
|
|||
|
GUS and as described above in your own programs, but please be so kind
|
|||
|
and don't forget the reference indicating where you got the information!
|
|||
|
|
|||
|
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
<20> 7. RUNTIME MESSAGES <20>
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
|||
|
GUS may produce a number of messages while it's working.
|
|||
|
I will list all messages below, with an explanation what's wrong.
|
|||
|
|
|||
|
[A] General information messages
|
|||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|||
|
MESSAGE: Child program returns exit code #
|
|||
|
-> this message is given when the invoked unpacker program returns
|
|||
|
control to GUS. It shows the errorlevel returned by the
|
|||
|
unpacker program. The "#" will be replaced by the actual
|
|||
|
exit code.
|
|||
|
|
|||
|
[CHILD]: <20>unpacker_commandline<6E>
|
|||
|
-> this is shown in Quiet mode (/Q switch) instead of the
|
|||
|
archiver's screen output. The <20>unpacker_commandline<6E> will be
|
|||
|
replaced by just that.
|
|||
|
|
|||
|
Extract: ALL files (XARC cannot extract specific files)
|
|||
|
-> this message is shown when the first four characters of the
|
|||
|
unpacker program definition string are "XARC". Any files to
|
|||
|
extract specified on the command-line will be ignored.
|
|||
|
|
|||
|
|
|||
|
[B] Warning messages
|
|||
|
~~~~~~~~~~~~~~~~~~~~
|
|||
|
WARNING: multiple target directories defined -- will use the LAST one!
|
|||
|
-> you have defined more than one target path on the command-line.
|
|||
|
GUS warns you that it will ignore all paths but the last.
|
|||
|
|
|||
|
WARNING: you need to use /D (capital!) to have the unpacked archive
|
|||
|
deleted.
|
|||
|
-> you have specified "/d" in lower case. For security reasons, GUS
|
|||
|
will only accept a capital D for the Delete switch.
|
|||
|
|
|||
|
WARNING: unknown switch /X ignored
|
|||
|
-> you have specified a switch that GUS doesn't know. In the above
|
|||
|
warning message, the "X" will be replaced by the actual
|
|||
|
character (converted to upper case) that you used.
|
|||
|
GUS will continue but ignores this unknown switch.
|
|||
|
|
|||
|
WARNING: a slash by itself is not a valid option -- ignored
|
|||
|
-> you have typed a slash "/" followed by a space or an end-of-line.
|
|||
|
GUS will continue and ignore this.
|
|||
|
|
|||
|
WARNING: unknown parameter #9 <20>X<EFBFBD> ignored
|
|||
|
-> you have typed something on the command-line that GUS can't
|
|||
|
decipher. The actual word you typed will be inserted instead of
|
|||
|
"X" in the above message, and the number of that parameter on
|
|||
|
the commandline will be shown instead of the "9" above.
|
|||
|
|
|||
|
WARNING: unable to determine archive type due to error
|
|||
|
while opening file
|
|||
|
-> for some reason, GUS can't open the file it has to investigate.
|
|||
|
Bummer! GUS will simply skip it and continue with the next one, if
|
|||
|
any.
|
|||
|
|
|||
|
WARNING: can't open NUL device -- Quiet command ignored
|
|||
|
-> this occurs most often if the /Q (Quiet) command is used and when
|
|||
|
one or more TSRs were loaded with their output redirected to NUL.
|
|||
|
This yields a DOS sharing violation error, hence this message from
|
|||
|
GUS.
|
|||
|
|
|||
|
WARNING: moving bad archive HHHHHHHH.XX9 to X:\Inbound\BADARC.GUS\
|
|||
|
-> in mail unpack mode (/M switch), GUS was unable to unpack an
|
|||
|
archive and warns you that it will be moved to the BADARC.GUS
|
|||
|
subdirectory that GUS creates in the mail inbound directory.
|
|||
|
The actual name of the bad archive will be inserted in the
|
|||
|
message instead of "HHHHHHHH.XX9" and "X:\Inbound" will be
|
|||
|
replaced by the path to your mail inbound directory.
|
|||
|
|
|||
|
WARNING: switching to ARC type program for directory of A7+ archive
|
|||
|
-> if the program XARC is configured for handling A7+, GUS will
|
|||
|
switch to the archiver program configured for the ARC type for
|
|||
|
viewing the archive contents (directory), since XARC has no
|
|||
|
command to do it and both PKUNPAK and SEA's ARC 6.02 will list
|
|||
|
the directory of an ARC+ archive fine.
|
|||
|
|
|||
|
WARNING: unsupported command -- will do normal extract instead
|
|||
|
-> you tried to perform an action not supported by the particular
|
|||
|
archiver defined within GUS (i.e., issue a /T [test] command
|
|||
|
with the HYPER archiver program).
|
|||
|
GUS warns you it will ignore that command and do a normal
|
|||
|
extract instead.
|
|||
|
|
|||
|
WARNING: XXX type cannot be unpacked into embedded directories!
|
|||
|
-> the unpacker program has no option to enable using embedded
|
|||
|
directories or creating them, so all unpacking will be done
|
|||
|
into the current directory, since that is the only way.
|
|||
|
|
|||
|
WARNING: XXX type cannot be garbled - ignoring password...
|
|||
|
-> you supplied an extraction password for an archive whose
|
|||
|
unpacker program does not support password-protection.
|
|||
|
GUS will continue the command while ignoring the /G switch.
|
|||
|
The "XXX" will be replaced by the actual archive type detected.
|
|||
|
|
|||
|
[C] Fatal error messages
|
|||
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
|||
|
>ERROR<: cannot read configuration information!
|
|||
|
MESSAGE: aborting with exit code 255...
|
|||
|
-> GUS complains it can't find the configuration information at the
|
|||
|
back of it's EXE file. This means something is terribly wrong
|
|||
|
with that EXE file. You better delete it and get the original
|
|||
|
release archive unpacked again! (You *did* save that one,
|
|||
|
didn't you?)
|
|||
|
|
|||
|
>ERROR<: cannot create new filename for rename or move!
|
|||
|
-> while trying to rename (like when an archiver need a fixed
|
|||
|
extension) or move (like when a mailarchive couldn't be unpacked)
|
|||
|
a file, GUS increments the filename (in case of a fixed extension)
|
|||
|
or the extension (in case of a bad mailarchive) when it at first
|
|||
|
doesn't succeed with the rename or move. If the filename or
|
|||
|
extension cannot be incremented anymore and no other options are
|
|||
|
left, GUS issues the above error message.
|
|||
|
|
|||
|
>ERROR<: cannot erase unpacked archive!
|
|||
|
-> in mail unpack mode (/M switch) or if the Delete option (/D switch)
|
|||
|
was used, GUS is unable to delete the archive after it has been
|
|||
|
unpacked successfully.
|
|||
|
This more than likely means that the archive was marked
|
|||
|
Read/Only. You will have to unlock and delete it manually.
|
|||
|
As mailarchives are created fresh upon receipt, it is very
|
|||
|
unlikely that they would be marked R/O.
|
|||
|
|
|||
|
>ERROR<: can't rename fixed extension back to original, leaving as is...
|
|||
|
-> GUS had to rename an archive to a name with the fixed extension
|
|||
|
required by archivers like DWC, HAP or HPACK and now it can't rename
|
|||
|
the file back to the original name. This can normally only happen
|
|||
|
in a multitasking environment, for instance when the archive file
|
|||
|
was renamed, moved or deleted before GUS could rename it back.
|
|||
|
GUS issues this error message and leaves the file as it was.
|
|||
|
|
|||
|
>ERROR<: DOS couldn't execute <20>XXX<58> due to: YYY
|
|||
|
-> GUS was unable to load and execute the unpacker program.
|
|||
|
The path and name of that unpacker will be inserted in the error
|
|||
|
message instead of "XXX" and the reason will be shown instead of
|
|||
|
"YYY". That reason will be one of 9 possible problems
|
|||
|
described in section 3.1. General Usage under DOS, EXIT CODES.
|
|||
|
If the error code returned by DOS should be unknown to GUS, it
|
|||
|
will display "DOS ERROR" followed by the error number instead.
|
|||
|
|
|||
|
>ERROR<: error locating directory XXX
|
|||
|
will unpack in current directory.
|
|||
|
-> You specified a target directory GUS was unable to find. The
|
|||
|
target path specification will be ignored and the unpacking will
|
|||
|
be done in the current directory.
|
|||
|
|
|||
|
>ERROR<: <20>XXX<58> is no archive file or a type unkown to GUS!
|
|||
|
-> GUS encountered a file that is not one of the known archive
|
|||
|
types. GUS will continue with the next file, if there is one.
|
|||
|
"XXX" will be replaced by the actual archive name.
|
|||
|
|
|||
|
>ERROR<: no such file(s)!
|
|||
|
-> GUS was started with an archive filename specification, but no
|
|||
|
such file could be found. GUS will abort with errorlevel 221.
|
|||
|
|
|||
|
>ERROR<: no such mail directory!
|
|||
|
-> you specified a mail inbound directory (/M switch) that GUS was
|
|||
|
unable to locate. GUS will end with errorlevel 220.
|
|||
|
|
|||
|
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
<20> 8. ACKNOWLEDGEMENTS <20>
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
|||
|
+ PKUNPAK FAST! Archive Extract Utility Version 3.61 08-02-88
|
|||
|
Copyright (c) 1986-1988 PKWARE Inc. All Rights Reserved.
|
|||
|
|
|||
|
+ PKUNZIP (R) FAST! Extract Utility Version 2.04g 02-01-93
|
|||
|
Copr. 1989-1993 PKWARE Inc. All Rights Reserved. Shareware Version
|
|||
|
PKUNZIP Reg. U.S. Pat. and Tm. Off.
|
|||
|
|
|||
|
+ XARC - to decompress a standard ARC Format Archive, Ver 7.1,
|
|||
|
October, 1990
|
|||
|
Copyright 1990 by System Enhancement Associates, Inc.;
|
|||
|
ALL RIGHTS RESERVED
|
|||
|
|
|||
|
+ ARJ 2.39d PRE-RELEASE Copyright (c) 1990-93 Robert K Jung. Mar 06 1993
|
|||
|
All Rights Reserved. U.S. Patent No. 5,140,321 and patent pending.
|
|||
|
|
|||
|
+ DWC - Archive utility, Release 5.10, Created 3/07/90
|
|||
|
(C) Copyright 1986-90 by Dean W. Cooper; All rights reserved.
|
|||
|
|
|||
|
+ HA 0.98 Copyright (c) 1993 Harri Hirvola
|
|||
|
|
|||
|
+ Hamarsoft (R) Hap&Pah TM 3.00
|
|||
|
Copyright (C) 1992 By Harald Feldmann.
|
|||
|
Publicly Distributed evaluation copy.
|
|||
|
|
|||
|
+ HPACK - The multi-system archiver Version 0.78a0 (shareware version)
|
|||
|
For Amiga, Archimedes, Macintosh, MSDOS, OS/2, and UNIX
|
|||
|
Copyright (c) Peter Gutmann 1989 - 1992. Release date: 1 Sept 1992
|
|||
|
|
|||
|
+ Hyper - Pack Utility 2.5
|
|||
|
Copyright (c) 1989,1990 P. Sawatzki and K.P. Nischke
|
|||
|
|
|||
|
+ LHA version 2.55b Copyright (c) Haruyasu Yoshizaki, 1988-92
|
|||
|
|
|||
|
+ Pak 2.51 Copyright 1988-90 NoGate Consulting
|
|||
|
|
|||
|
+ SQZ -- Squeeze It(1.08.3), Jan 24 1993, Copyright J I Hammarberg
|
|||
|
|
|||
|
+ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> UltraCompressor II (tm)
|
|||
|
<20><> <20><> <20><> <20><> <20><> "The new way of archiving."
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> -NL "Fast, reliable and superior compression."
|
|||
|
<20><> <20><> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
<20><> <20><> <20><><EFBFBD><EFBFBD> <20><> (C) Copyright 1994, Ad Infinitum Programs,
|
|||
|
all rights reserved
|
|||
|
|
|||
|
+ Zoo archiver, Version 2.10 (1991/07/09 02:10:34)
|
|||
|
(C) Copyright 1991 Rahul Dhesi -- Noncommercial use permitted
|
|||
|
|
|||
|
+ ARCE Copyright (c) 1986-91 Vernon D. Buerg.
|
|||
|
Extract ARC files, Version 4.0g, 4/12/91. All rights reserved.
|
|||
|
|
|||
|
+ Conference Mail - Revision: 4.07 by Bob Hartman, FidoNet Node 132/101
|
|||
|
(C) Copyright 1986, 1987 by Spark Software Inc. All rights reserved.
|
|||
|
|
|||
|
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
<20> 9. REVISION HISTORY <20>
|
|||
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
|||
|
Ver. Comment
|
|||
|
~~~~ ~~~~~~~
|
|||
|
1.80 - Supported the new Dutch archiver UltraCompressor II (UC2).
|
|||
|
It performs consistently better than either PKZIP or ARJ, but HA
|
|||
|
and HPACK are still the best compressors around (albeit very
|
|||
|
slow).
|
|||
|
- Added the '/V' (View archive contents) command. Originally, I
|
|||
|
wanted to implement my own archive lister. However, since I still
|
|||
|
don't have the exact layout for a couple of archive types, I
|
|||
|
didn't want to keep you waiting any longer and provided the lister
|
|||
|
by shelling out to the appropriate archiver.
|
|||
|
- The GUS help screen will now also be shown when the user types
|
|||
|
GUS /?, GUS -?, GUS /h, GUS -h, GUS /H or GUS -H.
|
|||
|
Suggested by Hans Siemons (2:512/149).
|
|||
|
- If the drive is full (0 bytes free), GUS is unable to move
|
|||
|
a bad mailarchive away. GUS v1.70 would check the drive space
|
|||
|
and abort the move if less than 32 bytes would be free.
|
|||
|
32 bytes is indeed what's needed to create a new directory entry,
|
|||
|
but unfortunately this doesn't help much since DOS always needs
|
|||
|
the size of one cluster to allocate new space.
|
|||
|
This version of GUS will therefore check if at least the size of
|
|||
|
one cluster (or 256 bytes for HPFS volumes) is free.
|
|||
|
Error reported by Peter Smink (2:285/1).
|
|||
|
- GUS file /I will yield errorlevel 221 if the file doesn't exist,
|
|||
|
instead of errorlevel 1 reported by the previous version which was
|
|||
|
confusing (since it could also mean GUS found an ARC archive).
|
|||
|
Changed two errorlevels:
|
|||
|
ERROR ErrLev v1.70 ErrLev NOW
|
|||
|
^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^
|
|||
|
No Such Mail Directory! 0 220
|
|||
|
No Such File(s)! 1 221
|
|||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|||
|
Problem reported by Kianusch Sayah-Karadji (2:310/3.80).
|
|||
|
- Just in case you were wondering: I'm using Borlands BPwO v7.0
|
|||
|
these days for compiling GUS. No, the sourcecode for GUS doesn't
|
|||
|
contain any OOP. I wanted to keep GUS small and OOP has a tendency
|
|||
|
to blow the size of EXE files to huge proportions.
|
|||
|
|
|||
|
1.70 - Added support for the Dutch HAP archive format, which compresses
|
|||
|
at least 10% better than PKZIP v2.04.
|
|||
|
- Added support for the Finnish HA archiver, which beats PKZIP
|
|||
|
v2.04 by more than 20%!
|
|||
|
- Added the "/D" or Delete option.
|
|||
|
- Added detection of SFX (self-extracting) archives.
|
|||
|
GUS will recognize all EXE variants of the known archive types.
|
|||
|
Note: GUS can't handle COM self-extractors made by LHarc 1.xx,
|
|||
|
only the EXE sfx version.
|
|||
|
- If the drive is full (0 bytes free), GUS is unable to move
|
|||
|
a bad mailarchive away. It would take quite some time before
|
|||
|
GUS would give up trying, though. Fixed: GUS will check
|
|||
|
the drive space and abort the move if less than 32 bytes are
|
|||
|
free. (32 bytes is what's needed to create a new directory entry.)
|
|||
|
- If a file could not be opened for the purpose of determining
|
|||
|
the archive type, a runtime error 103 resulted. Fixed.
|
|||
|
Added a message: <20>WARNING: unable to determine archive type due
|
|||
|
to error while opening file<6C>.
|
|||
|
- Some people experienced strange `runtime 162' errors.
|
|||
|
Here's what happened...
|
|||
|
GUS tried to open the NUL device and create it. Some environments
|
|||
|
may have objected to that.
|
|||
|
I changed the code so that the NUL device is opened for writing
|
|||
|
only (no creation) and only if the /Q option is used, not always
|
|||
|
like before.
|
|||
|
This still caused some systems to yield that runtime error, so I
|
|||
|
added an error check and disabled the Quiet mode in case the NUL
|
|||
|
device cannot be opened. That should solve the `runtime 162'
|
|||
|
problem once and for all...
|
|||
|
Added a message: <20>WARNING: can't open NUL device -- Quiet command
|
|||
|
ignored<65>.
|
|||
|
(This problem appeared mostly with systems that loaded TSRs and
|
|||
|
redirected their output to the NUL device. That causes DOS to
|
|||
|
open but never close the NUL device, so when GUS tries to open
|
|||
|
it, a sharing violation (runtime 162) occurs.)
|
|||
|
Thanks to Wim Van Sebroeck, 292/862 and Bert Hubert, 2:281/506.40
|
|||
|
for assisting me in finding a fix for this.
|
|||
|
|
|||
|
1.61 - Fixed a bug which caused GUS to use the wrong archive name
|
|||
|
when operating with an archiver that requires a fixed archive
|
|||
|
extension (DWC and HPK at this time).
|
|||
|
|
|||
|
1.60 - Added support for the HPACK archiver from Peter Gutmann, which
|
|||
|
makes the absolutely smallest archives at this time.
|
|||
|
- Added support for the Swedish SQZ archiver, which compresses
|
|||
|
better than ARJ 2.30 or the new PKZIP 1.93a!
|
|||
|
- Previously, the first three archive types were: ARC (#1), ARJ
|
|||
|
(#2) and ARC+ (#3). From now on, ARC+ will be #2 and ARJ #3.
|
|||
|
This is more logical. (The reason for the previous order was
|
|||
|
that GUS uses the abbreviation ARp internally for ARC+, and
|
|||
|
ARp comes after ARJ alphabetically.)
|
|||
|
- Due to a string length mismatch, GUS couldn't tell whether
|
|||
|
UsePath or UsePassword options were supported or not. The
|
|||
|
UsePath problem was reported by Wim Van Sebroeck (2:292/862)
|
|||
|
and by checking that, I discovered that the same was true for
|
|||
|
the UsePassword option. Corrected.
|
|||
|
- Added code to allow the Path option to replace a command
|
|||
|
instead of being added to it. (Indicated by `<' as the first
|
|||
|
character in the Path option in GUS_WCFG.PAS)
|
|||
|
Only needed for ARJ and SQZ at this time. (The previously used
|
|||
|
`e -jf' for ARJ doesn't seem to work equal to `x', so that was
|
|||
|
changed.)
|
|||
|
- GUS `forgot' about the specification indicating which files had
|
|||
|
to be extracted, once an ARC+ type archive had been worked on.
|
|||
|
Reported by Wim Van Sebroeck (2:292/862) and fixed.
|
|||
|
- If the specified target directory ended with a backslash (\),
|
|||
|
GUS wouldn't recognize it as the target directory. Reported by
|
|||
|
Wim Van Sebroeck (2:292/862) and fixed.
|
|||
|
- Extract command for ARJ changed from `e -n' to `e -uy' and
|
|||
|
modified some other archiver parameters in order to make the
|
|||
|
behaviour of various archiver programs more homogenious.
|
|||
|
GUS without /R option:
|
|||
|
(1) XARC and HYPER will ask you if they should overwrite older
|
|||
|
files. Unfortunately, these programs have no command
|
|||
|
options to work in batchmode and avoid this.
|
|||
|
(2) HPACK will never overwrite older files because it doesn't
|
|||
|
have an option for this.
|
|||
|
(3) all other archivers will overwrite older files and skip
|
|||
|
the rest.
|
|||
|
GUS with /R will cause existing files always to be
|
|||
|
overwritten.
|
|||
|
- If someone would combine several real commands on the GUS
|
|||
|
commandline, the effects might not be what one desires.
|
|||
|
Example: GUS * /T /R would start unpacking when one would
|
|||
|
expect it to ignore the replace command and do a test only.
|
|||
|
So I have changed the behaviour. The /T command now has priority
|
|||
|
over all other commands. This means that if you specify multiple
|
|||
|
commands, the /T (test) command will be executed and all others
|
|||
|
ignored. If you specify /P and /R, the /P has a higher priority
|
|||
|
and will be executed. The /R will be ignored. The priority of a
|
|||
|
command increases if it can do less damage. So the priority order
|
|||
|
for the GUS commands is in descending order: /I /T /P /R
|
|||
|
(remember: the other switches are options, not commands!).
|
|||
|
This problem was discovered after a tip by Alex Cleynhens
|
|||
|
(2:292/500).
|
|||
|
- Additional check for DWC archives. Apart from the string `DWC'
|
|||
|
in the last 1K of the file, it is now required that this string
|
|||
|
is the last item in a 27 byte structure for the file to be
|
|||
|
identified as a DWC archive.
|
|||
|
- GUS reported a runtime error when trying to rename an archive to
|
|||
|
a fixed extension and if the new name existed already. Reported
|
|||
|
by Wim Van Sebroeck (2:292/862). Fixed: the name is now
|
|||
|
incremented. Modified the routine which moves bad mailarchives
|
|||
|
to the BADARC.GUS subdirectory as well: if a file with the
|
|||
|
same name already exists in the BADARC.GUS subdirectory, the
|
|||
|
extension of the file to be moved is incremented.
|
|||
|
- GUS had a problem if the target directory was a root directory.
|
|||
|
In that case, it specified only the drive instead of the root
|
|||
|
directory. Reported by Wim Van Sebroeck (2:292/862). Fixed.
|
|||
|
- HPACK seems to require that its archives have a fixed extension
|
|||
|
of .HPK (like DWC does). GUS directory /M /T doesn't move bad
|
|||
|
archives into the BAD_ARC.GUS directory. Reported by Peter Smink
|
|||
|
(2:285/1). Fixed.
|
|||
|
- Various changes to the documentation.
|
|||
|
|
|||
|
1.50 - Added the /N (/5) switch to prevent GUS using or creating
|
|||
|
paths embedded within archives.
|
|||
|
- Made this switch automatic while working with mail archives
|
|||
|
(/M). Thanks to John Lots (2:512/36.3@fidonet.org) and Eef
|
|||
|
Hartman (2:281/603.5) for suggesting this and detecting the
|
|||
|
problem with this in GUS 1.40.
|
|||
|
/N is now also automatically invoked with /P and /T.
|
|||
|
- Changed the way the configuration information is stored a bit,
|
|||
|
since there was a useless amount of space being reserved for
|
|||
|
the "Unknown" type, which of course shouldn't have been saved.
|
|||
|
- Fixed a minor problem which caused a runtime error when
|
|||
|
GUS.EXE was given a read/only attribute. Thanks to Rob
|
|||
|
Essers (2:283/406.2) for reporting this.
|
|||
|
- Cleaned up the batchfile listing in section 3.3 a bit.
|
|||
|
Thanks to Roelof Heuvel (27:3331/5000@signet.ftn) for the
|
|||
|
suggestion.
|
|||
|
- Fixed a minor problem which caused GUS to not append '.*'
|
|||
|
to a filename given without an extension when the pathame
|
|||
|
would contain a dot somewhere. Thanks to Hans Siemons
|
|||
|
(2:285/214@fidonet.org) for reporting it.
|
|||
|
- Because of a space inserted between the appropriate switch to
|
|||
|
supply a password to an unarchiver and the actual password it-
|
|||
|
self, encrypted archives could never be unpacked. This is now
|
|||
|
fixed.
|
|||
|
- Made minor modifications for PKUNZIP 2.00, due to some changes
|
|||
|
in the way that one handles its command options.
|
|||
|
- The `use path' option was always supplied with the ZOO unpack
|
|||
|
commands. Corrected.
|
|||
|
|
|||
|
1.40 - Removed MDCD archive support again, since nobody was likely
|
|||
|
to use it -- unless you're looking for the worst performing
|
|||
|
archiver ever, of course.
|
|||
|
- Added support for the new LHA version 2 archiver from Yoshi,
|
|||
|
which succeeds LHARC. The previous version of GUS could
|
|||
|
already handle the new compression, but I didn't expect the
|
|||
|
name of the program to be changed.
|
|||
|
- Added support for the ARJ archiver program from Robert K.
|
|||
|
Jung, which yields nearly always the best compression and
|
|||
|
has a lot of features.
|
|||
|
- Added support for the HYPER archiver program from Germany,
|
|||
|
which seems to outperform every other archiver on 600..800K
|
|||
|
logfiles ONLY. Weird.
|
|||
|
- Added support for ARCfiles made by the new ARC version 7
|
|||
|
compressor from SEA. At this time, only one public domain
|
|||
|
extractor is available, which unfortunately lacks almost
|
|||
|
every feature GUS has to offer.
|
|||
|
My thanks to Donn Bly (1:236/7@fidonet.org) and Jeffrey
|
|||
|
Nonken (1:273/715@fidonet.org) for providing me with all the
|
|||
|
information on the ARC7+ archive format and the XARC
|
|||
|
program.
|
|||
|
- GUS is now fully commandline compatible with Vernon Buerg's
|
|||
|
ARCE program. All of ARCE's switches are supported - except
|
|||
|
for /5, which prevents ARCE from creating subdirectories
|
|||
|
contained within ARCfile entries.
|
|||
|
- GUS provides two extra options: /I will identify an archive
|
|||
|
type by means of the exitcode (errorlevel) and /M will
|
|||
|
unpack and delete mailarchives in Fidonet Technology
|
|||
|
Networks.
|
|||
|
- BUGFIXES:
|
|||
|
* cleaned up handling zero-length and read/only files.
|
|||
|
From now on, GUS won't abort with a runtime error on
|
|||
|
those.
|
|||
|
* you could only specify one single file to extract on GUS's
|
|||
|
commandline, although the help screen and manual suggested
|
|||
|
you could give more than one filespec.
|
|||
|
That's also corrected now, so you can indeed specify
|
|||
|
multiple files.
|
|||
|
- OTHER IMPROVEMENTS:
|
|||
|
* the code which detects the archive type has been completely
|
|||
|
re-written and now is a *lot* faster than before!
|
|||
|
|
|||
|
1.31 - This version was never released, but mentioned in the
|
|||
|
documentation of the ARCA*Simulator v2.31 (ASIM_231.LZH).
|
|||
|
|
|||
|
1.30 - This version was never released, but mentioned in the "Latest
|
|||
|
Software Versions" column of the FidoNews magazine.
|
|||
|
|
|||
|
1.20M Added MDCD archives, corrected an error which made GUS not
|
|||
|
recognize uncompressed file entries in an LZH archive, made sure
|
|||
|
the new compression method of PAK is supported, added features to
|
|||
|
allow selection of files and target directory for unpacking.
|
|||
|
This is a maintenance release, hence the 'M' behind the version
|
|||
|
number.
|
|||
|
|
|||
|
1.10 - Added LZH archives, and changed the way DWC archives are
|
|||
|
identified in order to identify them even if up to 1K of rubbish
|
|||
|
is appended to the end of a DWC archive. This is useful for DWC
|
|||
|
archives which have been transferred by means of an Xmodem
|
|||
|
protocol.
|
|||
|
|
|||
|
1.00 - Base version. (Turbo Pascal 5.0)
|
|||
|
_______________________________________________________________________(eof)__
|