/* $VER: ArcTrans v1.1 (29.3.95) by J. Tierney Archive Transformer v1.1 3/29/95 J. Tierney Usage: ArcTrans.rexx [] [AUTO=1|ON] - AUTO=1 - No requester. ArcTrans determines Lha/LZX/Best option. */ PARSE ARG arc dest 'AUTO=' auto . IF auto > 0 | UPPER(auto) = 'ON' THEN auto = 1 ELSE auto = 0 arc = STRIP(arc) dest = STRIP(dest) tempdir = 'T:ArcTemp' IF ~EXISTS(tempdir) THEN ADDRESS COMMAND 'C:MakeDir >NIL:' tempdir tempdir = tempdir || '/' /* IF RIGHT(tempdir, 1) ~= ':' & RIGHT(tempdir, 1) ~= '/' THEN tempdir = tempdir || '/' */ IF ~auto THEN DO IF ~SHOW('L', 'rexxreqtools.library') THEN DO IF ~ADDLIB('rexxreqtools.library', 0, -30) THEN DO SAY 'Could not open "rexxreqtools.library".' EXIT 10 END END ADDRESS COMMAND 'C:GetPubName >PIPE:arctrans' CALL OPEN('pipe', 'PIPE:arctrans') pub = READLN('pipe') CALL CLOSE('pipe') END IF dest = '' THEN dest = 'SD0:' IF RIGHT(dest, 1) ~= ':' & RIGHT(dest, 1) ~= '/' THEN dest = dest || '/' y = LASTPOS('.', arc) arcname = SUBSTR(arc, 1, y-1) ext = FIND('LHA LZX', UPPER(SUBSTR(arc, y+1))) x = LASTPOS('/', arcname) IF x = 0 THEN x = LASTPOS(':', arcname) arcname = SUBSTR(arcname, x+1) dest = dest || arcname arctype = C2D(BITXOR(ext, 3)) IF ~auto THEN DO arctype = RTEZREQUEST('Transform To:', 'Lh_a|LZ_X|_Best|_Cancel', 'ArcTrans', 'rt_pubscrname=' || pub 'rt_reqpos=reqpos_centerscr rtez_defaultresponse=' || arctype) CALL REMLIB('rexxreqtools.library') END IF arctype = 0 THEN EXIT 0 IF arctype = ext THEN DO SAY arcname 'is already an' WORD('Lha LZX', ext) 'archive.' EXIT 0 END IF ~auto THEN SAY 'Uncompressing...' ADDRESS COMMAND 'SYS:RexxC/RX >NIL: REXX:ArcMast.rexx' arc 'x' tempdir olddir = PRAGMA('D', tempdir) IF (arctype ~= ext) & (BITTST(arctype, 0)) THEN DO IF ~auto THEN SAY 'Compressing with Lha...' ADDRESS COMMAND 'C:Lha -r -q a' dest '#?' END IF (arctype ~= ext) & (BITTST(arctype, 1)) THEN DO IF ~auto THEN SAY 'Compressing with LZX...' ADDRESS COMMAND 'C:LZX -r -q -9 -e -Qf a' dest '#?' END CALL PRAGMA('D', olddir) ADDRESS COMMAND 'C:Delete' tempdir 'ALL QUIET' IF arctype ~= 3 THEN EXIT 0 IF ~auto THEN SAY 'Size Check...' IF EXISTS(dest || '.lha') THEN DO lhafile = dest || '.lha' CALL OPEN('lha', lhafile, 'R') lhasize = SEEK('lha', 0, 'E') CALL CLOSE('lha') END ELSE EXIT 0 IF EXISTS(dest || '.LZX') THEN DO lzxfile = dest || '.LZX' CALL OPEN('lzx', lzxfile, 'R') lzxsize = SEEK('lzx', 0, 'E') CALL CLOSE('lzx') END ELSE EXIT 0 IF ~auto THEN DO SAY '-' lhafile '=' lhasize 'bytes.' SAY '-' lzxfile '=' lzxsize 'bytes.' END IF lhasize > lzxsize THEN DO IF ~auto THEN SAY 'Deleting' lhafile || '...' ADDRESS COMMAND 'C:DELETE' dest || '.lha QUIET' END ELSE DO IF ~auto THEN SAY 'Deleting' lzxfile || '...' ADDRESS COMMAND 'C:DELETE' dest || '.LZX QUIET' END