home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 18 REXX
/
18-REXX.zip
/
rexxuuxx.zip
/
64DECODE.PLI
< prev
next >
Wrap
Text File
|
1997-05-11
|
3KB
|
83 lines
/*********************************************************************/
/* This program is freeware, distributed as is, without any warranty */
/* of its usefulness for any purpose. You may use it freely. You may */
/* also redistribute it, provided no charge is levied beyond the */
/* price of its distribution medium. However, the author retains all */
/* intellectual property rights. */
/* */
/* */
/* Copyright (C) David W. Noon, 1995, 1997 */
/* */
/*********************************************************************/
/*************************************************
* *
* Program to decode BASE64 messages as per Unix *
* *
* Author: David W. Noon *
* December 1995 *
* *
*************************************************/
B64DECODE:
PROC(PARM) OPTIONS(MAIN NOEXECOPS REENTRANT) REORDER;
DCL PARM CHAR(521) VAR;
%INCLUDE UUXXCODE;
DCL (i,l,p,pl,w) BIN FIXED(31,0) UNSIGNED,
Max_line_length BIN FIXED(31,0) UNSIGNED
INIT(120),
Parm_ptr PTR,
(LENGTH,SEARCH,SUBSTR,TRIM,VERIFY) BUILTIN;
i = VERIFY(PARM,' ');
l = SEARCH(PARM,' ',i+1);
p = VERIFY(PARM,' ',l+1);
IF i = 0 | l = 0 | p = 0 THEN
DISPLAY('Input & output path/filenames must be given.');
ELSE
DO;
pl = SEARCH(PARM,' ',p+1);
IF pl = 0 THEN
pl = LENGTH(PARM) - p + 1;
ELSE
DO;
w = VERIFY(PARM,' ',pl+1);
IF w ¬= 0 & w <= LENGTH(PARM) - 3 THEN
SELECT(SUBSTR(PARM,w,3));
WHEN('/W:','/w:')
DO;
IF VERIFY(PARM,'0123456789',w+3) ¬= 0 THEN
DO;
DISPLAY('Width specification must be numeric.');
STOP;
END;
GET STRING(SUBSTR(PARM,w+3)) LIST(Max_line_length);
END;
OTHERWISE
DO;
DISPLAY('Invalid width parameter. Should be /w:nnn');
STOP;
END;
END;
pl = pl - p;
END;
Max_in = l - i;
ALLOC B64_Decode_struct SET(Parm_ptr);
Parm_ptr->B64_Decode_struct.Valid_rec_len = Max_line_length;
Parm_ptr->B64_Decode_struct.Output_filename = SUBSTR(PARM,p,pl);
Parm_ptr->B64_Decode_struct.Input_filename_list =
SUBSTR(PARM,i,Max_in);
FETCH BASE64_DECODE TITLE('UUXXCODE/BASE64_DECODE');
CALL BASE64_DECODE(Parm_ptr);
RELEASE BASE64_DECODE;
FREE Parm_ptr->B64_Decode_struct;
END;
RETURN;
END B64DECODE;