xref: /freebsd/contrib/one-true-awk/proto.h (revision 2a55deb138cc100d27e836d0f3ae949dbea70325)
12a55deb1SDavid E. O'Brien /****************************************************************
22a55deb1SDavid E. O'Brien Copyright (C) Lucent Technologies 1997
32a55deb1SDavid E. O'Brien All Rights Reserved
42a55deb1SDavid E. O'Brien 
52a55deb1SDavid E. O'Brien Permission to use, copy, modify, and distribute this software and
62a55deb1SDavid E. O'Brien its documentation for any purpose and without fee is hereby
72a55deb1SDavid E. O'Brien granted, provided that the above copyright notice appear in all
82a55deb1SDavid E. O'Brien copies and that both that the copyright notice and this
92a55deb1SDavid E. O'Brien permission notice and warranty disclaimer appear in supporting
102a55deb1SDavid E. O'Brien documentation, and that the name Lucent Technologies or any of
112a55deb1SDavid E. O'Brien its entities not be used in advertising or publicity pertaining
122a55deb1SDavid E. O'Brien to distribution of the software without specific, written prior
132a55deb1SDavid E. O'Brien permission.
142a55deb1SDavid E. O'Brien 
152a55deb1SDavid E. O'Brien LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
162a55deb1SDavid E. O'Brien INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
172a55deb1SDavid E. O'Brien IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
182a55deb1SDavid E. O'Brien SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
192a55deb1SDavid E. O'Brien WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
202a55deb1SDavid E. O'Brien IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
212a55deb1SDavid E. O'Brien ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
222a55deb1SDavid E. O'Brien THIS SOFTWARE.
232a55deb1SDavid E. O'Brien ****************************************************************/
242a55deb1SDavid E. O'Brien 
252a55deb1SDavid E. O'Brien extern	int	yywrap(void);
262a55deb1SDavid E. O'Brien extern	void	setfname(Cell *);
272a55deb1SDavid E. O'Brien extern	int	constnode(Node *);
282a55deb1SDavid E. O'Brien extern	char	*strnode(Node *);
292a55deb1SDavid E. O'Brien extern	Node	*notnull(Node *);
302a55deb1SDavid E. O'Brien extern	int	yyparse(void);
312a55deb1SDavid E. O'Brien 
322a55deb1SDavid E. O'Brien extern	int	yylex(void);
332a55deb1SDavid E. O'Brien extern	void	startreg(void);
342a55deb1SDavid E. O'Brien extern	int	input(void);
352a55deb1SDavid E. O'Brien extern	void	unput(int);
362a55deb1SDavid E. O'Brien extern	void	unputstr(char *);
372a55deb1SDavid E. O'Brien extern	int	yylook(void);
382a55deb1SDavid E. O'Brien extern	int	yyback(int *, int);
392a55deb1SDavid E. O'Brien extern	int	yyinput(void);
402a55deb1SDavid E. O'Brien 
412a55deb1SDavid E. O'Brien extern	fa	*makedfa(char *, int);
422a55deb1SDavid E. O'Brien extern	fa	*mkdfa(char *, int);
432a55deb1SDavid E. O'Brien extern	int	makeinit(fa *, int);
442a55deb1SDavid E. O'Brien extern	void	penter(Node *);
452a55deb1SDavid E. O'Brien extern	void	freetr(Node *);
462a55deb1SDavid E. O'Brien extern	int	hexstr(char **);
472a55deb1SDavid E. O'Brien extern	int	quoted(char **);
482a55deb1SDavid E. O'Brien extern	char	*cclenter(char *);
492a55deb1SDavid E. O'Brien extern	void	overflo(char *);
502a55deb1SDavid E. O'Brien extern	void	cfoll(fa *, Node *);
512a55deb1SDavid E. O'Brien extern	int	first(Node *);
522a55deb1SDavid E. O'Brien extern	void	follow(Node *);
532a55deb1SDavid E. O'Brien extern	int	member(int, char *);
542a55deb1SDavid E. O'Brien extern	int	match(fa *, char *);
552a55deb1SDavid E. O'Brien extern	int	pmatch(fa *, char *);
562a55deb1SDavid E. O'Brien extern	int	nematch(fa *, char *);
572a55deb1SDavid E. O'Brien extern	Node	*reparse(char *);
582a55deb1SDavid E. O'Brien extern	Node	*regexp(void);
592a55deb1SDavid E. O'Brien extern	Node	*primary(void);
602a55deb1SDavid E. O'Brien extern	Node	*concat(Node *);
612a55deb1SDavid E. O'Brien extern	Node	*alt(Node *);
622a55deb1SDavid E. O'Brien extern	Node	*unary(Node *);
632a55deb1SDavid E. O'Brien extern	int	relex(void);
642a55deb1SDavid E. O'Brien extern	int	cgoto(fa *, int, int);
652a55deb1SDavid E. O'Brien extern	void	freefa(fa *);
662a55deb1SDavid E. O'Brien 
672a55deb1SDavid E. O'Brien extern	int	pgetc(void);
682a55deb1SDavid E. O'Brien extern	char	*cursource(void);
692a55deb1SDavid E. O'Brien 
702a55deb1SDavid E. O'Brien extern	Node	*nodealloc(int);
712a55deb1SDavid E. O'Brien extern	Node	*exptostat(Node *);
722a55deb1SDavid E. O'Brien extern	Node	*node1(int, Node *);
732a55deb1SDavid E. O'Brien extern	Node	*node2(int, Node *, Node *);
742a55deb1SDavid E. O'Brien extern	Node	*node3(int, Node *, Node *, Node *);
752a55deb1SDavid E. O'Brien extern	Node	*node4(int, Node *, Node *, Node *, Node *);
762a55deb1SDavid E. O'Brien extern	Node	*stat3(int, Node *, Node *, Node *);
772a55deb1SDavid E. O'Brien extern	Node	*op2(int, Node *, Node *);
782a55deb1SDavid E. O'Brien extern	Node	*op1(int, Node *);
792a55deb1SDavid E. O'Brien extern	Node	*stat1(int, Node *);
802a55deb1SDavid E. O'Brien extern	Node	*op3(int, Node *, Node *, Node *);
812a55deb1SDavid E. O'Brien extern	Node	*op4(int, Node *, Node *, Node *, Node *);
822a55deb1SDavid E. O'Brien extern	Node	*stat2(int, Node *, Node *);
832a55deb1SDavid E. O'Brien extern	Node	*stat4(int, Node *, Node *, Node *, Node *);
842a55deb1SDavid E. O'Brien extern	Node	*celltonode(Cell *, int);
852a55deb1SDavid E. O'Brien extern	Node	*rectonode(void);
862a55deb1SDavid E. O'Brien extern	Node	*makearr(Node *);
872a55deb1SDavid E. O'Brien extern	Node	*pa2stat(Node *, Node *, Node *);
882a55deb1SDavid E. O'Brien extern	Node	*linkum(Node *, Node *);
892a55deb1SDavid E. O'Brien extern	void	defn(Cell *, Node *, Node *);
902a55deb1SDavid E. O'Brien extern	int	isarg(char *);
912a55deb1SDavid E. O'Brien extern	char	*tokname(int);
922a55deb1SDavid E. O'Brien extern	Cell	*(*proctab[])(Node **, int);
932a55deb1SDavid E. O'Brien extern	int	ptoi(void *);
942a55deb1SDavid E. O'Brien extern	Node	*itonp(int);
952a55deb1SDavid E. O'Brien 
962a55deb1SDavid E. O'Brien extern	void	syminit(void);
972a55deb1SDavid E. O'Brien extern	void	arginit(int, char **);
982a55deb1SDavid E. O'Brien extern	void	envinit(char **);
992a55deb1SDavid E. O'Brien extern	Array	*makesymtab(int);
1002a55deb1SDavid E. O'Brien extern	void	freesymtab(Cell *);
1012a55deb1SDavid E. O'Brien extern	void	freeelem(Cell *, char *);
1022a55deb1SDavid E. O'Brien extern	Cell	*setsymtab(char *, char *, double, unsigned int, Array *);
1032a55deb1SDavid E. O'Brien extern	int	hash(char *, int);
1042a55deb1SDavid E. O'Brien extern	void	rehash(Array *);
1052a55deb1SDavid E. O'Brien extern	Cell	*lookup(char *, Array *);
1062a55deb1SDavid E. O'Brien extern	double	setfval(Cell *, double);
1072a55deb1SDavid E. O'Brien extern	void	funnyvar(Cell *, char *);
1082a55deb1SDavid E. O'Brien extern	char	*setsval(Cell *, char *);
1092a55deb1SDavid E. O'Brien extern	double	getfval(Cell *);
1102a55deb1SDavid E. O'Brien extern	char	*getsval(Cell *);
1112a55deb1SDavid E. O'Brien extern	char	*tostring(char *);
1122a55deb1SDavid E. O'Brien extern	char	*qstring(char *, int);
1132a55deb1SDavid E. O'Brien 
1142a55deb1SDavid E. O'Brien extern	void	recinit(unsigned int);
1152a55deb1SDavid E. O'Brien extern	void	initgetrec(void);
1162a55deb1SDavid E. O'Brien extern	void	makefields(int, int);
1172a55deb1SDavid E. O'Brien extern	void	growfldtab(int n);
1182a55deb1SDavid E. O'Brien extern	int	getrec(char **, int *, int);
1192a55deb1SDavid E. O'Brien extern	void	nextfile(void);
1202a55deb1SDavid E. O'Brien extern	int	readrec(char **buf, int *bufsize, FILE *inf);
1212a55deb1SDavid E. O'Brien extern	char	*getargv(int);
1222a55deb1SDavid E. O'Brien extern	void	setclvar(char *);
1232a55deb1SDavid E. O'Brien extern	void	fldbld(void);
1242a55deb1SDavid E. O'Brien extern	void	cleanfld(int, int);
1252a55deb1SDavid E. O'Brien extern	void	newfld(int);
1262a55deb1SDavid E. O'Brien extern	int	refldbld(char *, char *);
1272a55deb1SDavid E. O'Brien extern	void	recbld(void);
1282a55deb1SDavid E. O'Brien extern	Cell	*fieldadr(int);
1292a55deb1SDavid E. O'Brien extern	void	yyerror(char *);
1302a55deb1SDavid E. O'Brien extern	void	fpecatch(int);
1312a55deb1SDavid E. O'Brien extern	void	bracecheck(void);
1322a55deb1SDavid E. O'Brien extern	void	bcheck2(int, int, int);
1332a55deb1SDavid E. O'Brien extern	void	SYNTAX(char *, ...);
1342a55deb1SDavid E. O'Brien extern	void	FATAL(char *, ...);
1352a55deb1SDavid E. O'Brien extern	void	WARNING(char *, ...);
1362a55deb1SDavid E. O'Brien extern	void	error(void);
1372a55deb1SDavid E. O'Brien extern	void	eprint(void);
1382a55deb1SDavid E. O'Brien extern	void	bclass(int);
1392a55deb1SDavid E. O'Brien extern	double	errcheck(double, char *);
1402a55deb1SDavid E. O'Brien extern	int	isclvar(char *);
1412a55deb1SDavid E. O'Brien extern	int	is_number(char *);
1422a55deb1SDavid E. O'Brien 
1432a55deb1SDavid E. O'Brien extern	int	adjbuf(char **pb, int *sz, int min, int q, char **pbp, char *what);
1442a55deb1SDavid E. O'Brien extern	void	run(Node *);
1452a55deb1SDavid E. O'Brien extern	Cell	*execute(Node *);
1462a55deb1SDavid E. O'Brien extern	Cell	*program(Node **, int);
1472a55deb1SDavid E. O'Brien extern	Cell	*call(Node **, int);
1482a55deb1SDavid E. O'Brien extern	Cell	*copycell(Cell *);
1492a55deb1SDavid E. O'Brien extern	Cell	*arg(Node **, int);
1502a55deb1SDavid E. O'Brien extern	Cell	*jump(Node **, int);
1512a55deb1SDavid E. O'Brien extern	Cell	*getline(Node **, int);
1522a55deb1SDavid E. O'Brien extern	Cell	*getnf(Node **, int);
1532a55deb1SDavid E. O'Brien extern	Cell	*array(Node **, int);
1542a55deb1SDavid E. O'Brien extern	Cell	*awkdelete(Node **, int);
1552a55deb1SDavid E. O'Brien extern	Cell	*intest(Node **, int);
1562a55deb1SDavid E. O'Brien extern	Cell	*matchop(Node **, int);
1572a55deb1SDavid E. O'Brien extern	Cell	*boolop(Node **, int);
1582a55deb1SDavid E. O'Brien extern	Cell	*relop(Node **, int);
1592a55deb1SDavid E. O'Brien extern	void	tfree(Cell *);
1602a55deb1SDavid E. O'Brien extern	Cell	*gettemp(void);
1612a55deb1SDavid E. O'Brien extern	Cell	*field(Node **, int);
1622a55deb1SDavid E. O'Brien extern	Cell	*indirect(Node **, int);
1632a55deb1SDavid E. O'Brien extern	Cell	*substr(Node **, int);
1642a55deb1SDavid E. O'Brien extern	Cell	*sindex(Node **, int);
1652a55deb1SDavid E. O'Brien extern	int	format(char **, int *, char *, Node *);
1662a55deb1SDavid E. O'Brien extern	Cell	*awksprintf(Node **, int);
1672a55deb1SDavid E. O'Brien extern	Cell	*awkprintf(Node **, int);
1682a55deb1SDavid E. O'Brien extern	Cell	*arith(Node **, int);
1692a55deb1SDavid E. O'Brien extern	double	ipow(double, int);
1702a55deb1SDavid E. O'Brien extern	Cell	*incrdecr(Node **, int);
1712a55deb1SDavid E. O'Brien extern	Cell	*assign(Node **, int);
1722a55deb1SDavid E. O'Brien extern	Cell	*cat(Node **, int);
1732a55deb1SDavid E. O'Brien extern	Cell	*pastat(Node **, int);
1742a55deb1SDavid E. O'Brien extern	Cell	*dopa2(Node **, int);
1752a55deb1SDavid E. O'Brien extern	Cell	*split(Node **, int);
1762a55deb1SDavid E. O'Brien extern	Cell	*condexpr(Node **, int);
1772a55deb1SDavid E. O'Brien extern	Cell	*ifstat(Node **, int);
1782a55deb1SDavid E. O'Brien extern	Cell	*whilestat(Node **, int);
1792a55deb1SDavid E. O'Brien extern	Cell	*dostat(Node **, int);
1802a55deb1SDavid E. O'Brien extern	Cell	*forstat(Node **, int);
1812a55deb1SDavid E. O'Brien extern	Cell	*instat(Node **, int);
1822a55deb1SDavid E. O'Brien extern	Cell	*bltin(Node **, int);
1832a55deb1SDavid E. O'Brien extern	Cell	*printstat(Node **, int);
1842a55deb1SDavid E. O'Brien extern	Cell	*nullproc(Node **, int);
1852a55deb1SDavid E. O'Brien extern	FILE	*redirect(int, Node *);
1862a55deb1SDavid E. O'Brien extern	FILE	*openfile(int, char *);
1872a55deb1SDavid E. O'Brien extern	char	*filename(FILE *);
1882a55deb1SDavid E. O'Brien extern	Cell	*closefile(Node **, int);
1892a55deb1SDavid E. O'Brien extern	void	closeall(void);
1902a55deb1SDavid E. O'Brien extern	Cell	*sub(Node **, int);
1912a55deb1SDavid E. O'Brien extern	Cell	*gsub(Node **, int);
1922a55deb1SDavid E. O'Brien 
1932a55deb1SDavid E. O'Brien extern	FILE	*popen(const char *, const char *);
1942a55deb1SDavid E. O'Brien extern	int	pclose(FILE *);
195