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