21 ;That first line is how many lines/record in this archiver.bb2 file... ;very important, do not change. Allows future modifications to the ;file to be transparent to older programs. ; ;ARCHIVER.BB2, archiver control file for XBBS-OS/2, XGROUP, AV & FM/2 ;KEEP A COPY OF THIS ORIGINAL FILE FOR INFORMATION LATER! ; ;format for this archiver.bb2 file (each entry has 21 lines): ; ; 1st line: ID of archiver (like ARC, LHARC, PKZIP, etc.; human consumption) ; 2nd line: normal extension for archives (like ZIP, ARC, LZH; note no period) ; 3rd line: offset into file to signature ; 4th line: list command ; 5th line: extract command ; 6th line: extract w/ directories command ; 7th line: test archive command ; 8th line: add/create command ; 9th line: add/create w/ paths command ;10th line: add/create & recurse command ;11th line: move command ;12th line: move w/ paths command ;13th line: delete command ;14th line: signature (case sensitive, leading spaces count! ;15th line: startlist string ;16th line: endlist string ;17th line: old size position (all positions 0-based, -1 = not available) ;18th line: new size position ;19th line: file date position[,type of date (0 for none)] ;20th line: number of positions in dates (for "03 June 92" would be 3) ;21st line: file name position (absolutely required, of course; -1 = last pos)[,name is last (1 = TRUE, n/a w/ -1 pos)[name is next line (1 = TRUE)[,name is first line, then rest of data (1 = TRUE)]]] ; (see ZOO entry for example of -1 in file name position ; see LH entry for example of name is last ; see RAR 2.00 entry for example of name is first ; check listings generated by these programs for clarification) ; ;ARCHIVER AUTHORS: MAKE A STANDARD! ; ; ;a semicolon demarks a comment. they may appear at any point *except* ;within the 21 lines of an archiver entry. comments are ignored by AV. ; ;note that all archiver strings should include the archiver's parameter to ;prevent it from stopping for input! also note that archive types are checked ;in order of their listing in this file. finally, this file is set up for ;the archivers I had lying around; if yours are different versions, you may ;have to modify this file. All archivers are OS/2 (or FAPI) versions. ;DOS archivers may work with FM/2, but it'll be up to you to set them up. ; ;date types supported: ;-------------------- ;02-31-98 23:55:32 1 ;31 Feb 98 23:55:32 2 ;31 Feb 98 11:55p 3 ;98-02-31 23:55:32 4 ;31-02-98 23:55 5 ; ;how archive listing works (for the curious): ; ;AV first tries to find a signature match. failing that, it checks ;to see if the file might be an ARC-format file. If the latter, READARC.CMD ;is spawned (by XBBS) with ARC as the first argument and v as the second, ;followed by the filename (AV spawns ARC directly). If the former, the list ;command is sent, followed by the filename. AV (and XBBS) then parses the ;resultant file using the start and end list lines and offsets in file lines ;listed in this file for the given archiver. ; ;Warning: I'm told there's a bug in some versions of 4OS2 that can cause ;a call to an archiver to fail if the archiver has an extension (i.e. ;UNZIP works, UNZIP.EXE doesn't). If things fail for no apparent reason ;and you're using 4OS2 you might keep it in mind. ; ;Sample C code to access this information is in sample.c in the AV ;distribution archive, and is free for the using in your own projects. ; ;-----------------Archiver data begins----------------------- ; ;This entry is for Zoo 2.1 ; ;NOTE: Bug in Zoo 2.1 seems to cause files stored with paths to ;be extracted w/ paths even when you don't ask it to do so... ; ; Zoo 2.1 ZOO 20 ZOO.EXE v ZOO.EXE xO ZOO.EXE xO/ ZOO.EXE -test ZOO.Exe ah: ZOO.EXE ah ZOO.EXE aM:h ZOO.EXE aMh ZOO.EXE -delete \xdc\xa7\xc4\xfd -------- --- -------- --------- -------- -------- --- -------- --------- -------- 0 2 3,2 3 -1 ; ; This entry is for LHarc 2.22. Supposedly fixes bugs in earlier versions. ; Actually seems to have done so. Good work, Peter. ; LHarc 2.22 LZH 2 LH.EXE /o l LH.EXE /o x LH.EXE /o /s x LH.EXE t LH.EXE /o a LH.EXE /o /s a LH.EXE /o m LH.EXE /o d -lh -------- -------- ----------------------------------------- -------- ----------------------------------------- 0 -1 1,4 1 2,1 ; ; Duplicate entry is for LHarc 2.22 using LH32 filename. ; LHarc-32 2.22 LZH 2 LH32.EXE /o l LH32.EXE /o x LH32.EXE /o /s x LH32.EXE t LH32.EXE /o a LH32.EXE /o /s a LH32.EXE /o m LH32.EXE /o d -lh -------- -------- ----------------------------------------- -------- ----------------------------------------- 0 -1 1,4 1 2,1 ; ; This entry is for LHarc 2.22 self-extractors. ; LHarc 2.22 SE LZH 22963 LH.EXE /o l LH.EXE /o x LH.EXE /o /s x LH.EXE t LH.EXE /o a LH.EXE /o /s a LH.EXE /o m LH.EXE /o d -lh -------- -------- ----------------------------------------- -------- ----------------------------------------- 0 -1 1,4 1 2,1 ; ; This entry is for LHA 2.12 (DOS) self-extractors since LH 2.22 seems to ; recognize them. ; LHarc 2.12 DOS SE LZH 1638 LH.EXE /o l LH.EXE /o x LH.EXE /o /s x LH.EXE t LH.EXE /o a LH.EXE /o /s a LH.EXE /o m LH.EXE /o d -lh -------- -------- ----------------------------------------- -------- ----------------------------------------- 0 -1 1,4 1 2,1 ; ; This entry is for LHA 2.12 (DOS) self-extractors since LH 2.22 seems to ; recognize them. ; LHarc 2.12 DOS SE LZH 37 LH.EXE /o l LH.EXE /o x LH.EXE /o /s x LH.EXE t LH.EXE /o a LH.EXE /o /s a LH.EXE /o m LH.EXE /o d $LHarc's SFX -------- -------- ----------------------------------------- -------- ----------------------------------------- 0 -1 1,4 1 2,1 ; ; This entry is for LHA 2.13L (DOS) self-extractors since LH 2.22 seems to ; recognize them. ; LHarc 2.13 DOS SE LZH 36 LH.EXE /o l LH.EXE /o x LH.EXE /o /s x LH.EXE t LH.EXE /o a LH.EXE /o /s a LH.EXE /o m LH.EXE /o d LHA's SFX 2.13L (c) Yoshi, 1991\r\n -------- -------- ----------------------------------------- -------- ----------------------------------------- 0 -1 1,4 1 2,1 ; ; ;This entry is for LH2 2.11. ; ;NOTE: sometimes will put a file into an archive more than once, necessitating ;deleting both. EAs not handled well, but at least they're handled. ; LHarc 2.11 LZH 2 LH.EXE /o l LH.EXE /o x LH.EXE /o /s x LH.EXE t LH.EXE /o a LH.EXE /o /s a LH.EXE /o m LH.EXE /o d -lh -------- -------- ----------------------------------------- -------- ----------------------------------------- 0 -1 1 1 2,1 ; ; This entry is for Zip/UnZip 2.2/5.4, sent to me by V. Lee Conyers ; Zip/UnZip 2.2/5.4 ZIP 0 UNZIP.EXE -lv UNZIP.EXE -jo UNZIP.EXE -o UNZIP.EXE -t ZIP.EXE -j9g ZIP.EXE -9g ZIP.EXE -r9g ZIP.EXE -mj9g ZIP.EXE -m9g ZIP.EXE -d PK\x03\x04 -------- ------ ------- ----- ---- ---- ------ ---- -------- ------- --- ------- 0 2 4,1 2 7,1 ; ;This entry is for ZIP 1.9/UNZIP 5.0 (available in 32-bit versions) ;ZIP/UNZIP should work with PKZIP 2.04 files. Saves EAs well. Won't ;extract a file stored with path without the path (actually, this seems ;to be fixed now. Maybe. There are dozens of versions floating around; ;you don't pays your money and you takes your chances). If you have a ;version that won't extract files with paths without the paths, there's ;a workaround -- change the line "UNZIP.EXE -jo" below to "UNZIP.EXE -o". ;Because of broken ZIP archives floating around everywhere, this is here ;without the version flag in the signature (should really be PK\x3\x4\x14). ;Damnit, it looks like Katz's own software is what does the botching. So ;much for the keeper of the ZIP standard... Zip still seems to have to ;have erratic problems with creating archives with some pathnames... ; Zip/UnZip 1.9/5.0 ZIP 0 UNZIP.EXE -vUo UNZIP.EXE -jo UNZIP.EXE -o UNZIP.EXE -to ZIP.EXE -j9g ZIP.EXE -9g ZIP.EXE -r9g ZIP.EXE -mj9g ZIP.EXE -m9g ZIP.EXE -d PK\x3\x4 ------ ------ ---- ----- ---- ---- ------ ---- ------ ------ --- ------- 0 2 4,1 2 7,1 ; ; ;Duplicate entry is for ZIP 1.9/UNZIP 5.0 using *32 filenames. ; Zip/UnZip-32 1.9/5.0 ZIP 0 UNZIP32.EXE -vUo UNZIP32.EXE -jo UNZIP32.EXE -o UNZIP32.EXE -to ZIP32.EXE -j9g ZIP32.EXE -9g ZIP32.EXE -r9g ZIP32.EXE -mj9g ZIP32.EXE -m9g ZIP32.EXE -d PK\x3\x4 ------ ------ ---- ----- ---- ---- ------ ---- ------ ------ --- ------- 0 2 4,1 2 7,1 ; ; ;This entry is for ZIP 1.9/UNZIP 5.0, using the -l listing format ;(the -v long format can sometimes result in the old length field ; being crammed together with the Method field, resulting in an ; unparsable format). Some info, like old length, will be missing, ; but at least you can view the contents. ; Zip/UnZip 1.9/5.0 Short ZIP 0 UNZIP.EXE -lUo UNZIP.EXE -jo UNZIP.EXE -o UNZIP.EXE -to ZIP.EXE -j9g ZIP.EXE -9g ZIP.EXE -r9g ZIP.EXE -mj9g ZIP.EXE -m9g ZIP.EXE -d PK\x3\x4 ------ ---- ---- ---- ------ ------- -1 0 1,1 2 3,1 ; ; ;This entry is for PKZIP 2.50 named PKZip (true OS/2 executable) ; PKZip 2.50 ZIP 0 PKZIP.EXE /locale=canada /nofix PKZIP.EXE /overwrite /extract /nofix PKZIP.EXE /overwrite /extract /directories /nofix PKZIP.EXE /test PKZIP.EXE /add /nofix PKZIP.EXE /add /path /nofix PKZIP.EXE /add /path /recurse /nofix PKZIP.EXE /add /move /nofix PKZIP.EXE /add /move /path /nofix PKZIP.EXE /delete /nofix PK\x3\x4\x14 ------ ------ ----- ----- ---- ---- -------- ---- ---- ------ ------ ----- ---- 0 2 4 2 8,1 ; ; ;This entry is for unzipsfx self-extractors ; unzipsfx 217 UNZIP.EXE -vUo UNZIP.EXE -jo UNZIP.EXE -o UNZIP.EXE -to ZIP.EXE -d unzipsfx ------ ------ ---- ----- ---- ---- ------ ---- ------ ------ --- ------- 0 2 4,1 2 7,1 ; ; ;This entry is for PKZIP self-extractors type 1 ; PK(Un)Zip SE #1 2934 PKZIP.EXE /locale=canada /nofix PKZIP.EXE /overwrite /extract /nofix PKZIP.EXE /overwrite /extract /directories /nofix PKZIP.EXE /test PKZIP.EXE /add /nofix PKZIP.EXE /add /path /nofix PKZIP.EXE /add /path /recurse /nofix PKZIP.EXE /add /move /nofix PKZIP.EXE /add /move /path /nofix PKZIP.EXE /delete /nofix PK\x3\x4 ------ ------ ----- ----- ---- ---- ------ ---- ---- ------ ------ --- ------- 0 2 4 2 8 ; ;This entry is for PKZIP self-extractors type 2 ; PK(Un)Zip SE #2 12784 PKZIP.EXE /locale=canada /nofix PKZIP.EXE /overwrite /extract /nofix PKZIP.EXE /overwrite /extract /directories /nofix PKZIP.EXE /test PKZIP.EXE /add /nofix PKZIP.EXE /add /path /nofix PKZIP.EXE /add /path /recurse /nofix PKZIP.EXE /add /move /nofix PKZIP.EXE /add /move /path /nofix PKZIP.EXE /delete /nofix PK\x3\x4 ------ ------ ----- ----- ---- ---- ------ ---- ---- ------ ------ --- ------- 0 2 4 2 8 ; ; ; ;This entry is for PKZIP self-extractors type 3 ; PK(Un)Zip SE #2 30948 PKZIP.EXE /locale=canada /nofix PKZIP.EXE /overwrite /extract /nofix PKZIP.EXE /overwrite /extract /directories /nofix PKZIP.EXE /test PKZIP.EXE /add /nofix PKZIP.EXE /add /path /nofix PKZIP.EXE /add /path /recurse /nofix PKZIP.EXE /add /move /nofix PKZIP.EXE /add /move /path /nofix PKZIP.EXE /delete /nofix PK\x3\x4 ------ ------ ----- ----- ---- ---- ------ ---- ---- ------ ------ --- ------- 0 2 4 2 8 ; ;This entry is for Unarj 2.10 ported by Scott Dudley ; (Un)Arj 2.10 0 UNARJ.EXE l UNARJ.EXE e UNARJ.EXE x UNARJ.EXE t \x60\xea ------------ ---------- ---------- ----- ----------------- -------- ---- ------ ------------ ---------- ---------- ----- ----------------- 1 2 4,4 1 0 ; ;This entry is for Unarj 2.30 demo version. Don't use Unarj 2.41; it's broken. ; (Un)Arj 2.30 demo 0 UNARJ.EXE l UNARJ.EXE e UNARJ.EXE x UNARJ.EXE t \x60\xea ------------ ---------- ---------- ----- ----------------- -------- ----------- ------------ ---------- ---------- ----- ----------------- 1 2 4 1 0 ; ;This entry is for Arj 2.00 (DOS) ; Note that other programs that use this control file may not be able to ; handle calling a DOS archiver correctly! FM/2 is the only one that I ; know of which can at this time. This means you may need to keep FM/2's ; ARCHIVER.BB2 separate from those for other programs. ; Arj 2.00 DOS ARJ 0 ARJ.EXE l ARJ.EXE e -y ARJ.EXE x -y ARJ.EXE t ARJ.EXE a -y -e ARJ.EXE a -y ARJ.EXE a -y -r ARJ.EXE m -y -e ARJ.EXE m -y ARJ.EXE d -y \x60\xea ------------ ---------- ---------- ----- ----------------- -------- ---- ------ ------------ ---------- ---------- ----- 1 2 4 1 0 ; ;This entry is for RAR/2 v2, provided by Eugene Roshal ; RAR/2 v2 RAR 0 RAR.EXE v -c- RAR.EXE e -y -c- -o+ RAR.EXE x -y -c- -o+ RAR.EXE t -c- RAR.EXE a -ep1 -y RAR.EXE a -y RAR.EXE a -r -y RAR.EXE mf -ep1 -y RAR.EXE m -y RAR.EXE d -y Rar!\x1a\x07\x00 ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ 0 1 3 1 0,0,0,1 ; ;This entry is for RAR/2 v.1.53beta OS/2 SFX ; RAR/2 v.1.53beta OS/2 SFX 13707 RAR.EXE l -c- RAR.EXE e -y -c- -o+ RAR.EXE x -y -c- -o+ RAR.EXE t -c- RAR.EXE a -ep1 -y RAR.EXE a -y RAR.EXE a -r -y RAR.EXE mf -ep1 -y RAR.EXE m -y RAR.EXE d -y Rar!\x1a\x07\x00 ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ 1 2 4 1 0,0,0,1 ; ;This entry is for RAR v.1.53 DOS SFX ; RAR v.1.53 DOS SFX 7195 RAR.EXE l -c- RAR.EXE e -y -c- -o+ RAR.EXE x -y -c- -o+ RAR.EXE t -c- RAR.EXE a -ep1 -y RAR.EXE a -y RAR.EXE a -r -y RAR.EXE mf -ep1 -y RAR.EXE m -y RAR.EXE d -y Rar!\x1a\x07\x00 ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ 1 2 4 1 0,0,0,1 ; ;This entry is for RAR v.2.00 SFX ; RAR v.2.00 SFX 28 RAR.EXE l -c- RAR.EXE e -y -c- -o+ RAR.EXE x -y -c- -o+ RAR.EXE t -c- RAR.EXE a -ep1 -y RAR.EXE a -y RAR.EXE a -r -y RAR.EXE mf -ep1 -y RAR.EXE m -y RAR.EXE d -y RSFXjr ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ 1 2 4 1 0,0,0,1 ; ; ;This entry is for ARC 5.12mpl ; Arc 5.12mpl ARC 0 ARC.EXE lwn ARC.EXE ewn ARC.EXE t ARC.EXE awn ARC.EXE mwn ARC.EXE dwn \x1a ============ ======== ========= ==== ======== 1 -1 2,3 3 0 ; ;This entry is for ARC2 (6.0) ;Note that I don't actually have a copy of this... ; Arc 6.0 ARC 0 ARC.EXE l ARC.EXE ewn ARC.EXE t ARC.EXE awn ARC.EXE mwn ARC.EXE dwn \x1a ================= ======== ========= ==== ======== 1 -1 2 3 0 ; ; ;Duplicate entry is for ARC2 (6.0) using ARC2 filename. ; Arc 6.0 ARC 0 ARC2.EXE l ARC2.EXE ewn ARC2.EXE t ARC2.EXE awn ARC2.EXE mwn ARC2.EXE dwn \x1a ================= ======== ========= ==== ======== 1 -1 2 3 0 ; ;-----------------Archiver data ends----------------------- ; ; ; For possible future use: ; ; Squeeze-it signature: (Offset 0) \x48\x4C\x53\x51\x5Ah ; HA signature: (Offset 0) HA ; HAP signature: (Offset 0) \x913HF ; HPK signature: (Offset 0) HPAK ; SQZ signature: (Offset 0) HLSQZ ; DWZ signature: (Offset -3) DWC ; ; No OS/2 versions available yet to my knowledge... ; ; ; ;Notes on modifying/updating this file: ;===================================== ; ;You can add as many archivers as you like to this file. ;here are some suggestions on how to go about it: ; ;list an archive with the archiver, redirecting to a disk ;file (ex. "ARC l AFILE.ARC > TEMP."). Load the resultant ;file into a text editor. Clip out the startlist and endlist ;strings and paste directly into this file on the appropriate ;lines; prevents errors due to typos when copying manually. ;Count the positions of filename, date, etc. and place on the ;appropriate line. Now run the archiver redirected to a file ;to get its help screen (ex. "ARC > TEMP." or "ZOO h > TEMP."). ;Look for the various command options (extract, list, etc.) and ;put them into the file on the appropriate lines -- remember to ;add the modifiers to prevent the archiver from stopping to ask ;questions! You could be in deep doo-doo if it's a detached ;process. While it may seem a pain in the arse to have to ;edit this file when an archiver changes its command structure ;or list format, at least it's something within your control; ;you don't have to wait for an update to AV. That means if I ;die tomorrow you'll still be able to use AV for years to come. ; ;Here's an example of an ARC listing (5.12mpl, command "ARC l"): ; ;----------------cut here---------------------- ;Name Length Date ;============ ======== ========= <--this line is start-of-list ;MAKEFILE 374 28 Nov 89 ;QSORT.C 14279 29 Nov 89 ;QSORT.EXE 24629 29 Nov 89 ;STUFF.H 371 29 Nov 89 ; ==== ======== <--this line is end-of-list ;Total 4 39653 ;----------------cut here---------------------- ; ;Note the filename is in position 0, old length in position 1, and the ;date starts in position 2, with 3 parts, and there's no new length ;field (so it'd be -1). Compare that to the archiver entry for ;ARC 5.12mpl above and you should get a feel for what all those fields ;mean. Here's a diagram of how a file line breaks down: ; ;STUFF.H 371 29 Nov 89 ; ^ ^ ^ ; | | | ; | | +--Date starts in field 2, 3 parts (29, Nov, and 89) ; | | ; | +--Old file length, field 1 ; | ; +--Filename, field 0 (count from 0, not 1) ; ; ;If you're adding an entirely new archive format, note that you can ;use 'C'-style \x on the signature line in this file. ;For example, the \x1a in ARC 5.12mpl's signature line means AV will ;look for an ASCII 26 (text EOF marker) in position 0 (first byte, as ;indicated by ARC's line 3, the offset into a file for the signature) ;of a file to determine if it's an archive. If line 3's offset is ;negative, AV looks from the end of the file instead of the beginning. ;You can usually figure out what an archiver's signature is by looking ;at a few archives with a file viewing program like Vernon Buerg's ;LIST. By all means send me anything new you figure out for inclusion ;in future releases. ; ; ;You can have several entries for one type of archive in this file. AV ;tries entries sequentially to list the file until it finds one that works. ;If the first entry for a signature doesn't work, and AV finds one that ;does, it moves that entry to the top of the list and rewrites ARCHIVER.BB2 ;to make future accesses faster. This allows me to list everything I can ;get entries for and let AV sort out what the user actually has that works. ;It also lets you, the user, create archives with more than one archiver that ;produces the same sort of archive (or with different switches, like one with ;LHArc producing -lh5- compression and one with it producing old, compatible ;-lh1- compression). ; ; ;always end file with blank line or comment