Blame


1 a31db67d 2004-04-21 devnull extern int squawk;
2 a31db67d 2004-04-21 devnull extern int clean;
3 a31db67d 2004-04-21 devnull extern char *file;
4 a31db67d 2004-04-21 devnull extern int verbose;
5 a31db67d 2004-04-21 devnull extern long ninput, noutput, nrunes, nerrors;
6 a31db67d 2004-04-21 devnull
7 a31db67d 2004-04-21 devnull enum { From = 1, Table = 2, Func = 4 };
8 a31db67d 2004-04-21 devnull
9 a31db67d 2004-04-21 devnull typedef void (*Fnptr)(void);
10 a31db67d 2004-04-21 devnull struct convert{
11 a31db67d 2004-04-21 devnull char *name;
12 a31db67d 2004-04-21 devnull char *chatter;
13 a31db67d 2004-04-21 devnull int flags;
14 a31db67d 2004-04-21 devnull void *data;
15 a31db67d 2004-04-21 devnull Fnptr fn;
16 a31db67d 2004-04-21 devnull };
17 a31db67d 2004-04-21 devnull extern struct convert convert[];
18 a31db67d 2004-04-21 devnull struct convert *conv(char *, int);
19 a31db67d 2004-04-21 devnull typedef void (*Infn)(int, long *, struct convert *);
20 a31db67d 2004-04-21 devnull typedef void (*Outfn)(Rune *, int, long *);
21 a31db67d 2004-04-21 devnull void outtable(Rune *, int, long *);
22 a31db67d 2004-04-21 devnull
23 a31db67d 2004-04-21 devnull void utf_in(int, long *, struct convert *);
24 a31db67d 2004-04-21 devnull void utf_out(Rune *, int, long *);
25 a31db67d 2004-04-21 devnull void isoutf_in(int, long *, struct convert *);
26 a31db67d 2004-04-21 devnull void isoutf_out(Rune *, int, long *);
27 a31db67d 2004-04-21 devnull
28 a31db67d 2004-04-21 devnull #define N 10000 /* just blocking */
29 a31db67d 2004-04-21 devnull #define OUT(out, r, n) if(out->flags&Table) outtable(r, n, (long *)out->data);\
30 a31db67d 2004-04-21 devnull else ((Outfn)(out->fn))(r, n, (long *)0)
31 a31db67d 2004-04-21 devnull
32 a31db67d 2004-04-21 devnull extern Rune runes[N];
33 a31db67d 2004-04-21 devnull extern char obuf[UTFmax*N]; /* maximum bloat from N runes */
34 a31db67d 2004-04-21 devnull
35 a31db67d 2004-04-21 devnull #define BADMAP (0xFFFD)
36 a31db67d 2004-04-21 devnull #define BYTEBADMAP ('?') /* badmap but has to fit in a byte */
37 a31db67d 2004-04-21 devnull #define ESC 033
38 a31db67d 2004-04-21 devnull
39 a31db67d 2004-04-21 devnull #ifdef PLAN9
40 a31db67d 2004-04-21 devnull #define EPR fprint(2,
41 a31db67d 2004-04-21 devnull #define EXIT(n,s) exits(s)
42 a31db67d 2004-04-21 devnull #else
43 a31db67d 2004-04-21 devnull #define EPR fprintf(stderr,
44 a31db67d 2004-04-21 devnull #define USED(x) /* in plan 9, USED(x) tells the compiler to treat x as used */
45 a31db67d 2004-04-21 devnull #define EXIT(n,s) exit(n)
46 a31db67d 2004-04-21 devnull #endif