Subversion Repositories planix.SVN

Rev

Rev 2 | Blame | Compare with Previous | Last modification | View Log | RSS feed

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