page%rishathra@Sun.COM (Bob Page) (04/29/89)
Submitted-by: creutz@bnlux0.bnl.gov (Michael Creutz) Posting-number: Volume 89, Issue 109 Archive-name: comm/uudecode-bas.1 [You can use this to bootstap yourself -- uudecode the fast uudecode program previously posted to comp.binaries.amiga and use that instead; that one is faster, has error detection and even some correction capability. Many thanks to Michael for providing this one. ..bob] # This is a shell archive. # Remove anything above and including the cut line. # Then run the rest of the file through 'sh'. # Unpacked files will be owned by you and have default permissions. #----cut here-----cut here-----cut here-----cut here----# #!/bin/sh # shar: SHell ARchive # Run the following text through 'sh' to create: # uudecode.bas # This is archive 1 of a 1-part kit. # This archive created: Fri Apr 28 20:01:20 1989 echo "extracting uudecode.bas" sed 's/^X//' << \SHAR_EOF > uudecode.bas X'This Amiga Basic program uudecodes X'files. It may not be fast, but it X'works! (I have an analogous uuencode X'program if anyone wants it.) X X' Michael Creutz X' creutz@bnlux0.bnl.gov X XWINDOW 1,,(20,20)-(400,150) XDEFINT a-z XINPUT "File to decode:",f1$ XINPUT "Decoded file name:",f2$ XOPEN f1$ FOR INPUT AS #1 XOPEN f2$ FOR OUTPUT AS #2 Xlength!=LOF(1) Xleftlength!=length! XPRINT "Looking for 'begin.'" Xfindbegin: X IF EOF(1) THEN PRINT "begin not found":CLOSE:END X LINE INPUT #1, a$:leftlength!=leftlength!-LEN(a$)-1 X IF LEFT$(a$,6)<>"begin " THEN GOTO findbegin X PRINT X PRINT "'begin' found" X PRINT "decoding ";f1$;" to file ";f2$ Xnewline: X LOCATE 10,10 X partdone=100*(1!-leftlength!/length!) X PRINT partdone;"% finished" Xinline: LINE INPUT #1,a$ :leftlength!=leftlength!-LEN(a$)-1 X IF a$="" THEN GOTO inline X IF a$="end" THEN GOTO done X count=(ASC(LEFT$(a$,1))-32) AND 63 X IF count=0 THEN GOTO done X pointer=2 X out$="" Xloop: X a1=(ASC(MID$(a$,pointer ,1))-32) AND 63 X a2=(ASC(MID$(a$,pointer+1,1))-32) AND 63 X a3=(ASC(MID$(a$,pointer+2,1))-32) AND 63 X a4=(ASC(MID$(a$,pointer+3,1))-32) AND 63 Xpointer=pointer+4 Xcount=count-3 X out$=out$+CHR$((a1* 4+a2\16) AND 255) X out$=out$+CHR$((a2*16+a3\ 4) AND 255) X out$=out$+CHR$((a3*64+a4 ) AND 255) XIF count>0 THEN GOTO loop X PRINT #2, out$; XIF NOT EOF(1) THEN GOTO newline X PRINT "end not found" Xdone: X PRINT "all done" X CLOSE SHAR_EOF echo "End of archive 1 (of 1)" # if you want to concatenate archives, remove anything after this line exit