xref: /freebsd/contrib/one-true-awk/proto.h (revision 17853db4b0dc36ed32af039cd803f13b692913da)
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);
36813da98dSDavid E. O'Brien extern	void	unputstr(const char *);
372a55deb1SDavid E. O'Brien 
38f39dd6a9SWarner Losh extern	fa	*makedfa(const char *, bool);
39f39dd6a9SWarner Losh extern	fa	*mkdfa(const char *, bool);
40f39dd6a9SWarner Losh extern	int	makeinit(fa *, bool);
412a55deb1SDavid E. O'Brien extern	void	penter(Node *);
422a55deb1SDavid E. O'Brien extern	void	freetr(Node *);
43f39dd6a9SWarner Losh extern	int	quoted(const uschar **);
44f32a6403SWarner Losh extern	int	*cclenter(const char *);
45f39dd6a9SWarner Losh extern	noreturn void	overflo(const char *);
462a55deb1SDavid E. O'Brien extern	void	cfoll(fa *, Node *);
472a55deb1SDavid E. O'Brien extern	int	first(Node *);
482a55deb1SDavid E. O'Brien extern	void	follow(Node *);
49f32a6403SWarner Losh extern	int	member(int, int *);
50813da98dSDavid E. O'Brien extern	int	match(fa *, const char *);
51813da98dSDavid E. O'Brien extern	int	pmatch(fa *, const char *);
52813da98dSDavid E. O'Brien extern	int	nematch(fa *, const char *);
53f39dd6a9SWarner Losh extern	bool	fnematch(fa *, FILE *, char **, int *, int);
54813da98dSDavid E. O'Brien extern	Node	*reparse(const char *);
552a55deb1SDavid E. O'Brien extern	Node	*regexp(void);
562a55deb1SDavid E. O'Brien extern	Node	*primary(void);
572a55deb1SDavid E. O'Brien extern	Node	*concat(Node *);
582a55deb1SDavid E. O'Brien extern	Node	*alt(Node *);
592a55deb1SDavid E. O'Brien extern	Node	*unary(Node *);
602a55deb1SDavid E. O'Brien extern	int	relex(void);
612a55deb1SDavid E. O'Brien extern	int	cgoto(fa *, int, int);
622a55deb1SDavid E. O'Brien extern	void	freefa(fa *);
632a55deb1SDavid E. O'Brien 
642a55deb1SDavid E. O'Brien extern	int	pgetc(void);
652a55deb1SDavid E. O'Brien extern	char	*cursource(void);
662a55deb1SDavid E. O'Brien 
67f32a6403SWarner Losh extern	Node	*nodealloc(size_t);
682a55deb1SDavid E. O'Brien extern	Node	*exptostat(Node *);
692a55deb1SDavid E. O'Brien extern	Node	*node1(int, Node *);
702a55deb1SDavid E. O'Brien extern	Node	*node2(int, Node *, Node *);
712a55deb1SDavid E. O'Brien extern	Node	*node3(int, Node *, Node *, Node *);
722a55deb1SDavid E. O'Brien extern	Node	*node4(int, Node *, Node *, Node *, Node *);
73*eb690a05SWarner Losh extern	Node	*node5(int, Node *, Node *, Node *, Node *, Node *);
742a55deb1SDavid E. O'Brien extern	Node	*stat3(int, Node *, Node *, Node *);
752a55deb1SDavid E. O'Brien extern	Node	*op2(int, Node *, Node *);
762a55deb1SDavid E. O'Brien extern	Node	*op1(int, Node *);
772a55deb1SDavid E. O'Brien extern	Node	*stat1(int, Node *);
782a55deb1SDavid E. O'Brien extern	Node	*op3(int, Node *, Node *, Node *);
792a55deb1SDavid E. O'Brien extern	Node	*op4(int, Node *, Node *, Node *, Node *);
80*eb690a05SWarner Losh extern	Node	*op5(int, Node *, Node *, Node *, Node *, Node *);
812a55deb1SDavid E. O'Brien extern	Node	*stat2(int, Node *, Node *);
822a55deb1SDavid E. O'Brien extern	Node	*stat4(int, Node *, Node *, Node *, Node *);
832a55deb1SDavid E. O'Brien extern	Node	*celltonode(Cell *, int);
842a55deb1SDavid E. O'Brien extern	Node	*rectonode(void);
852a55deb1SDavid E. O'Brien extern	Node	*makearr(Node *);
862a55deb1SDavid E. O'Brien extern	Node	*pa2stat(Node *, Node *, Node *);
872a55deb1SDavid E. O'Brien extern	Node	*linkum(Node *, Node *);
882a55deb1SDavid E. O'Brien extern	void	defn(Cell *, Node *, Node *);
89813da98dSDavid E. O'Brien extern	int	isarg(const char *);
90f39dd6a9SWarner Losh extern	const char *tokname(int);
912a55deb1SDavid E. O'Brien extern	Cell	*(*proctab[])(Node **, int);
922a55deb1SDavid E. O'Brien extern	int	ptoi(void *);
932a55deb1SDavid E. O'Brien extern	Node	*itonp(int);
942a55deb1SDavid E. O'Brien 
952a55deb1SDavid E. O'Brien extern	void	syminit(void);
962a55deb1SDavid E. O'Brien extern	void	arginit(int, char **);
972a55deb1SDavid E. O'Brien extern	void	envinit(char **);
982a55deb1SDavid E. O'Brien extern	Array	*makesymtab(int);
992a55deb1SDavid E. O'Brien extern	void	freesymtab(Cell *);
100813da98dSDavid E. O'Brien extern	void	freeelem(Cell *, const char *);
101813da98dSDavid E. O'Brien extern	Cell	*setsymtab(const char *, const char *, double, unsigned int, Array *);
102813da98dSDavid E. O'Brien extern	int	hash(const char *, int);
1032a55deb1SDavid E. O'Brien extern	void	rehash(Array *);
104813da98dSDavid E. O'Brien extern	Cell	*lookup(const char *, Array *);
1052a55deb1SDavid E. O'Brien extern	double	setfval(Cell *, double);
106813da98dSDavid E. O'Brien extern	void	funnyvar(Cell *, const char *);
107813da98dSDavid E. O'Brien extern	char	*setsval(Cell *, const char *);
1082a55deb1SDavid E. O'Brien extern	double	getfval(Cell *);
1092a55deb1SDavid E. O'Brien extern	char	*getsval(Cell *);
110813da98dSDavid E. O'Brien extern	char	*getpssval(Cell *);     /* for print */
111813da98dSDavid E. O'Brien extern	char	*tostring(const char *);
112f39dd6a9SWarner Losh extern	char	*tostringN(const char *, size_t);
113813da98dSDavid E. O'Brien extern	char	*qstring(const char *, int);
114f39dd6a9SWarner Losh extern	Cell	*catstr(Cell *, Cell *);
1152a55deb1SDavid E. O'Brien 
1162a55deb1SDavid E. O'Brien extern	void	recinit(unsigned int);
1172a55deb1SDavid E. O'Brien extern	void	initgetrec(void);
1182a55deb1SDavid E. O'Brien extern	void	makefields(int, int);
1192a55deb1SDavid E. O'Brien extern	void	growfldtab(int n);
120f39dd6a9SWarner Losh extern	void	savefs(void);
121f39dd6a9SWarner Losh extern	int	getrec(char **, int *, bool);
1222a55deb1SDavid E. O'Brien extern	void	nextfile(void);
123f39dd6a9SWarner Losh extern	int	readrec(char **buf, int *bufsize, FILE *inf, bool isnew);
1242a55deb1SDavid E. O'Brien extern	char	*getargv(int);
1252a55deb1SDavid E. O'Brien extern	void	setclvar(char *);
1262a55deb1SDavid E. O'Brien extern	void	fldbld(void);
1272a55deb1SDavid E. O'Brien extern	void	cleanfld(int, int);
1282a55deb1SDavid E. O'Brien extern	void	newfld(int);
129b5253557SWarner Losh extern	void	setlastfld(int);
130813da98dSDavid E. O'Brien extern	int	refldbld(const char *, const char *);
1312a55deb1SDavid E. O'Brien extern	void	recbld(void);
1322a55deb1SDavid E. O'Brien extern	Cell	*fieldadr(int);
133813da98dSDavid E. O'Brien extern	void	yyerror(const char *);
1342a55deb1SDavid E. O'Brien extern	void	bracecheck(void);
1352a55deb1SDavid E. O'Brien extern	void	bcheck2(int, int, int);
136f39dd6a9SWarner Losh extern	void	SYNTAX(const char *, ...)
137f39dd6a9SWarner Losh     __attribute__((__format__(__printf__, 1, 2)));
138f39dd6a9SWarner Losh extern	noreturn void	FATAL(const char *, ...)
139f39dd6a9SWarner Losh     __attribute__((__format__(__printf__, 1, 2)));
140f39dd6a9SWarner Losh extern	void	WARNING(const char *, ...)
141f39dd6a9SWarner Losh     __attribute__((__format__(__printf__, 1, 2)));
1422a55deb1SDavid E. O'Brien extern	void	error(void);
1432a55deb1SDavid E. O'Brien extern	void	eprint(void);
1442a55deb1SDavid E. O'Brien extern	void	bclass(int);
145813da98dSDavid E. O'Brien extern	double	errcheck(double, const char *);
146813da98dSDavid E. O'Brien extern	int	isclvar(const char *);
147f39dd6a9SWarner Losh extern	bool	is_valid_number(const char *s, bool trailing_stuff_ok,
148f39dd6a9SWarner Losh 				bool *no_trailing, double *result);
149f39dd6a9SWarner Losh #define is_number(s, val)	is_valid_number(s, false, NULL, val)
1502a55deb1SDavid E. O'Brien 
151813da98dSDavid E. O'Brien extern	int	adjbuf(char **pb, int *sz, int min, int q, char **pbp, const char *what);
1522a55deb1SDavid E. O'Brien extern	void	run(Node *);
1532a55deb1SDavid E. O'Brien extern	Cell	*execute(Node *);
1542a55deb1SDavid E. O'Brien extern	Cell	*program(Node **, int);
1552a55deb1SDavid E. O'Brien extern	Cell	*call(Node **, int);
1562a55deb1SDavid E. O'Brien extern	Cell	*copycell(Cell *);
1572a55deb1SDavid E. O'Brien extern	Cell	*arg(Node **, int);
1582a55deb1SDavid E. O'Brien extern	Cell	*jump(Node **, int);
15991217c1cSRuslan Ermilov extern	Cell	*awkgetline(Node **, int);
1602a55deb1SDavid E. O'Brien extern	Cell	*getnf(Node **, int);
1612a55deb1SDavid E. O'Brien extern	Cell	*array(Node **, int);
1622a55deb1SDavid E. O'Brien extern	Cell	*awkdelete(Node **, int);
1632a55deb1SDavid E. O'Brien extern	Cell	*intest(Node **, int);
1642a55deb1SDavid E. O'Brien extern	Cell	*matchop(Node **, int);
1652a55deb1SDavid E. O'Brien extern	Cell	*boolop(Node **, int);
1662a55deb1SDavid E. O'Brien extern	Cell	*relop(Node **, int);
1672a55deb1SDavid E. O'Brien extern	void	tfree(Cell *);
1682a55deb1SDavid E. O'Brien extern	Cell	*gettemp(void);
1692a55deb1SDavid E. O'Brien extern	Cell	*indirect(Node **, int);
1702a55deb1SDavid E. O'Brien extern	Cell	*substr(Node **, int);
1712a55deb1SDavid E. O'Brien extern	Cell	*sindex(Node **, int);
172813da98dSDavid E. O'Brien extern	int	format(char **, int *, const char *, Node *);
1732a55deb1SDavid E. O'Brien extern	Cell	*awksprintf(Node **, int);
1742a55deb1SDavid E. O'Brien extern	Cell	*awkprintf(Node **, int);
1752a55deb1SDavid E. O'Brien extern	Cell	*arith(Node **, int);
1762a55deb1SDavid E. O'Brien extern	double	ipow(double, int);
1772a55deb1SDavid E. O'Brien extern	Cell	*incrdecr(Node **, int);
1782a55deb1SDavid E. O'Brien extern	Cell	*assign(Node **, int);
1792a55deb1SDavid E. O'Brien extern	Cell	*cat(Node **, int);
1802a55deb1SDavid E. O'Brien extern	Cell	*pastat(Node **, int);
1812a55deb1SDavid E. O'Brien extern	Cell	*dopa2(Node **, int);
1822a55deb1SDavid E. O'Brien extern	Cell	*split(Node **, int);
1832a55deb1SDavid E. O'Brien extern	Cell	*condexpr(Node **, int);
1842a55deb1SDavid E. O'Brien extern	Cell	*ifstat(Node **, int);
1852a55deb1SDavid E. O'Brien extern	Cell	*whilestat(Node **, int);
1862a55deb1SDavid E. O'Brien extern	Cell	*dostat(Node **, int);
1872a55deb1SDavid E. O'Brien extern	Cell	*forstat(Node **, int);
1882a55deb1SDavid E. O'Brien extern	Cell	*instat(Node **, int);
1892a55deb1SDavid E. O'Brien extern	Cell	*bltin(Node **, int);
1902a55deb1SDavid E. O'Brien extern	Cell	*printstat(Node **, int);
1912a55deb1SDavid E. O'Brien extern	Cell	*nullproc(Node **, int);
1922a55deb1SDavid E. O'Brien extern	FILE	*redirect(int, Node *);
193f39dd6a9SWarner Losh extern	FILE	*openfile(int, const char *, bool *);
194813da98dSDavid E. O'Brien extern	const char	*filename(FILE *);
1952a55deb1SDavid E. O'Brien extern	Cell	*closefile(Node **, int);
1962a55deb1SDavid E. O'Brien extern	void	closeall(void);
197f32a6403SWarner Losh extern	Cell	*dosub(Node **, int);
198*eb690a05SWarner Losh extern	Cell	*gensub(Node **, int);
1992a55deb1SDavid E. O'Brien 
2002a55deb1SDavid E. O'Brien extern	FILE	*popen(const char *, const char *);
2012a55deb1SDavid E. O'Brien extern	int	pclose(FILE *);
202b5253557SWarner Losh 
203b5253557SWarner Losh extern  const char	*flags2str(int flags);
204