xref: /plan9/sys/src/cmd/awk/proto.h (revision 7dd7cddf99dd7472612f1413b4da293630e6b1bc)
1*7dd7cddfSDavid du Colombier /****************************************************************
2*7dd7cddfSDavid du Colombier Copyright (C) Lucent Technologies 1997
3*7dd7cddfSDavid du Colombier All Rights Reserved
4*7dd7cddfSDavid du Colombier 
5*7dd7cddfSDavid du Colombier Permission to use, copy, modify, and distribute this software and
6*7dd7cddfSDavid du Colombier its documentation for any purpose and without fee is hereby
7*7dd7cddfSDavid du Colombier granted, provided that the above copyright notice appear in all
8*7dd7cddfSDavid du Colombier copies and that both that the copyright notice and this
9*7dd7cddfSDavid du Colombier permission notice and warranty disclaimer appear in supporting
10*7dd7cddfSDavid du Colombier documentation, and that the name Lucent Technologies or any of
11*7dd7cddfSDavid du Colombier its entities not be used in advertising or publicity pertaining
12*7dd7cddfSDavid du Colombier to distribution of the software without specific, written prior
13*7dd7cddfSDavid du Colombier permission.
14*7dd7cddfSDavid du Colombier 
15*7dd7cddfSDavid du Colombier LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
16*7dd7cddfSDavid du Colombier INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
17*7dd7cddfSDavid du Colombier IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
18*7dd7cddfSDavid du Colombier SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
19*7dd7cddfSDavid du Colombier WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
20*7dd7cddfSDavid du Colombier IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
21*7dd7cddfSDavid du Colombier ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
22*7dd7cddfSDavid du Colombier THIS SOFTWARE.
23*7dd7cddfSDavid du Colombier ****************************************************************/
24*7dd7cddfSDavid du Colombier 
253e12c5d1SDavid du Colombier extern	int	yywrap(void);
263e12c5d1SDavid du Colombier extern	void	setfname(Cell *);
273e12c5d1SDavid du Colombier extern	int	constnode(Node *);
28*7dd7cddfSDavid du Colombier extern	char	*strnode(Node *);
293e12c5d1SDavid du Colombier extern	Node	*notnull(Node *);
303e12c5d1SDavid du Colombier extern	int	yyparse(void);
313e12c5d1SDavid du Colombier 
323e12c5d1SDavid du Colombier extern	int	yylex(void);
333e12c5d1SDavid du Colombier extern	void	startreg(void);
343e12c5d1SDavid du Colombier extern	int	input(void);
353e12c5d1SDavid du Colombier extern	void	unput(int);
363e12c5d1SDavid du Colombier extern	void	unputstr(char *);
373e12c5d1SDavid du Colombier extern	int	yylook(void);
383e12c5d1SDavid du Colombier extern	int	yyback(int *, int);
393e12c5d1SDavid du Colombier extern	int	yyinput(void);
403e12c5d1SDavid du Colombier 
41*7dd7cddfSDavid du Colombier extern	void	*compre(char *);
423e12c5d1SDavid du Colombier extern	int	hexstr(char **);
43*7dd7cddfSDavid du Colombier extern	void	quoted(char **, char **, char *);
44*7dd7cddfSDavid du Colombier extern	int	match(void *, char *, char *);
45*7dd7cddfSDavid du Colombier extern	int	pmatch(void *, char *, char *);
46*7dd7cddfSDavid du Colombier extern	int	nematch(void *, char *, char *);
47*7dd7cddfSDavid du Colombier extern	int	countposn(char *, int);
483e12c5d1SDavid du Colombier extern	void	overflow(void);
493e12c5d1SDavid du Colombier 
503e12c5d1SDavid du Colombier extern	int	pgetc(void);
51*7dd7cddfSDavid du Colombier extern	char	*cursource(void);
523e12c5d1SDavid du Colombier 
533e12c5d1SDavid du Colombier extern	Node	*nodealloc(int);
543e12c5d1SDavid du Colombier extern	Node	*exptostat(Node *);
553e12c5d1SDavid du Colombier extern	Node	*node1(int, Node *);
563e12c5d1SDavid du Colombier extern	Node	*node2(int, Node *, Node *);
573e12c5d1SDavid du Colombier extern	Node	*node3(int, Node *, Node *, Node *);
583e12c5d1SDavid du Colombier extern	Node	*node4(int, Node *, Node *, Node *, Node *);
593e12c5d1SDavid du Colombier extern	Node	*stat3(int, Node *, Node *, Node *);
603e12c5d1SDavid du Colombier extern	Node	*op2(int, Node *, Node *);
613e12c5d1SDavid du Colombier extern	Node	*op1(int, Node *);
623e12c5d1SDavid du Colombier extern	Node	*stat1(int, Node *);
633e12c5d1SDavid du Colombier extern	Node	*op3(int, Node *, Node *, Node *);
643e12c5d1SDavid du Colombier extern	Node	*op4(int, Node *, Node *, Node *, Node *);
653e12c5d1SDavid du Colombier extern	Node	*stat2(int, Node *, Node *);
663e12c5d1SDavid du Colombier extern	Node	*stat4(int, Node *, Node *, Node *, Node *);
67*7dd7cddfSDavid du Colombier extern	Node	*celltonode(Cell *, int);
683e12c5d1SDavid du Colombier extern	Node	*rectonode(void);
693e12c5d1SDavid du Colombier extern	Node	*makearr(Node *);
703e12c5d1SDavid du Colombier extern	Node	*pa2stat(Node *, Node *, Node *);
713e12c5d1SDavid du Colombier extern	Node	*linkum(Node *, Node *);
723e12c5d1SDavid du Colombier extern	void	defn(Cell *, Node *, Node *);
73*7dd7cddfSDavid du Colombier extern	int	isarg(char *);
74*7dd7cddfSDavid du Colombier extern	char	*tokname(int);
753e12c5d1SDavid du Colombier extern	Cell	*(*proctab[])(Node **, int);
76*7dd7cddfSDavid du Colombier extern	int	ptoi(void *);
77*7dd7cddfSDavid du Colombier extern	Node	*itonp(int);
783e12c5d1SDavid du Colombier 
793e12c5d1SDavid du Colombier extern	void	syminit(void);
80*7dd7cddfSDavid du Colombier extern	void	arginit(int, char **);
81*7dd7cddfSDavid du Colombier extern	void	envinit(char **);
823e12c5d1SDavid du Colombier extern	Array	*makesymtab(int);
833e12c5d1SDavid du Colombier extern	void	freesymtab(Cell *);
84*7dd7cddfSDavid du Colombier extern	void	freeelem(Cell *, char *);
85*7dd7cddfSDavid du Colombier extern	Cell	*setsymtab(char *, char *, double, unsigned int, Array *);
86*7dd7cddfSDavid du Colombier extern	int	hash(char *, int);
873e12c5d1SDavid du Colombier extern	void	rehash(Array *);
88*7dd7cddfSDavid du Colombier extern	Cell	*lookup(char *, Array *);
893e12c5d1SDavid du Colombier extern	double	setfval(Cell *, double);
903e12c5d1SDavid du Colombier extern	void	funnyvar(Cell *, char *);
91*7dd7cddfSDavid du Colombier extern	char	*setsval(Cell *, char *);
92*7dd7cddfSDavid du Colombier extern	double	getfval(Cell *);
93*7dd7cddfSDavid du Colombier extern	char	*getsval(Cell *);
94*7dd7cddfSDavid du Colombier extern	char	*tostring(char *);
95*7dd7cddfSDavid du Colombier extern	char	*qstring(char *, int);
963e12c5d1SDavid du Colombier 
97219b2ee8SDavid du Colombier extern	void	recinit(unsigned int);
983e12c5d1SDavid du Colombier extern	void	initgetrec(void);
99*7dd7cddfSDavid du Colombier extern	void	makefields(int, int);
100*7dd7cddfSDavid du Colombier extern	void	growfldtab(int n);
101*7dd7cddfSDavid du Colombier extern	int	getrec(char **, int *, int);
102*7dd7cddfSDavid du Colombier extern	void	nextfile(void);
103*7dd7cddfSDavid du Colombier extern	int	readrec(char **buf, int *bufsize, FILE *inf);
104*7dd7cddfSDavid du Colombier extern	char	*getargv(int);
105*7dd7cddfSDavid du Colombier extern	void	setclvar(char *);
1063e12c5d1SDavid du Colombier extern	void	fldbld(void);
1073e12c5d1SDavid du Colombier extern	void	cleanfld(int, int);
1083e12c5d1SDavid du Colombier extern	void	newfld(int);
109*7dd7cddfSDavid du Colombier extern	int	refldbld(char *, char *);
1103e12c5d1SDavid du Colombier extern	void	recbld(void);
1113e12c5d1SDavid du Colombier extern	Cell	*fieldadr(int);
1123e12c5d1SDavid du Colombier extern	void	yyerror(char *);
1133e12c5d1SDavid du Colombier extern	void	fpecatch(int);
1143e12c5d1SDavid du Colombier extern	void	bracecheck(void);
1153e12c5d1SDavid du Colombier extern	void	bcheck2(int, int, int);
116*7dd7cddfSDavid du Colombier extern	void	SYNTAX(char *, ...);
117*7dd7cddfSDavid du Colombier extern	void	FATAL(char *, ...);
118*7dd7cddfSDavid du Colombier extern	void	WARNING(char *, ...);
119*7dd7cddfSDavid du Colombier extern	void	error(void);
1203e12c5d1SDavid du Colombier extern	void	eprint(void);
1213e12c5d1SDavid du Colombier extern	void	bclass(int);
122*7dd7cddfSDavid du Colombier extern	double	errcheck(double, char *);
123*7dd7cddfSDavid du Colombier extern	int	isclvar(char *);
124*7dd7cddfSDavid du Colombier extern	int	is_number(char *);
1253e12c5d1SDavid du Colombier 
126*7dd7cddfSDavid du Colombier extern	int	adjbuf(char **pb, int *sz, int min, int q, char **pbp, char *what);
1273e12c5d1SDavid du Colombier extern	void	run(Node *);
128*7dd7cddfSDavid du Colombier extern	Cell	*execute(Node *);
1293e12c5d1SDavid du Colombier extern	Cell	*program(Node **, int);
1303e12c5d1SDavid du Colombier extern	Cell	*call(Node **, int);
1313e12c5d1SDavid du Colombier extern	Cell	*copycell(Cell *);
1323e12c5d1SDavid du Colombier extern	Cell	*arg(Node **, int);
1333e12c5d1SDavid du Colombier extern	Cell	*jump(Node **, int);
1343e12c5d1SDavid du Colombier extern	Cell	*getline(Node **, int);
1353e12c5d1SDavid du Colombier extern	Cell	*getnf(Node **, int);
1363e12c5d1SDavid du Colombier extern	Cell	*array(Node **, int);
137*7dd7cddfSDavid du Colombier extern	Cell	*awkdelete(Node **, int);
1383e12c5d1SDavid du Colombier extern	Cell	*intest(Node **, int);
1393e12c5d1SDavid du Colombier extern	Cell	*matchop(Node **, int);
1403e12c5d1SDavid du Colombier extern	Cell	*boolop(Node **, int);
1413e12c5d1SDavid du Colombier extern	Cell	*relop(Node **, int);
1423e12c5d1SDavid du Colombier extern	void	tfree(Cell *);
1433e12c5d1SDavid du Colombier extern	Cell	*gettemp(void);
1443e12c5d1SDavid du Colombier extern	Cell	*field(Node **, int);
1453e12c5d1SDavid du Colombier extern	Cell	*indirect(Node **, int);
1463e12c5d1SDavid du Colombier extern	Cell	*substr(Node **, int);
1473e12c5d1SDavid du Colombier extern	Cell	*sindex(Node **, int);
148*7dd7cddfSDavid du Colombier extern	int	format(char **, int *, char *, Node *);
149*7dd7cddfSDavid du Colombier extern	Cell	*awksprintf(Node **, int);
150*7dd7cddfSDavid du Colombier extern	Cell	*awkprintf(Node **, int);
1513e12c5d1SDavid du Colombier extern	Cell	*arith(Node **, int);
1523e12c5d1SDavid du Colombier extern	double	ipow(double, int);
1533e12c5d1SDavid du Colombier extern	Cell	*incrdecr(Node **, int);
1543e12c5d1SDavid du Colombier extern	Cell	*assign(Node **, int);
1553e12c5d1SDavid du Colombier extern	Cell	*cat(Node **, int);
1563e12c5d1SDavid du Colombier extern	Cell	*pastat(Node **, int);
1573e12c5d1SDavid du Colombier extern	Cell	*dopa2(Node **, int);
1583e12c5d1SDavid du Colombier extern	Cell	*split(Node **, int);
1593e12c5d1SDavid du Colombier extern	Cell	*condexpr(Node **, int);
1603e12c5d1SDavid du Colombier extern	Cell	*ifstat(Node **, int);
1613e12c5d1SDavid du Colombier extern	Cell	*whilestat(Node **, int);
1623e12c5d1SDavid du Colombier extern	Cell	*dostat(Node **, int);
1633e12c5d1SDavid du Colombier extern	Cell	*forstat(Node **, int);
1643e12c5d1SDavid du Colombier extern	Cell	*instat(Node **, int);
1653e12c5d1SDavid du Colombier extern	Cell	*bltin(Node **, int);
1663e12c5d1SDavid du Colombier extern	Cell	*printstat(Node **, int);
1673e12c5d1SDavid du Colombier extern	Cell	*nullproc(Node **, int);
1683e12c5d1SDavid du Colombier extern	FILE	*redirect(int, Node *);
169*7dd7cddfSDavid du Colombier extern	FILE	*openfile(int, char *);
170*7dd7cddfSDavid du Colombier extern	char	*filename(FILE *);
1713e12c5d1SDavid du Colombier extern	Cell	*closefile(Node **, int);
1723e12c5d1SDavid du Colombier extern	void	closeall(void);
1733e12c5d1SDavid du Colombier extern	Cell	*sub(Node **, int);
1743e12c5d1SDavid du Colombier extern	Cell	*gsub(Node **, int);
1753e12c5d1SDavid du Colombier 
176*7dd7cddfSDavid du Colombier extern	FILE	*popen(const char *, const char *);
177*7dd7cddfSDavid du Colombier extern	int	pclose(FILE *);
178