/* * 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
/*
* 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