| #include <stdio.h> |
| #include <stdlib.h> |
| #include <math.h> |
| #include <ctype.h> |
| #include <string.h> |
| |
| // 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 |