#include #include #include #include #include // XXX: Apparently necessary for g++ #define typename tyname extern char errbuf[]; extern char *progname; extern int linenum; extern int wantwarn; // #define ERROR fflush(stdout), fprintf(stderr, "%s: ", progname), fprintf(stderr, // #define FATAL ), exit(1) // #define WARNING ) #define ERROR fprintf(stdout, "\n#MESSAGE TO USER: "), sprintf(errbuf, #define FATAL ), fputs(errbuf, stdout), \ fprintf(stderr, "%s: ", progname), \ fputs(errbuf, stderr), \ fflush(stdout), \ exit(1) #define WARNING ), fputs(errbuf, stdout), \ wantwarn ? \ fprintf(stderr, "%s: ", progname), \ fputs(errbuf, stderr) : 0, \ fflush(stdout) #define eq(s,t) (strcmp(s,t) == 0) inline int max(int x, int y) { return x > y ? x : y; } inline int min(int x, int y) { return x > y ? y : x; } inline int abs(int x) { return (x >= 0) ? x : -x; } extern int dbg; extern int pn, userpn; // actual and user-defined page numbers extern int pagetop, pagebot; // printing margins extern int physbot; // physical bottom of the page