xref: /plan9-contrib/sys/src/cmd/awk/proto.h (revision a2c41696452f8a895ad2951a6355034fbc3034ed)
17dd7cddfSDavid du Colombier /****************************************************************
27dd7cddfSDavid du Colombier Copyright (C) Lucent Technologies 1997
37dd7cddfSDavid du Colombier All Rights Reserved
47dd7cddfSDavid du Colombier 
57dd7cddfSDavid du Colombier Permission to use, copy, modify, and distribute this software and
67dd7cddfSDavid du Colombier its documentation for any purpose and without fee is hereby
77dd7cddfSDavid du Colombier granted, provided that the above copyright notice appear in all
87dd7cddfSDavid du Colombier copies and that both that the copyright notice and this
97dd7cddfSDavid du Colombier permission notice and warranty disclaimer appear in supporting
107dd7cddfSDavid du Colombier documentation, and that the name Lucent Technologies or any of
117dd7cddfSDavid du Colombier its entities not be used in advertising or publicity pertaining
127dd7cddfSDavid du Colombier to distribution of the software without specific, written prior
137dd7cddfSDavid du Colombier permission.
147dd7cddfSDavid du Colombier 
157dd7cddfSDavid du Colombier LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
167dd7cddfSDavid du Colombier INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
177dd7cddfSDavid du Colombier IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
187dd7cddfSDavid du Colombier SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
197dd7cddfSDavid du Colombier WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
207dd7cddfSDavid du Colombier IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
217dd7cddfSDavid du Colombier ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
227dd7cddfSDavid du Colombier THIS SOFTWARE.
237dd7cddfSDavid du Colombier ****************************************************************/
247dd7cddfSDavid du Colombier 
253e12c5d1SDavid du Colombier extern	int	yywrap(void);
263e12c5d1SDavid du Colombier extern	void	setfname(Cell *);
273e12c5d1SDavid du Colombier extern	int	constnode(Node *);
287dd7cddfSDavid 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);
36*a2c41696SDavid du Colombier extern	void	unputstr(const 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 
417dd7cddfSDavid du Colombier extern	void	*compre(char *);
423e12c5d1SDavid du Colombier extern	int	hexstr(char **);
437dd7cddfSDavid du Colombier extern	void	quoted(char **, char **, char *);
447dd7cddfSDavid du Colombier extern	int	match(void *, char *, char *);
457dd7cddfSDavid du Colombier extern	int	pmatch(void *, char *, char *);
467dd7cddfSDavid du Colombier extern	int	nematch(void *, char *, char *);
477dd7cddfSDavid du Colombier extern	int	countposn(char *, int);
483e12c5d1SDavid du Colombier extern	void	overflow(void);
493e12c5d1SDavid du Colombier 
503e12c5d1SDavid du Colombier extern	int	pgetc(void);
517dd7cddfSDavid 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 *);
677dd7cddfSDavid 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*a2c41696SDavid du Colombier extern	int	isarg(const char *);
747dd7cddfSDavid du Colombier extern	char	*tokname(int);
753e12c5d1SDavid du Colombier extern	Cell	*(*proctab[])(Node **, int);
767dd7cddfSDavid du Colombier extern	int	ptoi(void *);
777dd7cddfSDavid du Colombier extern	Node	*itonp(int);
783e12c5d1SDavid du Colombier 
793e12c5d1SDavid du Colombier extern	void	syminit(void);
807dd7cddfSDavid du Colombier extern	void	arginit(int, char **);
817dd7cddfSDavid du Colombier extern	void	envinit(char **);
823e12c5d1SDavid du Colombier extern	Array	*makesymtab(int);
833e12c5d1SDavid du Colombier extern	void	freesymtab(Cell *);
84*a2c41696SDavid du Colombier extern	void	freeelem(Cell *, const char *);
85*a2c41696SDavid du Colombier extern	Cell	*setsymtab(const char *, const char *, double, unsigned int, Array *);
86*a2c41696SDavid du Colombier extern	int	hash(const char *, int);
873e12c5d1SDavid du Colombier extern	void	rehash(Array *);
88*a2c41696SDavid du Colombier extern	Cell	*lookup(const char *, Array *);
893e12c5d1SDavid du Colombier extern	double	setfval(Cell *, double);
90*a2c41696SDavid du Colombier extern	void	funnyvar(Cell *, const char *);
91*a2c41696SDavid du Colombier extern	char	*setsval(Cell *, const char *);
927dd7cddfSDavid du Colombier extern	double	getfval(Cell *);
937dd7cddfSDavid du Colombier extern	char	*getsval(Cell *);
94*a2c41696SDavid du Colombier extern	char	*getpssval(Cell *);     /* for print */
95*a2c41696SDavid du Colombier extern	char	*tostring(const char *);
96*a2c41696SDavid du Colombier extern	char	*qstring(const char *, int);
973e12c5d1SDavid du Colombier 
98219b2ee8SDavid du Colombier extern	void	recinit(unsigned int);
993e12c5d1SDavid du Colombier extern	void	initgetrec(void);
1007dd7cddfSDavid du Colombier extern	void	makefields(int, int);
1017dd7cddfSDavid du Colombier extern	void	growfldtab(int n);
1027dd7cddfSDavid du Colombier extern	int	getrec(char **, int *, int);
1037dd7cddfSDavid du Colombier extern	void	nextfile(void);
1047dd7cddfSDavid du Colombier extern	int	readrec(char **buf, int *bufsize, FILE *inf);
1057dd7cddfSDavid du Colombier extern	char	*getargv(int);
1067dd7cddfSDavid du Colombier extern	void	setclvar(char *);
1073e12c5d1SDavid du Colombier extern	void	fldbld(void);
1083e12c5d1SDavid du Colombier extern	void	cleanfld(int, int);
1093e12c5d1SDavid du Colombier extern	void	newfld(int);
110*a2c41696SDavid du Colombier extern	int	refldbld(const char *, const char *);
1113e12c5d1SDavid du Colombier extern	void	recbld(void);
1123e12c5d1SDavid du Colombier extern	Cell	*fieldadr(int);
113*a2c41696SDavid du Colombier extern	void	yyerror(const char *);
1143e12c5d1SDavid du Colombier extern	void	fpecatch(int);
1153e12c5d1SDavid du Colombier extern	void	bracecheck(void);
1163e12c5d1SDavid du Colombier extern	void	bcheck2(int, int, int);
117*a2c41696SDavid du Colombier extern	void	SYNTAX(const char *, ...);
118*a2c41696SDavid du Colombier extern	void	FATAL(const char *, ...);
119*a2c41696SDavid du Colombier extern	void	WARNING(const char *, ...);
1207dd7cddfSDavid du Colombier extern	void	error(void);
1213e12c5d1SDavid du Colombier extern	void	eprint(void);
1223e12c5d1SDavid du Colombier extern	void	bclass(int);
123*a2c41696SDavid du Colombier extern	double	errcheck(double, const char *);
124*a2c41696SDavid du Colombier extern	int	isclvar(const char *);
125*a2c41696SDavid du Colombier extern	int	is_number(const char *);
1263e12c5d1SDavid du Colombier 
127*a2c41696SDavid du Colombier extern	int	adjbuf(char **pb, int *sz, int min, int q, char **pbp, const char *what);
1283e12c5d1SDavid du Colombier extern	void	run(Node *);
1297dd7cddfSDavid du Colombier extern	Cell	*execute(Node *);
1303e12c5d1SDavid du Colombier extern	Cell	*program(Node **, int);
1313e12c5d1SDavid du Colombier extern	Cell	*call(Node **, int);
1323e12c5d1SDavid du Colombier extern	Cell	*copycell(Cell *);
1333e12c5d1SDavid du Colombier extern	Cell	*arg(Node **, int);
1343e12c5d1SDavid du Colombier extern	Cell	*jump(Node **, int);
135*a2c41696SDavid du Colombier extern	Cell	*awkgetline(Node **, int);
1363e12c5d1SDavid du Colombier extern	Cell	*getnf(Node **, int);
1373e12c5d1SDavid du Colombier extern	Cell	*array(Node **, int);
1387dd7cddfSDavid du Colombier extern	Cell	*awkdelete(Node **, int);
1393e12c5d1SDavid du Colombier extern	Cell	*intest(Node **, int);
1403e12c5d1SDavid du Colombier extern	Cell	*matchop(Node **, int);
1413e12c5d1SDavid du Colombier extern	Cell	*boolop(Node **, int);
1423e12c5d1SDavid du Colombier extern	Cell	*relop(Node **, int);
1433e12c5d1SDavid du Colombier extern	void	tfree(Cell *);
1443e12c5d1SDavid du Colombier extern	Cell	*gettemp(void);
1453e12c5d1SDavid du Colombier extern	Cell	*field(Node **, int);
1463e12c5d1SDavid du Colombier extern	Cell	*indirect(Node **, int);
1473e12c5d1SDavid du Colombier extern	Cell	*substr(Node **, int);
1483e12c5d1SDavid du Colombier extern	Cell	*sindex(Node **, int);
149*a2c41696SDavid du Colombier extern	int	format(char **, int *, const char *, Node *);
1507dd7cddfSDavid du Colombier extern	Cell	*awksprintf(Node **, int);
1517dd7cddfSDavid du Colombier extern	Cell	*awkprintf(Node **, int);
1523e12c5d1SDavid du Colombier extern	Cell	*arith(Node **, int);
1533e12c5d1SDavid du Colombier extern	double	ipow(double, int);
1543e12c5d1SDavid du Colombier extern	Cell	*incrdecr(Node **, int);
1553e12c5d1SDavid du Colombier extern	Cell	*assign(Node **, int);
1563e12c5d1SDavid du Colombier extern	Cell	*cat(Node **, int);
1573e12c5d1SDavid du Colombier extern	Cell	*pastat(Node **, int);
1583e12c5d1SDavid du Colombier extern	Cell	*dopa2(Node **, int);
1593e12c5d1SDavid du Colombier extern	Cell	*split(Node **, int);
1603e12c5d1SDavid du Colombier extern	Cell	*condexpr(Node **, int);
1613e12c5d1SDavid du Colombier extern	Cell	*ifstat(Node **, int);
1623e12c5d1SDavid du Colombier extern	Cell	*whilestat(Node **, int);
1633e12c5d1SDavid du Colombier extern	Cell	*dostat(Node **, int);
1643e12c5d1SDavid du Colombier extern	Cell	*forstat(Node **, int);
1653e12c5d1SDavid du Colombier extern	Cell	*instat(Node **, int);
1663e12c5d1SDavid du Colombier extern	Cell	*bltin(Node **, int);
1673e12c5d1SDavid du Colombier extern	Cell	*printstat(Node **, int);
1683e12c5d1SDavid du Colombier extern	Cell	*nullproc(Node **, int);
1693e12c5d1SDavid du Colombier extern	FILE	*redirect(int, Node *);
170*a2c41696SDavid du Colombier extern	FILE	*openfile(int, const char *);
171*a2c41696SDavid du Colombier extern	const char	*filename(FILE *);
1723e12c5d1SDavid du Colombier extern	Cell	*closefile(Node **, int);
1733e12c5d1SDavid du Colombier extern	void	closeall(void);
1743e12c5d1SDavid du Colombier extern	Cell	*sub(Node **, int);
1753e12c5d1SDavid du Colombier extern	Cell	*gsub(Node **, int);
1763e12c5d1SDavid du Colombier 
1777dd7cddfSDavid du Colombier extern	FILE	*popen(const char *, const char *);
1787dd7cddfSDavid du Colombier extern	int	pclose(FILE *);
179