ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º ÛßßßßßßÛ Û Û ÛßßßßßßÛ º º Û Û Û Û º º Û ßßÛÛ Û ÛÛ ßßßßßßÛÛ º º Û ÛÛ Û ÛÛ Ü ÛÛ º º ÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛ º º ðððððððððððððððððððððððððððð º º General Unpack Shell º º version 1.95 for DOS º ÈÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑͼ ³ Copyright (C) 1995 and written by ³ ³ Johan Zwiekhorst ³ ³ - ALL RIGHTS RESERVED - ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 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 Cost and 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 Child Program 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/ARC+/PAK 6.3. How GUS identifies SFX (self-extracting) archives 6.4. Mandatory order of scanning recognition patterns 7. RUNTIME MESSAGES [A] General information messages [B] Warning messages (non-fatal errors) [C] Fatal error messages 8. ACKNOWLEDGEMENTS 9. REVISION HISTORY ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ ÕÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͸ ³ 1. LEGAL STUFF ³ ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ; This software is copyrighted (C) 1989, 1990, 1991, 1992, 1993, 1994, 1995 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 "shareware". SHAREWARE software may be copied and distributed freely IF: * NO FEE IS CHARGED FOR USE, COPYING OR DISTRIBUTION (you may recover media and postage expenses, however) * 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 a self-extracting RAR type archive with authenticity verification. RAR is a Russian archiver that compresses very well. I made the archive self- extracting because I couldn't be sure that everyone would have RAR.EXE or UNRAR.EXE. At the time this is written, the latest version of RAR is 1.52, so look for RAR1_52.EXE. The small freeware UNRAR program is available in both a DOS and an OS/2 version. The DOS program can be found inside the RAR1_52.EXE package; the OS/2 program is available as a separate archive called UNRAR100.ZIP. Note, that recompressing the original GUS archive could result in a bigger archive. 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@nfe.be Compuserve >INTERNET:jz@nfe.be FIDOnet 2:292/100 2:292/118 Main support BBS: (please call this system while Tripod BBS is off-line) Tornado Belgium BBS, sysop Frank Van Uffelen Phone lines: +32-16-640582 V.34 +32-16-640465 V.34 +32-16-640466 V.32bis Network addresses: Internet fvu@nfe.be Compuserve >INTERNET:fvu@nfe.be FIDOnet 2:292/600 The Owner can be contacted at the following address: Johan Zwiekhorst Dorpheidestraat 63 3590 DIEPENBEEK (Belgium) Phone [not yet available] during office hours, Central European Time. Cost and Payment ================ COMMERCIAL ~~~~~~~~~~ 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. The price of the product varies with the number of licences ordered. NON-COMMERCIAL ~~~~~~~~~~~~~~ For all others, a small contribution is asked. This contribution supports the Author and encourages him to write more useful software and keep developing this product. Note that this kind of shareware 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. I don't believe in crippling the software or otherwise annoying you into paying. If you want to keep using it but not pay for it, so be it. It's not a very nice attitude, but I'll live. Any natural person who really can't afford to pay, is hereby allowed to use it for free. (Note: if you can afford to buy cigarettes, beer or tickets to your local movie theatre regularly, you can also afford to pay for this software.) This software may also be used for free by those who have made a substantial contribution to the Fidonet community, as Vince Perriello and Bob Hartman have by creating the BinkleyTerm mailer. Here's to ya, guys! If you think you deserve to use this software for free as well, then write to me. You may pay whatever you feel this software is worth. If you pay at least U.S. $15 (BEF 500, NLG 30, DEM 25), you will receive a 3.5" floppy diskette with a personalized "registered" version of GUS. Immediately after receiving your payment, I will send you an acknow- ledgement and a list of the latest versions of all freeware I wrote, unless my postage and handling would cost me as much or more than what you paid. Payments to the Author can be sent in cash (no coins please!) to the address mentioned above or transferred to the following bank account: Bank Brussel Lambert (Belgium) - account number 335-0076382-89 People outside Belgium: the cheapest way in which you can pay is as follows... Go to your bank and ask for one banknote of 500 Belgian franks. It will have a blue print. Put the banknote in an envelope together with a nice letter expressing your immense gratitude for creating GUS :-) and send it to me. Make sure the banknote is not visible through the envelope! ***NOTE THAT THIS IS FOR NON-COMMERCIAL SITUATIONS ONLY! For all payments made: please specify NAME and VERSION NUMBER of the product! Payments are valid for THREE sub-versions of the software. (The number before the dot in the version number indicates the main version, the digit right after the dot is the sub-version and the digit after that one indicates a patch or bugfix.) This means that if you paid for version 1.6x, your payment is valid until version 1.90 is released - then you should renew it. Consider this: GUS v1.00 was released in 1989 and GUS v1.95 in 1995. So we're talking about 10 sub-versions (0 to 9) in 6 years. If this licence had been valid from day one, you should have paid three times for GUS in these six years. That also means that GUS would cost you an average of about $7.50 per year. Not exactly backbreaking, is it? Contributions received thusfar for GUS: NON-COMMERCIAL COMMERCIAL ~~~~~~~~~~~~~~ ~~~~~~~~~~ Belgium : 8 people (none) Canada : 1 person Italy : 1 person Netherlands : 1 person United Kingdom: 1 person United States : 2 people Impressive, huh? :-} What you should have received: ============================== You should have received the file GUS_195.EXE - (47275 bytes) with the following contents: ÚÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ filename ³ ³bytes³ ³ description ³ ÀÍÍÍÍÍÍÍÍÍÍÙ ÀÍÍÍÍÍÙ ÀÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÙ FILE_ID .DIZ 357 Short description for BBS sysops. GUS .DOC 80328 This documentation. GUS .EXE 14978 The program file. CRC/32 = d26e8d16 GUS_WCFG.PAS 7026 TP source for a program CRC/32 = b2068b2f that writes a new configur- ation into GUS.EXE. While viewing, testing or unpacking this self-extracting RAR archive, it should display the following message on your screen: ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ Verifying authenticity information ... Ok ³ ³ ³ ³ Archive GUS_195.EXE ³ ³ modified at 19:50:00 15 Mar 1995 ³ ³ by Johan Zwiekhorst ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 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 if you're using VALIDATE v0.4: File Name: gus.exe gus_wcfg.pas Size: 14,978 7,026 Date: 3-15-1995 3-15-1995 File Authentication: Check Method 1 - CED2 7171 Check Method 2 - 0EF3 0A9A and the following if you're using VALIDATE v2.00 and up: Validate version 2.00 Copyright (c) McAfee, Inc. 1994. All rights reserved. (408) 988-3832 EVALUATION COPY Directory of GUS\ GUS EXE 14978 03-15-95 19:50 2D91 72E9 GUS_WCFG PAS 7026 03-15-95 19:50 4DF9 74D0 3 file(s) were validated GUS is available for several operating systems: ÚÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³system³ ³look for³ ³comment ³ ÀÍÍÍÍÍÍÙ ÀÍÍÍÍÍÍÍÍÙ ÀÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÙ DOS GUS_*.* current release: GUS_195.EXE OS/2 GUS2_*.* (will be available starting with v2.00) Win/NT GUSw_*.* (not yet available, but does anyone want this?) ÕÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͸ ³ 2. INTRODUCTION ³ ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ; 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 has to be uncompressed, or where a certain file should 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. ÕÍÍÍÍÍÍÍÍÍ͸ ³ 3. USAGE ³ ÔÍÍÍÍÍÍÍÍÍ; 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 30K 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 32K 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 ®compressed_filespec¯ [filespec(s)] [target_path] [switch(es)] (Entries enclosed within [] are optional, those within ® ¯ are mandatory. The [] and ® ¯ signs serve to indicate this only and should never be typed!) ®compressed_filespec¯ ::= 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, RAR, 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 wildcards. [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 /S : Scan for viruses in unpacked files /T : Test archive integrity /V : View archive contents /Bdir : Bad archives will be moved to the specified directory /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 specified inbound mail 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 in order to execute 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, replacing all existing ones and performing a virus scan on the unpacked files: > GUS UTILS.ANY *.COM *.EXE D:\UTILS /R/N/S 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 Now you can use this: LA KBUI_202 *.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 embedded paths, if any: > GUS PW*.ZIP D:\PWS /GJiMmY EXIT CODES: ----------- GUS will yield an errorlevel of 0 if all operations succeeded or if only non-fatal errors (warnings) occurred. 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) 222 = the last archive file handled is bad or of a type unknown to GUS and the unpacker program (if at all started) returned an errorlevel of 0 255 = bad configuration data appended to GUS.EXE Note, that GUS will not be able to search the PATH environment variable after the 255th character, if your PATH should be that long. 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: à) 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 these 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 the next paragraph 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. á) Have GUS unpack all mailarchives BEFORE you invoke your mailprocessor. --> This is the preferred method. <-- You do this by starting GUS with the following command-line: GUS ®Inbound_directory¯ /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 15, 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: RAR SQZ UC2 ZIP ZOO Errorlevel : 11 12 13 14 15 ATTENTION! These errorlevels will be returned ONLY if /I is used and ~~~~~~~~~~ NO OTHER values are possible then. 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 15 if errorlevel 14 goto IsZIP if not errorlevel 4 if errorlevel 3 goto IsARJ goto Finish :IsZIP PKZIP -z %1 ÕÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͸ ³ 6. HOW GUS IDENTIFIES ARCHIVES ³ ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ; GUS recognizes archives by searching for well-defined patterns in the archive file. Such a pattern can be from 1 to 7 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 nested archives (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 paragraph 6.2. ARJ 0 0x60 0xEA HA 0 'HA' Offset 4 binary ANDed with 0xFC should yield 0x20. This is an additional check that GUS performs. 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 buffer 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 (word size: 2 bytes) and DirStrucSize=34 (byte size) 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 Rahul Dhesi's program would be recognized this way. ZOO archives made by an Amiga or a computer running Unix would not necessarily be recognized! SQZ 0 'HLSQZ' RAR 0 'Rar!' 0x1A 0x07 0x00 6.2. Record layout of ARC/ARC+/PAK ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The record which describes each archive entry: .--------------------------------------------------. |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); | | Done := false; | | YieldARC := ARC; | | repeat | | {$I-} | | blockread(F, ArcHeader, sizeof(ArcHeader)); | | {$I+} | | if IOresult = 0 | | then begin | | if ArcHeader.Method >= PAKid | | then begin | | Done := 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 Done := true | | until Done | |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. Should you encounter other self-extracting archive types which GUS doesn't recognize, please let me know. Don't forget to mention, however, by which program those self-extractors were made. 6.4. Mandatory order for scanning recognition patterns ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 - RAR 2 - SQZ 3 - ZIP 4 - HPK 5 - UC2 6 - HAP 7 - ZOO 8 - LZH 9 - HA 10 - ARJ 11 - DWC 12 - ARC/ARC+/PAK/HYP This order is mandatory because it guarantees the greatest chance for a correct recognition. Every other order would increase 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 the one used by Jeffrey Nonken's PolyXarc, for example): I still haven't found a good method to have GUS determine auto- matically 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 Borland Pascal source for GUS is about 1100 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! ÕÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͸ ³ 7. RUNTIME MESSAGES ³ ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ; 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]: ®unpacker_commandline¯ -> this is shown in Quiet mode (/Q switch) instead of the archiver's screen output. The ®unpacker_commandline¯ 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 (non-fatal errors) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 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. The unpacked archive will not be deleted. 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 ®X¯ 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: 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: 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: ®XXXXXXXXX.XXX¯ suddenly disappeared! -> GUS was working with an archive file which suddenly vanished. Perhaps you're using a multitask or multiuser system and another task deleted or moved the file? Anyway, GUS will report it and try to continue working as best as it can. WARNING: cannot create new filename for rename or move! (Disk full?) -> while trying to rename (like when an archiver needs 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 archive) 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. WARNING: cannot erase incomplete target ®XXXXXXXX.XXX¯ WARNING: cannot erase original after successful copy ®XXXXXXXX.XXX¯ -> these warnings can occur when GUS was trying to move a file (normally a bad archive) to another drive, when the file has to be physically copied and after successful completion deleted. If something goes wrong during a physical copy, GUS will abort the copy and delete the incomplete target. If that isn't possible, the first warning is issued. If the copy was successful, GUS will delete the original file so only the identical target will remain. If the original cannot be deleted for whatever reason, GUS will issue the second warning. WARNING: moving bad archive HHHHHHHH.XXX to d:\badarcdir\ -> 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, or to the directory specified by the /B switch. This warning will also be shown without in normal mode, but only if /B was used. The actual name of the bad archive will be inserted in the message instead of "HHHHHHHH.XXX" and "d:\badarcdir" will be replaced by the path to the default or specified bad archive directory. WARNING: 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. 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. WARNING: the password option cannot contain a `<' character - IGNORED. -> this warning message is of course not possible when using GUS from the DOS commandline, since DOS will interpret all `<`, '>' and '|' symbols first, providing GUS with arguments not containing those symbols. If GUS is called from another program, it is of course possible to include this type of illicit symbols in various commands or options. If you do, this warning will be given. WARNING: 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&PAH 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. 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 just fine. WARNING: 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. WARNING: ®XXX¯ 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. GUS will not abort, but if this was the LAST archive processed then it will return errorlevel 222. [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 bottom of its 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<: DOS couldn't execute ®XXX¯ due to: YYY -> GUS was unable to load and execute the specified child program. The path and name of that child program 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<: 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. ÕÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͸ ³ 8. ACKNOWLEDGEMENTS ³ ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ; + 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.41 Copyright (c) 1990-93 Robert K Jung. Jun 03 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.999á Copyright (c) 1995 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 + RAR 1.52 Copyright (c) 1993-94 Eugene Roshal 17 August 1994 Registered to Johan Zwiekhorst + SQZ -- Squeeze It(1.08.3), Jan 24 1993, Copyright J I Hammarberg + °ÛÛÛ °ÛÛÛ °ÛÛÛÛ UltraCompressor II (tm) revision 2 °Û °Û °Û °Û °Û "The new way of archiving." °ÛÛÛÛÛ °Û °ÛÛÛÛ -NL "Fast, reliable and superior compression." °Û °Û °Û °Û ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ °Û °Û °ÛÛÛ °Û (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-92 Vernon D. Buerg. Extract ARC files, Version 4.1a, 4/12/92. 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. + Û Û ÛßßßßÛ Û Û ÛßßßßÜ Û Û ßßÛßß Û Üß Û ßÜ Üß Û Û Û Û Û ÛÜÜÛ ÛÜÜÜ ßÛß ÛßßßßÜ Û Û Û ÛÝ ßÜ ÛÝ ÛÝ ÛÝ ÛÝ ÛÝ Û ÛÝ ÛÛ ÞÛ ÛÛÜÜÛÛ ÛÛ ÛÛÜÜÜÛ ÛÛÜÜÜÛ ÜÜÛÛÜ ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ· º Keyboard driver U.S. International º ÓÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĽ Copyright (C) 1994 and written by Johan Zwiekhorst úALLúRIGHTSúRESERVEDú ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ version 2.02 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ KEYBoard driver U.S. International (KEYBUI) will allow you to type accented characters, draw text graphic characters, blank your screen and more! All this in a very easy way and with a standard U.S. QWERTY keyboard. Takes only 1.5K while resident. + Scan V.2.1.0 Copyright (c) McAfee, Inc. 1994. All rights reserved. ÕÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͸ ³ 9. REVISION HISTORY ³ ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ; Ver. Comment ~~~~ ~~~~~~~ --> 2.00 [will be released in a few months, probably mid 1995] or should I call it GUS'95 and keep pushing back the release date each few months? :-) = Please write to me and let me know what new features you would like to see in GUS. Ideas so far: + archiver output in a pop-up window; + a full-screen version of GUS with nice colours; + interactive full-screen GUS with pull-down menues (this would make it a direct competitor for SHEZ, but I'm not sure if I want to devote my time to this since I think SHEZ is very good); + OS/2 version; + Win/NT or Win32 version - if people want it. So far, no requests for this. = So let me know what you think! 1.95 [15-Mar-1995] ! This is the _LAST_ version that will run on Intel 8088 or 8086 CPUs! For all versions hereafter, you will need at least a NEC V20 or Intel 80188 (or equivalent) CPU. + Some people want to redirect GUS' output to a logfile and have asked me to provide for a more modest title screen for GUS. So here it is. In case of redirection, the big header will remain on screen while a small one is written to the target device or file. * New: people who register will now receive a "personalized" version of GUS. * New: /S will invoke a virus detector in order to scan the freshly unpacked files for viruses. * New: /Bdir will move bad or unknown archives to the specified directory. Attention! Files resulting from an abrupted unpack will not be deleted by GUS. Thanks to Vic Bates (2:250/143.16) for his suggestions. ! GUS will from now on be released in another archive format. I used LZH thusfar because it is cheap (as in free) and has a very good compression. Unfortunately, it doesn't have authenticity verification. So I waited until another archiver appeared on the scene which would compress better than LHA, have authenticity verification and a FREE unpack program. RAR meets these requirements. Therefore, GUS will from now on be released in a self-extracting RAR archive with authenticity verification and archive lock enabled. Any tampering with the archive will remove the authenticity OK message. The self-extraction code will of course make the archive file size larger than it should be, but since RAR is a very new archiver I didn't want to assume everyone would have the UNRAR.EXE or RAR.EXE programs in their possession. If RAR becomes as widespread as ZIP or LZH, I will release future versions of GUS in a non-sfx RAR archive. 1.91 [05-Oct-1994] - While unpacking mailarchives, GUS would return errorlevel 0 if the archive type could not be detected or if there was something else wrong and the unpacker program didn't report it. This could cause the mailprocessor to delete an unprocessed file. Fixed. GUS will now return errorlevel 222 if the _last_ file encountered could not be handled properly. If GUS is dealing with mailarchives (/M switch), unknown types will be handled the same as bad mailarchives and thus moved to the special BADARC.GUS subdirectory. Thanks to Gerard van der Land (2:2802/110) for pointing this out to me. + Changed several messages from '>ERROR<' to 'WARNING' since they don't cause GUS to abort. + Changed the licence from 'freeware' to 'shareware'. Payment for non-commercial situations is still on a more or less voluntary basis, though. 1.90 [07-Aug-1994] * Supported the new Russian archiver RAR. It performs about comparable to the Dutch UC2 archiver. * Supported some new features of UltraCompressor II revision 2. - A system error would occur when GUS was used in an OS/2 DOS session and needed to shell out to one of the fixed extension archivers (DWC/HAP/HPK). That was due to a lack of stack space for GUS. Corrected. GUS now uses a stack of 8192 bytes. 1.80 [05-Feb-1994] * 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) and Alex Cleynhens (2:292/500). ! 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 [14-Apr-1993] * 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: ®WARNING: unable to determine archive type due to error while opening file¯. - 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: ®WARNING: can't open NUL device -- Quiet command ignored¯. (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 [21-Sep-1992] - 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 [20-Sep-1992] * 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 [15-Feb-1992] * 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 [25-Jun-1991] + 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 [1990] ! This version was never released, but mentioned in the documentation of the ARCA*Simulator v2.31 (ASIM_231.LZH). 1.30 [1989] ! This version was never released, but mentioned in the "Latest Software Versions" column of the FidoNews magazine. 1.20M [1989] * 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 [1989] * 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 [1989] ! Base version. (Turbo Pascal 5.0) _______________________________________________________________________(eof)__