104 lines
2.8 KiB
C
104 lines
2.8 KiB
C
/* Copyright (c) 1990, 1991 UNIX System Laboratories, Inc. */
|
|
/* Copyright (c) 1988 AT&T */
|
|
/* All Rights Reserved */
|
|
|
|
/* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF */
|
|
/* UNIX System Laboratories, Inc. */
|
|
/* The copyright notice above does not evidence any */
|
|
/* actual or intended publication of such source code. */
|
|
|
|
#ident "@(#)m4:m4ext.c 1.5"
|
|
#ident "@(#)m4:m4ext.c 1.4"
|
|
/* @(#)m4:m4ext.c 1.4 */
|
|
#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[11*(PATH_MAX+1)]; /* 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 *tempfile; /* used for diversion files */
|
|
struct wrap_info *Wrapstr; /* Header to the list of strings for "m4wrap" */
|
|
struct wrap_info *Curr_str; /* Pointer to current string for "m4wrap" */
|
|
int C; /* see "m4.h" macros */
|
|
char nullstr[] = "";
|
|
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";
|