extern.h (de9b3b9034ee0d39f3bff03b8368361d80cf728f) extern.h (e3d8671772982f3135d8d6997f3cd698cca4df19)
1/* $OpenBSD: extern.h,v 1.29 2002/02/16 21:27:48 millert Exp $ */
2/* $NetBSD: extern.h,v 1.3 1996/01/13 23:25:24 pk Exp $ */
3
1/*-
2 * Copyright (c) 1991, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * This code is derived from software contributed to Berkeley by
6 * Ozan Yigit at York University.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 20 unchanged lines hidden (view full) ---

29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34 * SUCH DAMAGE.
35 *
36 * @(#)extern.h 8.1 (Berkeley) 6/6/93
4/*-
5 * Copyright (c) 1991, 1993
6 * The Regents of the University of California. All rights reserved.
7 *
8 * This code is derived from software contributed to Berkeley by
9 * Ozan Yigit at York University.
10 *
11 * Redistribution and use in source and binary forms, with or without

--- 20 unchanged lines hidden (view full) ---

32 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
33 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
34 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
35 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
36 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
37 * SUCH DAMAGE.
38 *
39 * @(#)extern.h 8.1 (Berkeley) 6/6/93
37 * $FreeBSD$
38 */
39
40 */
41
40int expr __P((char *));
41ndptr addent __P((char *));
42void chrsave __P((int));
43void cleanup __P((int));
44void dochc __P((char *[], int));
45void dochq __P((char *[], int));
46void dodefine __P((char *, char *));
47void dodefn __P((char *));
48void dodiv __P((int));
49void dodump __P((char *[], int));
50void doifelse __P((char *[], int));
51int doincl __P((char *));
52int dopaste __P((char *));
53void dopushdef __P((char *, char *));
54void dosub __P((char *[], int));
55void doundiv __P((char *[], int));
56void eval __P((char *[], int, int));
57void expand __P((char *[], int));
58void getdiv __P((int));
59int hash __P((char *));
60int indx __P((char *, char *));
61void killdiv __P((void));
62ndptr lookup __P((char *));
63void map __P((char *, char *, char *, char *));
64void onintr __P((int));
65void pbnum __P((int));
66void pbstr __P((unsigned char *));
67void putback __P((int));
68void remhash __P((char *, int));
69void usage __P((void));
42/* eval.c */
43extern void eval(const char *[], int, int);
44extern void dodefine(const char *, const char *);
45extern unsigned long expansion_id;
70
46
47/* expr.c */
48extern int expr(const char *);
49
50/* gnum4.c */
51extern void addtoincludepath(const char *);
52extern struct input_file *fopen_trypath(struct input_file *, const char *);
53extern void doindir(const char *[], int);
54extern void dobuiltin(const char *[], int);
55extern void dopatsubst(const char *[], int);
56extern void doregexp(const char *[], int);
57
58extern void doprintlineno(struct input_file *);
59extern void doprintfilename(struct input_file *);
60
61extern void doesyscmd(const char *);
62
63
64/* look.c */
65extern ndptr addent(const char *);
66extern unsigned hash(const char *);
67extern ndptr lookup(const char *);
68extern void remhash(const char *, int);
69
70/* main.c */
71extern void outputstr(const char *);
72extern int builtin_type(const char *);
73extern char *builtin_realname(int);
74
75/* misc.c */
76extern void chrsave(int);
77extern char *compute_prevep(void);
78extern void getdiv(int);
79extern ptrdiff_t indx(const char *, const char *);
80extern void initspaces(void);
81extern void killdiv(void);
82extern void onintr(int);
83extern void pbnum(int);
84extern void pbunsigned(unsigned long);
85extern void pbstr(const char *);
86extern void putback(int);
87extern void *xalloc(size_t);
88extern char *xstrdup(const char *);
89extern void usage(void);
90extern void resizedivs(int);
91extern size_t buffer_mark(void);
92extern void dump_buffer(FILE *, size_t);
93
94extern int obtain_char(struct input_file *);
95extern void set_input(struct input_file *, FILE *, const char *);
96extern void release_input(struct input_file *);
97
98/* speeded-up versions of chrsave/putback */
99#define PUTBACK(c) \
100 do { \
101 if (bp >= endpbb) \
102 enlarge_bufspace(); \
103 *bp++ = (c); \
104 } while(0)
105
106#define CHRSAVE(c) \
107 do { \
108 if (ep >= endest) \
109 enlarge_strspace(); \
110 *ep++ = (c); \
111 } while(0)
112
113/* and corresponding exposure for local symbols */
114extern void enlarge_bufspace(void);
115extern void enlarge_strspace(void);
116extern char *endpbb;
117extern char *endest;
118
119/* trace.c */
120extern void mark_traced(const char *, int);
121extern int is_traced(const char *);
122extern void trace_file(const char *);
123extern ssize_t trace(const char **, int, struct input_file *);
124extern void finish_trace(size_t);
125extern int traced_macros;
126extern void set_trace_flags(const char *);
127extern FILE *traceout;
128
71extern ndptr hashtab[]; /* hash table for macros etc. */
129extern ndptr hashtab[]; /* hash table for macros etc. */
72extern stae mstack[]; /* stack of m4 machine */
130extern stae *mstack; /* stack of m4 machine */
131extern char *sstack; /* shadow stack, for string space extension */
73extern FILE *active; /* active output file pointer */
132extern FILE *active; /* active output file pointer */
74extern FILE *infile[]; /* input file stack (0=stdin) */
75extern FILE *outfile[]; /* diversion array(0=bitbucket) */
133extern struct input_file infile[];/* input file stack (0=stdin) */
134extern FILE **outfile; /* diversion array(0=bitbucket) */
135extern int maxout; /* maximum number of diversions */
76extern int fp; /* m4 call frame pointer */
77extern int ilevel; /* input file stack pointer */
78extern int oindex; /* diversion index. */
79extern int sp; /* current m4 stack pointer */
136extern int fp; /* m4 call frame pointer */
137extern int ilevel; /* input file stack pointer */
138extern int oindex; /* diversion index. */
139extern int sp; /* current m4 stack pointer */
80extern unsigned char *bp; /* first available character */
81extern unsigned char buf[]; /* push-back buffer */
82extern unsigned char *bufbase; /* buffer base for this ilevel */
83extern unsigned char *bbase[]; /* buffer base per ilevel */
84extern char ecommt; /* end character for comment */
85extern char *endest; /* end of string space */
86extern unsigned char *endpbb; /* end of push-back buffer */
140extern char *bp; /* first available character */
141extern char *buf; /* push-back buffer */
142extern char *bufbase; /* buffer base for this ilevel */
143extern char *bbase[]; /* buffer base per ilevel */
144extern char ecommt[MAXCCHARS+1];/* end character for comment */
87extern char *ep; /* first free char in strspace */
145extern char *ep; /* first free char in strspace */
88extern char lquote; /* left quote character (`) */
89extern char *m4dir; /* directory for temporary files */
90extern char *m4temp; /* filename for diversions */
146extern char lquote[MAXCCHARS+1];/* left quote character (`) */
91extern char *m4wraps; /* m4wrap string default. */
92extern char *null; /* as it says.. just a null. */
147extern char *m4wraps; /* m4wrap string default. */
148extern char *null; /* as it says.. just a null. */
93extern char rquote; /* right quote character (') */
94extern char scommt; /* start character for comment */
149extern char rquote[MAXCCHARS+1];/* right quote character (') */
150extern char scommt[MAXCCHARS+1];/* start character for comment */
151
152extern int mimic_gnu; /* behaves like gnu-m4 */