xref: /openbsd-src/usr.bin/awk/proto.h (revision b2ea75c1b17e1a9a339660e7ed45cd24946b230e)
1 /*	$OpenBSD: proto.h,v 1.6 1999/12/08 23:09:46 millert Exp $	*/
2 /****************************************************************
3 Copyright (C) Lucent Technologies 1997
4 All Rights Reserved
5 
6 Permission to use, copy, modify, and distribute this software and
7 its documentation for any purpose and without fee is hereby
8 granted, provided that the above copyright notice appear in all
9 copies and that both that the copyright notice and this
10 permission notice and warranty disclaimer appear in supporting
11 documentation, and that the name Lucent Technologies or any of
12 its entities not be used in advertising or publicity pertaining
13 to distribution of the software without specific, written prior
14 permission.
15 
16 LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
17 INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
18 IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
19 SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
20 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
21 IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
22 ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
23 THIS SOFTWARE.
24 ****************************************************************/
25 
26 extern	int	yywrap(void);
27 extern	void	setfname(Cell *);
28 extern	int	constnode(Node *);
29 extern	char	*strnode(Node *);
30 extern	Node	*notnull(Node *);
31 extern	int	yyparse(void);
32 
33 extern	int	yylex(void);
34 extern	void	startreg(void);
35 extern	int	input(void);
36 extern	void	unput(int);
37 extern	void	unputstr(char *);
38 extern	int	yylook(void);
39 extern	int	yyback(int *, int);
40 extern	int	yyinput(void);
41 
42 extern	fa	*makedfa(char *, int);
43 extern	fa	*mkdfa(char *, int);
44 extern	int	makeinit(fa *, int);
45 extern	void	penter(Node *);
46 extern	void	freetr(Node *);
47 extern	int	hexstr(char **);
48 extern	int	quoted(char **);
49 extern	char	*cclenter(char *);
50 extern	void	overflo(char *);
51 extern	void	cfoll(fa *, Node *);
52 extern	int	first(Node *);
53 extern	void	follow(Node *);
54 extern	int	member(int, char *);
55 extern	int	match(fa *, char *);
56 extern	int	pmatch(fa *, char *);
57 extern	int	nematch(fa *, char *);
58 extern	Node	*reparse(char *);
59 extern	Node	*regexp(void);
60 extern	Node	*primary(void);
61 extern	Node	*concat(Node *);
62 extern	Node	*alt(Node *);
63 extern	Node	*unary(Node *);
64 extern	int	relex(void);
65 extern	int	cgoto(fa *, int, int);
66 extern	void	freefa(fa *);
67 
68 extern	int	pgetc(void);
69 extern	char	*cursource(void);
70 
71 extern	Node	*nodealloc(int);
72 extern	Node	*exptostat(Node *);
73 extern	Node	*node1(int, Node *);
74 extern	Node	*node2(int, Node *, Node *);
75 extern	Node	*node3(int, Node *, Node *, Node *);
76 extern	Node	*node4(int, Node *, Node *, Node *, Node *);
77 extern	Node	*stat3(int, Node *, Node *, Node *);
78 extern	Node	*op2(int, Node *, Node *);
79 extern	Node	*op1(int, Node *);
80 extern	Node	*stat1(int, Node *);
81 extern	Node	*op3(int, Node *, Node *, Node *);
82 extern	Node	*op4(int, Node *, Node *, Node *, Node *);
83 extern	Node	*stat2(int, Node *, Node *);
84 extern	Node	*stat4(int, Node *, Node *, Node *, Node *);
85 extern	Node	*celltonode(Cell *, int);
86 extern	Node	*rectonode(void);
87 extern	Node	*makearr(Node *);
88 extern	Node	*pa2stat(Node *, Node *, Node *);
89 extern	Node	*linkum(Node *, Node *);
90 extern	void	defn(Cell *, Node *, Node *);
91 extern	int	isarg(char *);
92 extern	char	*tokname(int);
93 extern	Cell	*(*proctab[])(Node **, int);
94 extern	int	ptoi(void *);
95 extern	Node	*itonp(int);
96 
97 extern	void	syminit(void);
98 extern	void	arginit(int, char **);
99 extern	void	envinit(char **);
100 extern	Array	*makesymtab(int);
101 extern	void	freesymtab(Cell *);
102 extern	void	freeelem(Cell *, char *);
103 extern	Cell	*setsymtab(char *, char *, double, unsigned int, Array *);
104 extern	int	hash(char *, int);
105 extern	void	rehash(Array *);
106 extern	Cell	*lookup(char *, Array *);
107 extern	double	setfval(Cell *, double);
108 extern	void	funnyvar(Cell *, char *);
109 extern	char	*setsval(Cell *, char *);
110 extern	double	getfval(Cell *);
111 extern	char	*getsval(Cell *);
112 extern	char	*tostring(char *);
113 extern	char	*qstring(char *, int);
114 
115 extern	void	recinit(unsigned int);
116 extern	void	initgetrec(void);
117 extern	void	makefields(int, int);
118 extern	void	growfldtab(int n);
119 extern	int	getrec(char **, int *, int);
120 extern	void	nextfile(void);
121 extern	int	readrec(char **buf, int *bufsize, FILE *inf);
122 extern	char	*getargv(int);
123 extern	void	setclvar(char *);
124 extern	void	fldbld(void);
125 extern	void	cleanfld(int, int);
126 extern	void	newfld(int);
127 extern	int	refldbld(char *, char *);
128 extern	void	recbld(void);
129 extern	Cell	*fieldadr(int);
130 extern	void	yyerror(char *);
131 extern	void	fpecatch(int);
132 extern	void	bracecheck(void);
133 extern	void	bcheck2(int, int, int);
134 extern	void	SYNTAX(char *, ...);
135 extern	void	FATAL(char *, ...);
136 extern	void	WARNING(char *, ...);
137 extern	void	error(void);
138 extern	void	eprint(void);
139 extern	void	bclass(int);
140 extern	double	errcheck(double, char *);
141 extern	int	isclvar(char *);
142 extern	int	is_number(char *);
143 
144 extern	int	adjbuf(char **pb, int *sz, int min, int q, char **pbp, char *what);
145 extern	void	run(Node *);
146 extern	Cell	*execute(Node *);
147 extern	Cell	*program(Node **, int);
148 extern	Cell	*call(Node **, int);
149 extern	Cell	*copycell(Cell *);
150 extern	Cell	*arg(Node **, int);
151 extern	Cell	*jump(Node **, int);
152 extern	Cell	*getline(Node **, int);
153 extern	Cell	*getnf(Node **, int);
154 extern	Cell	*array(Node **, int);
155 extern	Cell	*awkdelete(Node **, int);
156 extern	Cell	*intest(Node **, int);
157 extern	Cell	*matchop(Node **, int);
158 extern	Cell	*boolop(Node **, int);
159 extern	Cell	*relop(Node **, int);
160 extern	void	tfree(Cell *);
161 extern	Cell	*gettemp(void);
162 extern	Cell	*field(Node **, int);
163 extern	Cell	*indirect(Node **, int);
164 extern	Cell	*substr(Node **, int);
165 extern	Cell	*sindex(Node **, int);
166 extern	int	format(char **, int *, char *, Node *);
167 extern	Cell	*awksprintf(Node **, int);
168 extern	Cell	*awkprintf(Node **, int);
169 extern	Cell	*arith(Node **, int);
170 extern	double	ipow(double, int);
171 extern	Cell	*incrdecr(Node **, int);
172 extern	Cell	*assign(Node **, int);
173 extern	Cell	*cat(Node **, int);
174 extern	Cell	*pastat(Node **, int);
175 extern	Cell	*dopa2(Node **, int);
176 extern	Cell	*split(Node **, int);
177 extern	Cell	*condexpr(Node **, int);
178 extern	Cell	*ifstat(Node **, int);
179 extern	Cell	*whilestat(Node **, int);
180 extern	Cell	*dostat(Node **, int);
181 extern	Cell	*forstat(Node **, int);
182 extern	Cell	*instat(Node **, int);
183 extern	Cell	*bltin(Node **, int);
184 extern	Cell	*printstat(Node **, int);
185 extern	Cell	*nullproc(Node **, int);
186 extern	FILE	*redirect(int, Node *);
187 extern	FILE	*openfile(int, char *);
188 extern	char	*filename(FILE *);
189 extern	Cell	*closefile(Node **, int);
190 extern	void	closeall(void);
191 extern	Cell	*sub(Node **, int);
192 extern	Cell	*gsub(Node **, int);
193 
194 extern	FILE	*popen(const char *, const char *);
195 extern	int	pclose(FILE *);
196