'=========================================================================== ' Subject: UUDECODER Date: 02-04-96 (19:14) ' Author: David J. Arigan Code: QB, QBasic, PDS ' Origin: FidoNet QUIK_BAS Echo Packet: TEXT.ABC '=========================================================================== 'This is the UUDecoder that goes along with my UUEncoding program. If you 'like them let me know. If you decide to use either of them (or portions of 'them m in your programs, remember to include my name in the credits. Thanx. 'David J. Arigan DEFINT A-Z IF LEN(COMMAND$) = 0 THEN PRINT "Usage: UUDECODE ": END file$ = COMMAND$ IF INSTR(file$, " ") THEN file$ = LEFT$(file$, INSTR(file$, " ") - 1) unam$ = file$ IF INSTR(pnam$, "\") THEN pnam$ = MID$(pnam$, INSTR(file$, "\") + 1) OPEN file$ FOR BINARY AS #1 IF LOF(1) = 0 THEN PRINT "File '"; file$; "' does not exist." CLOSE #1: KILL file$: END END IF CLOSE #1 OPEN unam$ FOR INPUT AS #1 WHILE EOF(1) = 0 LINE INPUT #1, l$: lc = lc + 1 IF LCASE$(LEFT$(l$, 5)) = "begin" THEN n = INSTR(l$, " ") IF n <> 0 AND INSTR(n + 1, l$, " ") <> 0 THEN onam$ = RTRIM$(MID$(l$, INSTR(n + 1, l$, " ") + 1)) OPEN onam$ FOR BINARY AS #2 DO LINE INPUT #1, l$: lc = lc + 1 IF LCASE$(LEFT$(l$, 3)) = "end" THEN success = -1: EXIT DO IF LEN(l$) THEN ls = (ASC(l$) - 32) MOD 64: o$ = "" IF ls < 0 OR ls > 45 OR ls > ((LEN(l$) - 1) * 3 \ 4) THEN PRINT "*** Error in line #"; lc; " (Bad length)": EXIT DO END IF FOR i = 1 TO ls p = ((i - 1) \ 3) * 4 SELECT CASE (i - 1) MOD 3 CASE 0 c% = (ASC(MID$(l$, p + 2)) - 32) * 4 c% = c% + (ASC(MID$(l$, p + 3)) - 32) \ 16 CASE 1 c% = ((ASC(MID$(l$, p + 3)) - 32) * 16) AND &HF0 c% = c% + (ASC(MID$(l$, p + 4)) - 32) \ 4 CASE 2 c% = ((ASC(MID$(l$, p + 4)) - 32) * 64) AND &HC0 c% = c% + (ASC(MID$(l$, p + 5)) - 32) END SELECT o$ = o$ + CHR$(c) NEXT i PUT #2, , o$ END IF LOOP UNTIL EOF(1) CLOSE #2 IF success = 0 THEN PRINT "*** UUDecoding '"; onam$; " was not succesful." ELSE PRINT "Finished UUDecoding '"; onam$; "'" success = 0 END IF END IF END IF WEND CLOSE #1