55 lines · 1.6 KB · C
RawDownload
/*  * This file is part of the UCB release of Plan 9. It is subject to the license * terms in the LICENSE file found in the top-level directory of this * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No * part of the UCB release of Plan 9, including this file, may be copied, * modified, propagated, or distributed except according to the terms contained * in the LICENSE file. */ extern int squawk;extern int clean;extern char *file;extern int verbose;extern long ninput, noutput, nrunes, nerrors; enum { From = 1, Table = 2, Func = 4 }; typedef void (*Fnptr)(void);struct convert{	char *name;	char *chatter;	int flags;	void *data;	Fnptr fn;};extern struct convert convert[];struct convert *conv(char *, int);typedef void (*Infn)(int, long *, struct convert *);typedef void (*Outfn)(Rune *, int, long *);void outtable(Rune *, int, long *); void utf_in(int, long *, struct convert *);void utf_out(Rune *, int, long *);void isoutf_in(int, long *, struct convert *);void isoutf_out(Rune *, int, long *); #define		N		10000		/* just blocking */#define	OUT(out, r, n)	if(out->flags&Table) outtable(r, n, (long *)out->data);\			else ((Outfn)(out->fn))(r, n, (long *)0) extern Rune runes[N];extern char obuf[UTFmax*N];	/* maximum bloat from N runes */ #define		BADMAP		(0xFFFD)#define		BYTEBADMAP	('?')		/* badmap but has to fit in a byte */#define		ESC		033 #ifdef	PLAN9#define	EPR		fprint(2,#define	EXIT(n,s)	exits(s)#else#define	EPR		fprintf(stderr,#define	USED(x)		/* in plan 9, USED(x) tells the compiler to treat x as used */#define	EXIT(n,s)	exit(n)#endif