1/* 2 * mactrans.c -- Hack filter used to generate MPW files 3 * with special characters from pure ASCII, denoted "%nn" 4 * where nn is hex. (except for "%%", which is literal '%'). 5 * 6 * calling sequence: 7 * 8 * catenate file | mactrans [-toascii | -fromascii] > output 9 * 10 * Written by: Niles Ritter. 11 */ 12#include <stdio.h> 13#include <stdlib.h> 14#include <ctype.h> 15 16void to_ascii(void); 17void from_ascii(void); 18 19main(int argc, char *argv[]) 20{ 21 if (argc<2 || argv[1][1]=='f') from_ascii(); 22 else to_ascii(); 23 exit (0); 24} 25 26void from_ascii(void) 27{ 28 char c; 29 int d; 30 while ((c=getchar())!=EOF) 31 { 32 if (c!='%' || (c=getchar())=='%') putchar(c); 33 else 34 { 35 ungetc(c,stdin); 36 scanf("%2x",&d); 37 *((unsigned char *)&c) = d; 38 putchar(c); 39 } 40 } 41} 42 43void to_ascii(void) 44{ 45 char c; 46 int d; 47 while ((c=getchar())!=EOF) 48 { 49 if (isascii(c)) putchar (c); 50 else 51 { 52 d = *((unsigned char *)&c); 53 printf("%%%2x",d); 54 } 55 } 56} 57/* 58 * Local Variables: 59 * mode: c 60 * c-basic-offset: 8 61 * fill-column: 78 62 * End: 63 */ 64