home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 35 Internet
/
35-Internet.zip
/
base64.zip
/
ENBASE64.CMD
< prev
next >
Wrap
OS/2 REXX Batch file
|
1994-07-05
|
2KB
|
74 lines
/* Encodes a file in Base64. */
/* */
/* Written by James L. Dean */
char_set='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
CALL CHAROUT,'Input? '
input_file_name=LINEIN()
CALL CHAROUT,'Output? '
output_file_name=LINEIN()
SAY 'Writing "'output_file_name'".'
CALL RxFuncAdd 'SysFileDelete','RexxUtil','SysFileDelete'
i=SysFileDelete(output_file_name)
input_eof=0
col_num=1
DO WHILE (input_eof = 0)
num_octets=0
triple=0
DO octet_num=1 TO 3
IF input_eof = 0 THEN
DO
octet=CHARIN(input_file_name)
IF LENGTH(octet) = 0 THEN
input_eof=-1
END
IF input_eof = 0 THEN
DO
triple=256*triple+C2D(octet)
num_octets=num_octets+1
END
ELSE
triple=256*triple
END
num_sextets=(8*num_octets)%6
IF 6*num_sextets < 8*num_octets THEN
num_sextets=num_sextets+1
IF num_sextets > 0 THEN
DO
sextet_num=1
DO WHILE(sextet_num <= 4)
quotient=triple%64
stack.sextet_num=triple-64*quotient
sextet_num=sextet_num+1
triple=quotient
END
DO WHILE(num_sextets >= 1)
sextet_num=sextet_num-1
rc=CHAROUT(output_file_name,SUBSTR(char_set,1+stack.sextet_num,1))
col_num=col_num+1
IF col_num > 76 THEN
DO
rc=CHAROUT(output_file_name,D2C(13))
rc=CHAROUT(output_file_name,D2C(10))
col_num=1
END
num_sextets=num_sextets-1
END
DO WHILE(sextet_num > 1)
rc=CHAROUT(output_file_name,'=')
col_num=col_num+1
IF col_num > 76 THEN
DO
rc=CHAROUT(output_file_name,D2C(13))
rc=CHAROUT(output_file_name,D2C(10))
col_num=1
END
sextet_num=sextet_num-1
END
END
END
IF col_num > 1 THEN
DO
rc=CHAROUT(output_file_name,D2C(13))
rc=CHAROUT(output_file_name,D2C(10))
END