Blob


1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4 #include <errno.h>
5 #include <inttypes.h>
7 #undef sqrt
8 #define sqrt p9_sqrt
9 #define YYSTYPE uintptr_t /* DEC v. GNU garbage */
11 enum charclass {
12 OTHER, OLET, ILET, DIG, LPAR, RPAR, SLASH, PLUS, ILETF, ILETJ, VBAR,
13 NONE, LAST
14 };
15 extern int class[LAST][LAST];
17 #define dprintf if (dbg) printf
18 #define max(x,y) (((x) >= (y)) ? (x) : (y)) /* beware of side effects */
19 #define min(x,y) (((x) <= (y)) ? (x) : (y))
21 #undef sprintf /* Snow Leopard */
23 extern char errbuf[2000];
24 extern char *cmdname;
25 #define ERROR sprintf(errbuf,
26 #define FATAL ), error(1, errbuf)
27 #define WARNING ), error(0, errbuf)
28 #define SYNTAX ), yyerror(errbuf)
30 #define ROM '1'
31 #define ITAL '2'
32 #define BLD '3'
33 #define BDIT '4'
35 #define DEFGAP -999 /* default gap in piles */
37 extern int dbg;
38 extern int ct;
39 extern int lp[];
40 extern int used[]; /* available registers */
41 extern int ps; /* dflt init pt size */
42 extern int deltaps; /* default change in ps */
43 extern int dps_set; /* 1 => -p option used */
44 extern int gsize; /* global size */
45 extern int ft; /* default font */
46 extern int display; /* 1 => inline, 0 => .EQ/.EN */
47 extern int synerr; /* 1 if syntax error in this eqn */
49 extern char *typesetter; /* typesetter name for -T... */
50 extern int minsize; /* min size it can print */
51 extern int ttype; /* actual type of typesetter: */
53 #define DEVCAT 1
54 #define DEV202 2
55 #define DEVAPS 3
56 #define DEVPOST 4
58 extern double eht[];
59 extern double ebase[];
60 extern int lfont[];
61 extern int rfont[];
62 extern int lclass[];
63 extern int rclass[];
64 extern YYSTYPE yyval; /* DEC cc wants long */
65 extern YYSTYPE yylval; /* DEC cc wants long */
66 extern int eqnreg;
67 extern double eqnht;
68 extern int lefteq, righteq;
69 extern int markline; /* 1 if this EQ/EN contains mark or lineup */
71 #define TBLSIZE 100
73 typedef struct s_tbl {
74 char *name; /* e.g., "max" or "sum" */
75 char *cval; /* e.g., "\\f1max\\fP" */
76 int ival; /* or SUM */
77 struct s_tbl *next;
78 } tbl;
80 extern char *spaceval; /* use in place of normal \x (for pic) */
82 #define String 01
83 #define Macro 02
84 #define File 04
85 #define Char 010
86 #define Free 040
88 typedef struct infile {
89 FILE *fin;
90 char *fname;
91 int lineno;
92 } Infile;
94 typedef struct { /* input source */
95 int type; /* Macro, String, File */
96 char *sp; /* if String or Macro */
97 } Src;
99 extern Src src[], *srcp; /* input source stack */
101 #define MAXARGS 20
102 typedef struct { /* argument stack */
103 char *argstk[MAXARGS]; /* pointers to args */
104 char *argval; /* points to space containing args */
105 } Arg;
107 typedef struct { /* font number and name */
108 int ft;
109 char name[10];
110 } Font;
112 extern Font ftstack[];
113 extern Font *ftp;
115 extern int szstack[];
116 extern int nszstack;
118 extern Infile infile[10];
119 extern Infile *curfile;
121 extern tbl *lookup(tbl **tblp, char *name);
122 extern void install(tbl **tblp, char *name, char *cval, int ival);
123 extern tbl *keytbl[], *deftbl[], *restbl[], *ftunetbl[];
125 extern int salloc(void);
126 extern void sfree(int);
127 extern void nrwid(int, int, int);
128 extern char *ABSPS(int);
129 extern char *DPS(int, int);
130 extern int EFFPS(int);
131 extern double EM(double, int);
132 extern double REL(double, int);
133 extern char *pad(int);
134 extern void getstr(char *, int);
135 extern char *strsave(char *);
137 extern int input(void);
138 extern int unput(int);
139 extern void pbstr(char *);
140 extern void error(int, char *);
141 extern void yyerror(char *);
143 extern void diacrit(int, int);
144 extern void eqnbox(int, int, int);
145 extern void setfont(char *);
146 extern void font(int, int);
147 extern void globfont(void);
148 extern void fatbox(int);
149 extern void fromto(int, int, int);
150 extern void funny(int);
151 extern void integral(int, int, int);
152 extern void setintegral(void);
153 extern void pushsrc(int, char *);
154 extern void popsrc(void);
155 extern void putout(int);
156 extern void text(int, char *);
157 extern void subsup(int, int, int);
158 extern void bshiftb(int, int, int);
159 extern void shift2(int, int, int);
160 extern void setsize(char *);
161 extern void size(int, int);
162 extern void globsize(void);
163 extern void sqrt(int);
164 extern void text(int, char *);
165 extern void boverb(int, int);
166 extern void lineup(int);
167 extern void mark(int);
168 extern void paren(int, int, int);
169 extern void move(int, int, int);
170 extern void pile(int);
171 extern int startcol(int);
172 extern void column(int, int);
173 extern void matrix(int);