|
|
1.1 root 1: /*
2: * ascii<>radix50
3: */
4:
5: #define BADC 0100
6:
7: static char r50c[128] = {
8: BADC, BADC, BADC, BADC, BADC, BADC, BADC, BADC,
9: BADC, BADC, BADC, BADC, BADC, BADC, BADC, BADC,
10: BADC, BADC, BADC, BADC, BADC, BADC, BADC, BADC,
11: BADC, BADC, BADC, BADC, BADC, BADC, BADC, BADC,
12: 000, BADC, BADC, BADC, 033, BADC, BADC, BADC,
13: BADC, BADC, BADC, BADC, BADC, BADC, 034, BADC,
14: 036, 037, 040, 041, 042, 043, 044, 045,
15: 046, 047, BADC, BADC, BADC, BADC, BADC, BADC,
16: BADC, 001, 002, 003, 004, 005, 006, 007,
17: 010, 011, 012, 013, 014, 015, 016, 017,
18: 020, 021, 022, 023, 024, 025, 026, 027,
19: 030, 031, 032, BADC, BADC, BADC, BADC, BADC,
20: BADC, 001, 002, 003, 004, 005, 006, 007,
21: 010, 011, 012, 013, 014, 015, 016, 017,
22: 020, 021, 022, 023, 024, 025, 026, 027,
23: 030, 031, 032, BADC, BADC, BADC, BADC, BADC
24: };
25:
26: static char r50a[] = " abcdefghijklmnopqrstuvwxyz$.?0123456789";
27:
28: /*
29: * convert up to three characters
30: * from ascii to r50
31: * advances s; returns the r50
32: * -1 means an error
33: */
34: int
35: ator50(s)
36: register char **s;
37: {
38: register char c;
39: register int i;
40: register unsigned short r;
41:
42: r = 0;
43: for (i = 0; i < 3 && (c = **s) != 0 ; i++) {
44: if (c & 0200)
45: return (-1);
46: if ((c = r50c[c]) == BADC)
47: return (-1);
48: r *= 050;
49: r += c;
50: (*s)++;
51: }
52: for (; i < 3; i++)
53: r *= 050; /* justify */
54: return (r);
55: }
56:
57: /*
58: * convert r50 to ascii,
59: * suppressing leading blanks
60: * s is where to put the string;
61: * the new s is returned.
62: * s had best have at least three characters remaining
63: */
64:
65: char *
66: r50toa(s, x)
67: register unsigned short x;
68: register char *s;
69: {
70: register unsigned char c;
71:
72: if (x) {
73: c = x % 050;
74: x /= 050;
75: if (x)
76: s = r50toa(s, x);
77: *s++ = r50a[c];
78: }
79: return (s);
80: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.