hyc@umix.cc.umich.edu (Howard Chu) (04/14/88)
XXFor example, if you just received an archive named XX"JUNK.ARC" over a phone line, and you want to make XXsure that you received it properly, you could type: XX XX ARC t junk XX XXIt defeats the purpose of the T command to combine it XXwith N or W. XX XX XX XX_____________________ XX XXThe "C" (Convert) command is used to convert an XXarchive entry to take advantage of newer compression XXtechniques. This is occasionally desirable when a new XXversion of ARC is released. Please refer to the XXrevision history section for details on when new XXcompression methods were implemented. XX XXFor example, if you had an archive named "JUNK.ARC", XXand you wanted to make sure that all files with an XXextension of ".DOC" were encoded using the very latest XXmethods, you could type: XX XX ARC c junk *.doc XX XXOr if you wanted to convert every file in the archive, XXyou could type: XX XX ARC c junk XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXARC Page 12 XX ARC OPTIONS XX XX XX XXThis section describes the options which are available XXto modify how ARC works. Any of these options can be XXcombined with any of the commands, though the result XXmay not always be something you'd want to do. XX XX XX XX_______________________ XX XXThe "S" (Suppress compression) option can be combined XXwith any command that updates archive entries. These XXinclude Add, Move, Update, Freshen, and Convert. The XXeffect of the S option is to prevent any compression XXtechniques from being employed. This is intended to XXallow you to add a few files at a time to an archive XXquickly, and then later convert the archive to XXcompress everything at once. XX XXFor example, over the course of a day you might give XXeach of the following commands: XX XX ARC as junk *.txt XX ARC as junk *.mac XX ARC as junk *.doc XX XXAt the end of the day, when you have finished adding XXthings to the archive, you could have all of the XXarchive entries compressed at once by typing: XX XX ARC c junk XX XXYou could also decompress the archive by typing: XX XX ARC cs junk XX XXthough I can't imagine why you'd want to. XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXARC Page 13 XX________________ XX XXWhen ARC changes an archive (during an Add, Move, XXUpdate, Freshen, Delete, or Convert) it creates a new XXarchive with the same name, but with an extension of XX".$$$". For example, if you add a file to an archive XXnamed STUFF.ARC, then ARC will create a new archive XXnamed STUFF.$$$. ARC will read from your existing XXarchive and write out the new archive with any changes XXto the ".$$$" copy. XX XXNormally when ARC is finished it deletes the original XXand renames the new archive to the original name (ie. XXSTUFF.ARC goes away, and STUFF.$$$ becomes the new XXSTUFF.ARC). Among other things, this means that if XXanything goes wrong and ARC is unable to finish, then XXyour original archive will still be intact. XX XX XXIn some circumstances you may wish to retain the XXoriginal version of the archive as a backup copy. You XXcan do this easily by using the Backup option. Add XXthe letter "B" to your command, and ARC will rename XXyour original archive to have an extension of ".BAK" XXinstead of deleting it. XX XX XXIn other words, if you wanted to add "WASTE.TXT" to an XXarchive named "JUNK.ARC", but wanted to keep a backup XXcopy, then you would type: XX XX ARC ab junk waste.txt XX XXYour original archive would become "JUNK.BAK", while XX"JUNK.ARC" would contain the new "WASTE.TXT" file. XX XX XXIf you keep a backup of an archive which already has a XXbackup, then the older backup copy is deleted. XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXARC Page 14 XX___________________ XX XXARC prints three types of messages: warnings, XXcomments, and errors. XX XXWarnings are messages about suspected error XXconditions, such as when a file to be extracted XXalready exists, or when an extracted file fails the XXCRC error check. Warnings may be suppressed by use of XXthe "W" (Warn) command. You should use this command XXsparingly. In fact, you should probably not use this XXcommand at all. XX XXComments (or notes) are informative messages, such as XXnaming each file as it is added to the archive. XXComments and notes may be suppressed by use of the "N" XX(Note) command. XX XXErrors are actual system problems, such as running out XXof disk space. You cannot suppress errors. XX XX XXFor example, suppose you extracted all files with an XXextension of ".BAS" from an archive named "JUNK.ARC" XXThen, after making some changes which you decide not XXto keep, you decide that you want to extract them all XXagain, but you don't want to be asked to confirm every XXone. In this case, you could type: XX XX ARC xw junk *.bas XX XXOr, if you are going to add a hundred files with an XXextension of ".MSG" to an archive named "TRASH.ARC", XXand you don't want ARC to list them as it adds them, XXyou could type: XX XX ARC an trash *.msg XX XXOr, if you want to extract the entire contents of an XXarchive named "JUNK.ARC", and you don't want to hear XXanything, then type: XX XX ARC xnw junk XX XX XXA special case is provided when extracting files from XXan archive. One of the various warnings that can XXoccur is when a file being extracted already exists on XXdisk. Normally, ARC will stop and ask you if you want XXto overwrite the file. This can be suppressed with XXthe "W" command, but that will also suppress any XX XX XX XXARC Page 15 XXwarnings about other things, like failed CRC checks XXand such. XX XX ____ XXthat the file already exists. For example, in our XXearlier case of extracting all the ".BAS" files from XX"JUNK.ARC", a much safer way to do it is to type: XX XX ARC xo junk *.BAS XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXARC Page 16 XX_____________________ XX XXArchive entries may be encrypted and decrypted by XXusing the "G" (Garble) option. The Garble option XXtakes the remainder of the command string as the XX ____ XX XX XXFor example, if you wanted to add a file named XX"WASTE.TXT" to an archive named "JUNK.ARC", and you XXwanted to encrypt it using the password "DEBRIS", then XXyou would type: XX XX ARC agdebris junk waste.txt XX XXLater on, when you want to extract it again, you would XXtype: XX XX ARC xgdebris junk waste.txt XX XXThe password you supply is used to encrypt (or XXdecrypt) the archive entry by performing an exclusive XXOR between each byte of the packed data and each byte XXof the password. The password can be any length, and XXeach of its bytes is used in rotation. The password XXis converted to uppercase before it is used, so it is XX___ XXon the packed data, it has no effect on stowage XXfactors. XX XXThis is not a particularly sophisticated means of XXencryption, and it is theoretically possible to crack. XXStill, since it is performed on the packed data, the XXresult should be quite sufficient for casual use. XX XX XXYou can, if you wish, use different passwords for XXdifferent files in an archive, but we advise against XXit. If you are going to encrypt an archive, we XXsuggest you use the same password for every file, and XXgive the password whenever you do anything at all with XXthe archive. It is possible to list the entries in an XXencrypted archive using the "L" and "V" commands XXwithout giving the password, but nothing else will XXwork properly. XX XX XXWe advise that you use this option sparingly, if at XXall. If you should forget or mistype your password, XXit is highly unlikely that you will ever recover your XXdata. XX XX XX XXARC Page 17 XX RAMDISK SUPPORT XX XX XX XXIf you have a RAMdisk, or other high-speed storage, XXthen you can speed up ARC somewhat by telling it to XXput its temporary files on the RAMdisk. You do this XXby setting the ARCTEMP environment string with the MS- XXDOS SET command. For example, if drive B: is your XXRAMdisk, then you would type: XX XX set ARCTEMP=B: XX XXRefer to the MS-DOS manual for more details about the XXSET command. You need only set the ARCTEMP string XXonce, and ARC will use it from then on until you XXchange its value or reboot your system. XX XX XXIf ARC does not find an environment string named XXARCTEMP, then it looks for one named TEMP to use XXinstead. Several packages already use the TEMP string XXfor exactly this purpose. If you have need of an XXenvironment string named TEMP for something else, then XXyou should be sure to define ARCTEMP. XX XX XXThere are a limited number of temporary files created XXby ARC. The Convert command uses a file named XX"$ARCTEMP.CVT" to hold each file as it is being XXconverted. The Run command also creates a temporary XXfile, which has the name "$ARCTEMP", and whose XXextension matches that of the file being run. XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXARC Page 18 XX MARC XX XX XX XXMARC is a separate program which is used to merge XXarchives created by ARC. MARC moves files from one XXarchive to another without unpacking them. XX XX XXMARC is used as follows: XX XX MARC <target> <source> [<template> . . .] XX XXWhere: XX XX <target> is the name of the archive to add files XX to. XX XX <source> is the name of the archive to read files XX from. XX XX <template> is one or more file name templates. XX The wildcard characters "*" and "?" may be used. XX If no template is supplied, then all of the files XX in <source> are added to <target>. XX XXIt is not necessary for the target to exist. If it XXdoes not exist, then it is created. Thus, MARC can be XXused as an "extractor" as well as a "merger". XX XX XXFor example, if you wanted to create an archive named XX"JUNK.ARC", which is to contain all of the files with XXan extension of ".TXT" which are currently contained XXin another archive named "WASTE.ARC", then you could XXtype: XX XX MARC junk waste *.txt XX XXIf you wanted to create an archive named "JUNK.ARC", XXwhich is to contain all of the files currently in the XXarchives "WASTE.ARC" and "TRASH.ARC", you could type: XX XX MARC junk waste XX MARC junk trash XX XX XXIf MARC is invoked with no arguments, then it gives XXbrief directions in its use. XX XX XX XX XX XXARC Page 19 XX ARCE XX XX XX XXARCE is a program which is used to extract files from XX ____ XX___ XXthat ARC can't do, but it is highly optimized for the XXsole purpose of archive extraction, so it is very XXsmall and very fast. XX XXARCE is used in a fashion very similar to the "ARC E" XXcommand (hence the name). The first argument is the XXname of the archive to extract files from, and may XXinclude a drive and path specifier. Up to sixteen XXadditional arguments can be supplied, which specify XXthe files to extract. The wildcard characters "*" and XX"?" are allowed, as with ARC. If no files are named, XXthen all files are extracted from the archive. If the XXfile being extracted already exists, you are asked XXwhether or not you want to overwrite it. You can use XXthe "/R" option to bypass this. XX XXFor example, if you had an archive named "WASTE.ARC" XXthat you wanted to extract everything from, then you XXcould type: XX XX ARCE waste XX XXOr if you just wanted to extract the files with a XXfilename extension of ".ASM", you could type: XX XX ARCE waste *.asm XX XXIf you already have a few files from the archive that XXyou want replaced, then you could type: XX XX ARCE waste *.asm /R XX XXIf you run ARCE with no arguments at all, then it will XXgive you a brief reminder of how to use it. XX XX XXNOTICE:NOTICE: ARCE is the copyrighted property of Vernon D. XX Buerg and Wayne Chin. It is included on the XX ARC program disk as a service to ARC users. XX XX Vernon D. Buerg XX 456 Lakeshire Drive XX Daly City, CA 94015 XX RBBS: (415) 994-2944 XX XX XX XXARC Page 20 XX VERSION NUMBERS XX XX XX XXThere seems to be some confusion about our version XXnumbering scheme. All of our version numbers are XXgiven as a number with two decimal places. XX XXThe units indicate a major revision, such as adding a XXnew packing algorithm. XX XXThe first decimal place (tenths) indicates a minor XXrevision that is not essential, but which may be XXdesired. XX XXThe second decimal place (hundredths) indicates a XXtrivial revision that will probably only be desired by XXspecific individuals or by die-hard "latest version" XXfanatics. XX XXARC also displays its date and time of last edit. A XXchange of the date and time without a corresponding XXchange in version number indicates a truly trivial XXchange, such as fixing a spelling error. XX XX XXTo sum up: If the units change, then you should get XXthe newer version as soon as you can. If the tenths XXchange, then you may want to get the newer version, XXbut there's no hurry. If anything else changes, then XXyou probably shouldn't bother. XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXARC Page 21 XX COMMON QUESTIONS AND ANSWERS XX XX XX XXHere are some of the more common questions we've XXreceived about ARC, along with their answers: XX XX XXQ: Why does ARC run out of room if I make an archive XX bigger than about 180k? XX XXA: Because you are working on a floppy disk. ARC XX creates a copy of your archive, incorporating any XX new files as it goes. When it is done, it deletes XX the original and renames the new one. There are a XX number of reasons for doing it this way, one being XX that your original archive is still intact if XX anything happens while ARC is running. XX XX You can save some space by using drive specifiers XX and having the archive and the files to add on XX separate disks, but you still won't be able to make XX an archive larger than about 180k. If you need to XX make a larger archive, and if you have a fixed XX disk, then you can create the archive on the fixed XX disk and then copy it to the floppy. XX XX XXQ: I've seen an ARC.COM and an ARC.EXE. Which one is XX the right one? XX XXA: ARC.EXE. One or more people have been running ARC XX through a utility that converts an ".EXE" file to a XX ".COM" file. But this utility is designed to save XX _____ XX and makes no measurable difference in program XX speed. We've decided that the savings are not XX worth the extra step in development in this case. XX XX XXQ: How can I get the latest version of ARC? XX XXA: ARC updates are distributed through normal XX shareware channels, and by FidoNet. We also ship a XX program update disk on every order of $50 or more. XX Also, please refer to the next section for XX information about our maintenance contracts. XX XX XX XX XX XX XX XXARC Page 22 XXQ: Can I use ARC to distribute my public domain or XX shareware program? XX XXA: Yes, of course. XX XX XXQ: Can I use ARC to distribute my commercial software XX package? XX XXA: Yes, provided that you obtain a commercial XX distribution license from us. Please contact us XX for details. XX XX XXQ: I'm a commercial user. Why should I pay for XX shareware that others get for free? XX XXA: Because you cannot credibly plead poverty. XX ___ XX a new marketing channel to the benefit of everyone. XX You can still "test drive" shareware for a short XX period, but if you decide to use it in your XX business, then you should pay for it. XX XX XXQ: Why not allow me to select which method of XX compression I want ARC to use? XX XXA: It would needlessly complicate ARC, both internally XX and in use. The exact nature of the compression XX methods used are complex, and quite different. The XX only sure way to tell which will be best in any XX given case is to analyze the data, as ARC does. XX The method chosen may not always be what you XX expect. XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXARC Page 23 XX MAINTENANCE CONTRACTS XX XX XX XXRegistered users of ARC receive 90 days of telephone XXsupport at no extra charge. If you wish, you can XXextend this by pruchasing a maintenance contract. XX XXA maintenance contract costs $50 per year and entitles XXyou to unlimited telephone support, as well as free XXupdates to ARC as they come out. XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXARC Page 24 XX REVISION HISTORY XX XX XX XX____________________ XX XXThe function used to calculate the CRC check value in XXprevious versions has been found to be in error. It XXhas been replaced with the proper function. ARC will XXstill read archives created with earlier versions of XXARC, but it will report a warning that the CRC value XXis in error. All archives created prior to version XX3.0 should be unpacked and repacked with the latest XXversion of ARC. XX XX XXTransmitting a file with XMODEM protocol rounds the XXsize up to the next multiple of 128 bytes, adding XXgarbage to the end of the file. This used to confuse XXARC, causing it to think that the end of the archive XXwas invalidly formatted. This has been corrected in XXversion 3.01. Older archives may still be read, but XXARC may report them to be improperly formatted. All XXfiles can be extracted, and no data is lost. In XXaddition, ARC will automatically correct the problem XXwhen it is encountered. XX XX XX XX____________________ XX XXARC is adding another data compression technique in XXthis version. We have been looking for some technique XXthat could improve on Huffman squeezing in at least a XXfew cases. So far, Lempel-Zev compression seems to be XXfulfilling our fondest hopes, often achieving XXcompression rates as much as 20% better than XXsqueezing, and sometimes even better. Huffman XXsqueezing depends on some bytes being more "popular" XXthan others, taking the file as a whole. Lempel-Zev XXcompression is instead looking for strings of bytes XXwhich are repeated at various points (such as an end XXof line followed by spaces for indentation). Lempel- XXZev compression is therefore looking for repetition at XXa more "macro" level, often achieving impressive XXpacking rates. XX XXIn the typical case a file is added to an archive once XXand then extracted many times, so the increased time XXfor an update should more than pay for itself in XXincreased disk space and reduced transmission time. XX XX XX XXARC Page 25 XX______________________ XX XXLempel-Zev coding has been improved somewhat by XXperforming non-repeat compression on the data before XXit is coded (as was already done with Huffman XXsqueezing). This has the two fold advantage of (a) XXreducing to some extent the amount of data to be XXencoded, and (b) increasing the time it takes for the XXstring table to fill up. Performance gains are small, XXbut noticeable. XX XXThe primary changes are in internal organization. ARC XXis now much "cleaner" inside. In addition to the XXaesthetic benefits to the author, this should make XXlife easier for the hackers out there. There is also XXa slight, but not noticeable, improvement in overall XXspeed when doing an update. XX XX XX XX______________________ XX XXVersion 4.3 adds the much-demanded feature of using XXpathnames when adding files to an archive. XX XXVersion 4.3 is also using a slightly different XXapproach when adding a file to an archive. The end XXresult is twofold: XX XX1) Slightly more disk space is required on the drive XX containing the archive. This should only be XX noticeable to those creating very large archives on XX a floppy based system. XX XX2) A 30% reduction in packing time has been achieved XX in most cases. This should be noticeable to XX everyone. XX XXAs always, version 4.3 is still fully upwards XXcompatible, and is backwards compatible as far as XXversion 4.1. XX XX XX XX XX XX XX XX XX XX XX XX XX XXARC Page 26 XX______________________ XX XXThe temporary file introduced in version 4.3 XXoccasionally caused problems for people who had not XXadded a FILES= statement to their CONFIG.SYS file. XXThis has now been corrected. Also, support of the XXARCTEMP environment string was added to allow placing XXof the temporary file on a RAMdisk. XX XXA bug was reported in the Run command, which has been XXfixed. From the nature of the bug, and the extreme XXtime required before the bug was reported, it is XXdeduced that the Run command is probably the least XXused feature of ARC. XX XXThe Update command was changed. It is no longer a XXstraight synonym for Add. Instead, Update now only XXadds a file if it is newer than the version already in XXthe archive, as shown by the MS-DOS date/time stamp. XX XX XX XX______________________ XX XXThe Convert command was not making use of RAMdisk XXsupport. Now it is. XX XXThe Freshen command was added. Our first choice for a XXname was Refresh, but we already had a Run command. XXAssuming that you have an archive which already XXcontains everything you want in it (for software XXdistribution, perhaps), then Freshen would be used to XXupdate the archive. It was pointed out to us that ARC XXalready knows what is in the archive, so it should be XXable to look on disk for newer versions. Now it can. XX XXThe Suppress compression option was added by popular XXdemand. It allows files to be added quickly to an XXarchive, since the files are not analyzed or XXcompressed, but merely stored straight. The intent is XXto allow users to build an archive "in pieces", and XXthen compress all of the entries at once with the XXConvert command. The conversion is much faster if you XXtake advantage of RAMdisk support. XX XXA minor bug was detected in our handling of date/time XXstamps which occasionally resulted in stamping an XXarchive with the wrong date and time. This has been XXcorrected. XX XX XX XX XX XXARC Page 27 XX______________________ XX XXThe Move command used to delete the files as it went. XXIt now waits until it is finished updating the XX ___ XXthat Move is just an Add where the file gets deleted, XXdidn't you?) This, along with the changes made in XXversion 4.5, means that it is now much safer to XXinterrupt ARC while it is working. XX XXThe Print command no longer prints the name of each XXfile. Instead, it prints a formfeed after each file. XX XXThe Run command now supports BASICA programs. Also, XXthe filename extension is no longer required on the XXRun command. XX XXThe Garble option was added. It provides a convenient XXmeans of low level data security for the casual user. XXUse it sparingly, if at all. XX XXARC no longer tests for the presence of $ARCTEMP.CRN XXbefore creating a new one. If you interrupt ARC a XXlot, you'll find this much more convenient. If you XXhappen to have a file named $ARCTEMP.CRN which you XXwant to keep, too bad. XX XXImproved error recovery was added when reading an XXarchive. ARC now has a good chance of recovering the XXdata from a corrupted archive (the corrupted entry is XXstill lost, of course). XX XXPath support has been added for all commands, though XXit doesn't do anything on most of them. For example, XXthere isn't much we can do with a path in the List XXcommand. But many users will be glad to know that a XXpath can be used when extracting a file, and specifies XXwhere the file is to be placed. XX XXSupport for the TEMP environment string was added. If XXARC doesn't find an environment string named ARCTEMP, XXthen it looks for one named TEMP to use instead. XXSeveral packages already use the TEMP string for XXexactly this purpose. With any luck, maybe we can get XXa standard going. XX XX XX XX XX XX XX XX XX XXARC Page 28 XXARC is now using a different variation of Lempel-Zev XXcoding, courtesy of Kent Williams, who found it on XXUSENET and adapted it to the IBM PC. The new method XXdiffers from the old in several respects. The most XXsignificant differences are: XX XX1) Where our previous implementation used a fixed code XX size of twelve bits, the new one starts with a code XX size of nine bits and increases it as it needs to. XX XX2) The earlier method tended to "choke" on large files XX when its string table filled up. The new method XX has a rather ingenious scheme its authors call XX ______________ XX table has filled, and its compression ratio is XX starting to suffer, it clears the table and starts XX defining new strings. XX XXOur benchmarks show an improvement in compression on XXthe order of 10% when crunching is used. XXAdditionally, ARC 5.0 is on the order of 23% faster at XXadding a file when crunching is used, or 13% faster XXwhen squeezing is used. Extracting a file crunched XXwith the new method is 27% faster than it is with the XXold method. Extraction of any other type of file XX(including those crunched with the older method) is no XXfaster than before. These figures are based on our XXown benchmark tests; your results may vary. XX XXThe previous implementation of Lempel-Zev coding is no XXlonger used to pack files. The "V" (Verbose listing) XXcommand distinguishes between the two by referring to XXthe older method as "crunched" (with a lower-case XX"c"), and the newer method as "Crunched" (with a XXcapital "C"). XX XXARC 5.0 can still read archives created by earlier XXversions of ARC, but once again it creates archives XXwhich older versions cannot read. XX XX XX XX______________________ XX XXRick Moore discovered that ARC was occasionally adding XXan archive to itself. This would only happen when the XXarchive is in the same directory as the files being XXadded, and its name comes last. This bug has been XXfixed, though it is still possible to fool ARC into XXadding an archive to itself by getting tricky with XXpath names. XX XX XX XXARC Page 29 XXDana Montgomery found the upper limit on how many XXfiles can be added to an archive. There's always been XXan upper limit, but it depends on memory, and used to XXbe larger than anyone could possibly want (knock on XXwood). However, the added memory requirements in XXversion 5.0 lowered this limit into the realm of XXpossibility, somewhere around 300 files. We change XXsome things around, and effectively, there is no XXlonger a limit on how many files you can add at once. XXARC will add the files in batches of as many as it can