|
|
1.1 root 1: #include <stdio.h>
2: char code[256];
3: #define FIRST 3
4: #define FOLLOW 2
5: #define ZERO 6
6: #define next() (((c = getc(si))==EOF)? exit(0):0)
7: #define copy() putc(c,so)
8: #define type() code[(unsigned char)c]
9:
10: init() {
11: doit(FIRST,"ABCDEFGHIJKLMNOPQRSTUVWXYZ_");
12: doit(FIRST,"0abcdefghijklmnopqrstuvwxyz_");
13: doit(FOLLOW,"123456789");
14: }
15: doit(act,list)
16: register unsigned char *list;
17: {
18: while(*list) {code[*list++]=act;}
19: }
20: main( )
21: {
22: register FILE *si = stdin, *so = stdout;
23: register c, count;
24:
25: init();
26: copying:
27: do { next(); copy();} while(type()!=FIRST);
28: hexnum:
29: if(c=='0') {
30: next();
31: if(c=='X'||c=='x') {
32: do { copy(); next();}
33: while (index("0123456789abcdefABCDEF",c&0x7f)>0);
34: }
35: ungetc(c,si); goto copying;
36: }
37: counting:
38: for(count = 0; count < 7; count++) {
39: next();
40: copy();
41: if(!(type()&FOLLOW)) goto copying;
42: }
43: squelch:
44: do { next(); } while (type()&FOLLOW);
45: copy();
46: goto copying;
47: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.