/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* Copyright (c) 1988 AT&T */ /* All Rights Reserved */ /* * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved. */ #include "m4.h" /* storage params */ int hshsize = DEF_HSHSIZE; /* hash table size (prime) */ int bufsize = DEF_BUFSIZE; /* pushback & arg text buffers */ int stksize = DEF_STKSIZE; /* call stack */ int toksize = DEF_TOKSIZE; /* biggest word ([a-z_][a-z0-9_]*) */ /* pushback buffer */ wchar_t *ibuf; /* buffer */ wchar_t *ibuflm; /* highest buffer addr */ wchar_t *ip; /* current position */ wchar_t *ipflr; /* buffer floor */ wchar_t *ipstk[10]; /* stack for "ipflr"s */ /* arg collection buffer */ wchar_t *obuf; /* buffer */ wchar_t *obuflm; /* high address */ wchar_t *op; /* current position */ /* call stack */ struct call *callst; /* stack */ struct call *Cp = NULL; /* position */ /* token storage */ wchar_t *token; /* buffer */ wchar_t *toklm; /* high addr */ /* file name and current line storage for line sync and diagnostics */ char *fname[11]; /* 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 */ ibuf_t ibuffer[11]; /* input buffer */ /* stuff for output diversions */ FILE *cf = stdout; /* current output file */ FILE *ofile[11] = {stdout}; /* output file stack */ int ofx; /* stack index */ /* comment markers */ wchar_t lcom[MAXSYM+1] = L"#"; wchar_t rcom[MAXSYM+1] = L"\n"; /* quote markers */ wchar_t lquote[MAXSYM+1] = L"`"; wchar_t rquote[MAXSYM+1] = L"\'"; /* argument ptr stack */ wchar_t **argstk; wchar_t *astklm; /* high address */ wchar_t **Ap; /* current position */ /* symbol table */ struct nlist **hshtab; /* hash table */ unsigned int hshval; /* last hash val */ /* misc */ char *procnam; /* argv[0] */ char *tempfile; /* used for diversion files */ struct Wrap *wrapstart = NULL; /* first entry in of list of "m4wrap" strings */ wchar_t nullstr[] = {0}; 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 */ int exitstat = OK; /* global exit status */ int wide; /* multi-byte locale */