V10/cmd/m4/m4ext.c
#include <stdio.h>
#include "m4.h"
/* storage params */
int hshsize = 199; /* hash table size (prime) */
int bufsize = 4096; /* pushback & arg text buffers */
int stksize = 100; /* call stack */
int toksize = 512; /* biggest word ([a-z_][a-z0-9_]*) */
/* pushback buffer */
char *ibuf; /* buffer */
char *ibuflm; /* highest buffer addr */
char *ip; /* current position */
char *ipflr; /* buffer floor */
char *ipstk[10]; /* stack for "ipflr"s */
/* arg collection buffer */
char *obuf; /* buffer */
char *obuflm; /* high address */
char *op; /* current position */
/* call stack */
struct call *callst; /* stack */
struct call *Cp = NULL; /* position */
/* token storage */
char *token; /* buffer */
char *toklm; /* high addr */
/* file name and current line storage for line sync and diagnostics */
char fnbuf[200]; /* holds file name strings */
char *fname[11] = {fnbuf}; /* file name ptr stack */
int fline[10]; /* current line nbr stack */
/* input file stuff for "include"s */
FILE *ifile[10] = {stdin}; /* stack */
int ifx; /* stack index */
/* stuff for output diversions */
FILE *cf = stdout; /* current output file */
FILE *ofile[11] = {stdout}; /* output file stack */
int ofx; /* stack index */
/* comment markers */
char lcom[MAXSYM+1] = "#";
char rcom[MAXSYM+1] = "\n";
/* quote markers */
char lquote[MAXSYM+1] = "`";
char rquote[MAXSYM+1] = "'";
/* argument ptr stack */
char **argstk;
char **astklm; /* high address */
char **Ap; /* current position */
/* symbol table */
struct nlist **hshtab; /* hash table */
int hshval; /* last hash val */
/* misc */
char *procnam; /* argv[0] */
char *tempname; /* used for diversion files */
char *Wrapstr; /* last pushback string for "m4wrap" */
char nullstr[] = "";
int C; /* see "m4.h" macros */
int nflag = 1; /* name flag, used for line sync code */
int sflag; /* line sync flag */
int sysrval; /* return val from syscmd */
int trace; /* global trace flag */
char aofmsg[] = "more than %d chars of argument text";
char astkof[] = "more than %d items on argument stack";
char badfile[] = "can't open file";
char nocore[] = "out of storage";
char pbmsg[] = "pushed back more than %d chars";
/* char map */
char type[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, SPACE, SPACE, SPACE, SPACE, SPACE, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
SPACE, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
DIG, DIG, DIG, DIG, DIG, DIG, DIG, DIG,
DIG, DIG, 0, 0, 0, 0, 0, 0,
0, ALPH, ALPH, ALPH, ALPH, ALPH, ALPH, ALPH,
ALPH, ALPH, ALPH, ALPH, ALPH, ALPH, ALPH, ALPH,
ALPH, ALPH, ALPH, ALPH, ALPH, ALPH, ALPH, ALPH,
ALPH, ALPH, ALPH, 0, 0, 0, 0, ALPH,
0, ALPH, ALPH, ALPH, ALPH, ALPH, ALPH, ALPH,
ALPH, ALPH, ALPH, ALPH, ALPH, ALPH, ALPH, ALPH,
ALPH, ALPH, ALPH, ALPH, ALPH, ALPH, ALPH, ALPH,
ALPH, ALPH, ALPH, 0, 0, 0, 0, 0,
};