xref: /plan9/sys/src/cmd/tcs/hdr.h (revision 219b2ee8daee37f4aad58d63f21287faa8e4ffdc)
13e12c5d1SDavid du Colombier extern int squawk;
23e12c5d1SDavid du Colombier extern int clean;
3bd389b36SDavid du Colombier extern char *file;
43e12c5d1SDavid du Colombier extern int verbose;
53e12c5d1SDavid du Colombier extern long ninput, noutput, nrunes, nerrors;
63e12c5d1SDavid du Colombier 
73e12c5d1SDavid du Colombier enum { From = 1, Table = 2, Func = 4 };
83e12c5d1SDavid du Colombier 
9*219b2ee8SDavid du Colombier typedef void (*Fnptr)(void);
103e12c5d1SDavid du Colombier struct convert{
113e12c5d1SDavid du Colombier 	char *name;
123e12c5d1SDavid du Colombier 	char *chatter;
133e12c5d1SDavid du Colombier 	int flags;
143e12c5d1SDavid du Colombier 	void *data;
15*219b2ee8SDavid du Colombier 	Fnptr fn;
16*219b2ee8SDavid du Colombier };
17*219b2ee8SDavid du Colombier extern struct convert convert[];
183e12c5d1SDavid du Colombier struct convert *conv(char *, int);
193e12c5d1SDavid du Colombier typedef void (*Infn)(int, long *, struct convert *);
203e12c5d1SDavid du Colombier typedef void (*Outfn)(Rune *, int, long *);
213e12c5d1SDavid du Colombier void outtable(Rune *, int, long *);
223e12c5d1SDavid du Colombier 
233e12c5d1SDavid du Colombier void utf_in(int, long *, struct convert *);
243e12c5d1SDavid du Colombier void utf_out(Rune *, int, long *);
253e12c5d1SDavid du Colombier void isoutf_in(int, long *, struct convert *);
263e12c5d1SDavid du Colombier void isoutf_out(Rune *, int, long *);
273e12c5d1SDavid du Colombier 
28*219b2ee8SDavid du Colombier #define		N		10000		/* just blocking */
293e12c5d1SDavid du Colombier #define	OUT(out, r, n)	if(out->flags&Table) outtable(r, n, (long *)out->data);\
30*219b2ee8SDavid du Colombier 			else ((Outfn)(out->fn))(r, n, (long *)0)
313e12c5d1SDavid du Colombier 
32*219b2ee8SDavid du Colombier extern Rune runes[N];
33*219b2ee8SDavid du Colombier extern char obuf[UTFmax*N];	/* maximum bloat from N runes */
34bd389b36SDavid du Colombier 
35bd389b36SDavid du Colombier #define		BADMAP		(0xFFFD)
36*219b2ee8SDavid du Colombier #define		BYTEBADMAP	('?')		/* badmap but has to fit in a byte */
37bd389b36SDavid du Colombier #define		ESC		033
38*219b2ee8SDavid du Colombier 
39*219b2ee8SDavid du Colombier #ifdef	PLAN9
40*219b2ee8SDavid du Colombier #define	EPR		fprint(2,
41*219b2ee8SDavid du Colombier #define	EXIT(n,s)	exits(s)
42*219b2ee8SDavid du Colombier #else
43*219b2ee8SDavid du Colombier #define	EPR		fprintf(stderr,
44*219b2ee8SDavid du Colombier #define	USED(x)		/* in plan 9, USED(x) tells the compiler to treat x as used */
45*219b2ee8SDavid du Colombier #define	EXIT(n,s)	exit(n)
46*219b2ee8SDavid du Colombier #endif
47