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