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