xref: /dflybsd-src/contrib/awk/proto.h (revision e2ee60a4f1757f9ded9e1041053222b631f387b6)
14b588458SPeter Avalos /****************************************************************
24b588458SPeter Avalos Copyright (C) Lucent Technologies 1997
34b588458SPeter Avalos All Rights Reserved
44b588458SPeter Avalos 
54b588458SPeter Avalos Permission to use, copy, modify, and distribute this software and
64b588458SPeter Avalos its documentation for any purpose and without fee is hereby
74b588458SPeter Avalos granted, provided that the above copyright notice appear in all
84b588458SPeter Avalos copies and that both that the copyright notice and this
94b588458SPeter Avalos permission notice and warranty disclaimer appear in supporting
104b588458SPeter Avalos documentation, and that the name Lucent Technologies or any of
114b588458SPeter Avalos its entities not be used in advertising or publicity pertaining
124b588458SPeter Avalos to distribution of the software without specific, written prior
134b588458SPeter Avalos permission.
144b588458SPeter Avalos 
154b588458SPeter Avalos LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
164b588458SPeter Avalos INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
174b588458SPeter Avalos IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
184b588458SPeter Avalos SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
194b588458SPeter Avalos WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
204b588458SPeter Avalos IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
214b588458SPeter Avalos ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
224b588458SPeter Avalos THIS SOFTWARE.
234b588458SPeter Avalos ****************************************************************/
244b588458SPeter Avalos 
254b588458SPeter Avalos extern	int	yywrap(void);
264b588458SPeter Avalos extern	void	setfname(Cell *);
274b588458SPeter Avalos extern	int	constnode(Node *);
284b588458SPeter Avalos extern	char	*strnode(Node *);
294b588458SPeter Avalos extern	Node	*notnull(Node *);
304b588458SPeter Avalos extern	int	yyparse(void);
314b588458SPeter Avalos 
324b588458SPeter Avalos extern	int	yylex(void);
334b588458SPeter Avalos extern	void	startreg(void);
344b588458SPeter Avalos extern	int	input(void);
354b588458SPeter Avalos extern	void	unput(int);
364b588458SPeter Avalos extern	void	unputstr(const char *);
374b588458SPeter Avalos extern	int	yylook(void);
384b588458SPeter Avalos extern	int	yyback(int *, int);
394b588458SPeter Avalos extern	int	yyinput(void);
404b588458SPeter Avalos 
411d48fce0SDaniel Fojt extern	fa	*makedfa(const char *, bool);
421d48fce0SDaniel Fojt extern	fa	*mkdfa(const char *, bool);
431d48fce0SDaniel Fojt extern	int	makeinit(fa *, bool);
444b588458SPeter Avalos extern	void	penter(Node *);
454b588458SPeter Avalos extern	void	freetr(Node *);
461d48fce0SDaniel Fojt extern	int	quoted(const uschar **);
47*ed569bc2SAaron LI extern	int	*cclenter(const char *);
481d48fce0SDaniel Fojt extern	noreturn void	overflo(const char *);
494b588458SPeter Avalos extern	void	cfoll(fa *, Node *);
504b588458SPeter Avalos extern	int	first(Node *);
514b588458SPeter Avalos extern	void	follow(Node *);
52*ed569bc2SAaron LI extern	int	member(int, int *);
534b588458SPeter Avalos extern	int	match(fa *, const char *);
544b588458SPeter Avalos extern	int	pmatch(fa *, const char *);
554b588458SPeter Avalos extern	int	nematch(fa *, const char *);
561d48fce0SDaniel Fojt extern	bool	fnematch(fa *, FILE *, char **, int *, int);
574b588458SPeter Avalos extern	Node	*reparse(const char *);
584b588458SPeter Avalos extern	Node	*regexp(void);
594b588458SPeter Avalos extern	Node	*primary(void);
604b588458SPeter Avalos extern	Node	*concat(Node *);
614b588458SPeter Avalos extern	Node	*alt(Node *);
624b588458SPeter Avalos extern	Node	*unary(Node *);
634b588458SPeter Avalos extern	int	relex(void);
644b588458SPeter Avalos extern	int	cgoto(fa *, int, int);
654b588458SPeter Avalos extern	void	freefa(fa *);
664b588458SPeter Avalos 
674b588458SPeter Avalos extern	int	pgetc(void);
684b588458SPeter Avalos extern	char	*cursource(void);
694b588458SPeter Avalos 
70*ed569bc2SAaron LI extern	Node	*nodealloc(size_t);
714b588458SPeter Avalos extern	Node	*exptostat(Node *);
724b588458SPeter Avalos extern	Node	*node1(int, Node *);
734b588458SPeter Avalos extern	Node	*node2(int, Node *, Node *);
744b588458SPeter Avalos extern	Node	*node3(int, Node *, Node *, Node *);
754b588458SPeter Avalos extern	Node	*node4(int, Node *, Node *, Node *, Node *);
764b588458SPeter Avalos extern	Node	*stat3(int, Node *, Node *, Node *);
774b588458SPeter Avalos extern	Node	*op2(int, Node *, Node *);
784b588458SPeter Avalos extern	Node	*op1(int, Node *);
794b588458SPeter Avalos extern	Node	*stat1(int, Node *);
804b588458SPeter Avalos extern	Node	*op3(int, Node *, Node *, Node *);
814b588458SPeter Avalos extern	Node	*op4(int, Node *, Node *, Node *, Node *);
824b588458SPeter Avalos extern	Node	*stat2(int, Node *, Node *);
834b588458SPeter Avalos extern	Node	*stat4(int, Node *, Node *, Node *, Node *);
844b588458SPeter Avalos extern	Node	*celltonode(Cell *, int);
854b588458SPeter Avalos extern	Node	*rectonode(void);
864b588458SPeter Avalos extern	Node	*makearr(Node *);
874b588458SPeter Avalos extern	Node	*pa2stat(Node *, Node *, Node *);
884b588458SPeter Avalos extern	Node	*linkum(Node *, Node *);
894b588458SPeter Avalos extern	void	defn(Cell *, Node *, Node *);
904b588458SPeter Avalos extern	int	isarg(const char *);
911d48fce0SDaniel Fojt extern	const char *tokname(int);
924b588458SPeter Avalos extern	Cell	*(*proctab[])(Node **, int);
934b588458SPeter Avalos extern	int	ptoi(void *);
944b588458SPeter Avalos extern	Node	*itonp(int);
954b588458SPeter Avalos 
964b588458SPeter Avalos extern	void	syminit(void);
974b588458SPeter Avalos extern	void	arginit(int, char **);
984b588458SPeter Avalos extern	void	envinit(char **);
994b588458SPeter Avalos extern	Array	*makesymtab(int);
1004b588458SPeter Avalos extern	void	freesymtab(Cell *);
1014b588458SPeter Avalos extern	void	freeelem(Cell *, const char *);
1024b588458SPeter Avalos extern	Cell	*setsymtab(const char *, const char *, double, unsigned int, Array *);
1034b588458SPeter Avalos extern	int	hash(const char *, int);
1044b588458SPeter Avalos extern	void	rehash(Array *);
1054b588458SPeter Avalos extern	Cell	*lookup(const char *, Array *);
1064b588458SPeter Avalos extern	double	setfval(Cell *, double);
1074b588458SPeter Avalos extern	void	funnyvar(Cell *, const char *);
1084b588458SPeter Avalos extern	char	*setsval(Cell *, const char *);
1094b588458SPeter Avalos extern	double	getfval(Cell *);
1104b588458SPeter Avalos extern	char	*getsval(Cell *);
1114b588458SPeter Avalos extern	char	*getpssval(Cell *);     /* for print */
1124b588458SPeter Avalos extern	char	*tostring(const char *);
1131d48fce0SDaniel Fojt extern	char	*tostringN(const char *, size_t);
1144b588458SPeter Avalos extern	char	*qstring(const char *, int);
1151d48fce0SDaniel Fojt extern	Cell	*catstr(Cell *, Cell *);
1164b588458SPeter Avalos 
1174b588458SPeter Avalos extern	void	recinit(unsigned int);
1184b588458SPeter Avalos extern	void	initgetrec(void);
1194b588458SPeter Avalos extern	void	makefields(int, int);
1204b588458SPeter Avalos extern	void	growfldtab(int n);
1211d48fce0SDaniel Fojt extern	void	savefs(void);
1221d48fce0SDaniel Fojt extern	int	getrec(char **, int *, bool);
1234b588458SPeter Avalos extern	void	nextfile(void);
1241d48fce0SDaniel Fojt extern	int	readrec(char **buf, int *bufsize, FILE *inf, bool isnew);
1254b588458SPeter Avalos extern	char	*getargv(int);
1264b588458SPeter Avalos extern	void	setclvar(char *);
1274b588458SPeter Avalos extern	void	fldbld(void);
1284b588458SPeter Avalos extern	void	cleanfld(int, int);
1294b588458SPeter Avalos extern	void	newfld(int);
1301d48fce0SDaniel Fojt extern	void	setlastfld(int);
1314b588458SPeter Avalos extern	int	refldbld(const char *, const char *);
1324b588458SPeter Avalos extern	void	recbld(void);
1334b588458SPeter Avalos extern	Cell	*fieldadr(int);
1344b588458SPeter Avalos extern	void	yyerror(const char *);
1354b588458SPeter Avalos extern	void	bracecheck(void);
1364b588458SPeter Avalos extern	void	bcheck2(int, int, int);
1371d48fce0SDaniel Fojt extern	void	SYNTAX(const char *, ...)
1381d48fce0SDaniel Fojt     __attribute__((__format__(__printf__, 1, 2)));
1391d48fce0SDaniel Fojt extern	noreturn void	FATAL(const char *, ...)
1401d48fce0SDaniel Fojt     __attribute__((__format__(__printf__, 1, 2)));
1411d48fce0SDaniel Fojt extern	void	WARNING(const char *, ...)
1421d48fce0SDaniel Fojt     __attribute__((__format__(__printf__, 1, 2)));
1434b588458SPeter Avalos extern	void	error(void);
1444b588458SPeter Avalos extern	void	eprint(void);
1454b588458SPeter Avalos extern	void	bclass(int);
1464b588458SPeter Avalos extern	double	errcheck(double, const char *);
1474b588458SPeter Avalos extern	int	isclvar(const char *);
14848f09a05SAntonio Huete Jimenez extern	bool	is_valid_number(const char *s, bool trailing_stuff_ok,
14948f09a05SAntonio Huete Jimenez 				bool *no_trailing, double *result);
15048f09a05SAntonio Huete Jimenez #define is_number(s, val)	is_valid_number(s, false, NULL, val)
1514b588458SPeter Avalos 
1524b588458SPeter Avalos extern	int	adjbuf(char **pb, int *sz, int min, int q, char **pbp, const char *what);
1534b588458SPeter Avalos extern	void	run(Node *);
1544b588458SPeter Avalos extern	Cell	*execute(Node *);
1554b588458SPeter Avalos extern	Cell	*program(Node **, int);
1564b588458SPeter Avalos extern	Cell	*call(Node **, int);
1574b588458SPeter Avalos extern	Cell	*copycell(Cell *);
1584b588458SPeter Avalos extern	Cell	*arg(Node **, int);
1594b588458SPeter Avalos extern	Cell	*jump(Node **, int);
1604b588458SPeter Avalos extern	Cell	*awkgetline(Node **, int);
1614b588458SPeter Avalos extern	Cell	*getnf(Node **, int);
1624b588458SPeter Avalos extern	Cell	*array(Node **, int);
1634b588458SPeter Avalos extern	Cell	*awkdelete(Node **, int);
1644b588458SPeter Avalos extern	Cell	*intest(Node **, int);
1654b588458SPeter Avalos extern	Cell	*matchop(Node **, int);
1664b588458SPeter Avalos extern	Cell	*boolop(Node **, int);
1674b588458SPeter Avalos extern	Cell	*relop(Node **, int);
1684b588458SPeter Avalos extern	void	tfree(Cell *);
1694b588458SPeter Avalos extern	Cell	*gettemp(void);
1704b588458SPeter Avalos extern	Cell	*field(Node **, int);
1714b588458SPeter Avalos extern	Cell	*indirect(Node **, int);
1724b588458SPeter Avalos extern	Cell	*substr(Node **, int);
1734b588458SPeter Avalos extern	Cell	*sindex(Node **, int);
1744b588458SPeter Avalos extern	int	format(char **, int *, const char *, Node *);
1754b588458SPeter Avalos extern	Cell	*awksprintf(Node **, int);
1764b588458SPeter Avalos extern	Cell	*awkprintf(Node **, int);
1774b588458SPeter Avalos extern	Cell	*arith(Node **, int);
1784b588458SPeter Avalos extern	double	ipow(double, int);
1794b588458SPeter Avalos extern	Cell	*incrdecr(Node **, int);
1804b588458SPeter Avalos extern	Cell	*assign(Node **, int);
1814b588458SPeter Avalos extern	Cell	*cat(Node **, int);
1824b588458SPeter Avalos extern	Cell	*pastat(Node **, int);
1834b588458SPeter Avalos extern	Cell	*dopa2(Node **, int);
1844b588458SPeter Avalos extern	Cell	*split(Node **, int);
1854b588458SPeter Avalos extern	Cell	*condexpr(Node **, int);
1864b588458SPeter Avalos extern	Cell	*ifstat(Node **, int);
1874b588458SPeter Avalos extern	Cell	*whilestat(Node **, int);
1884b588458SPeter Avalos extern	Cell	*dostat(Node **, int);
1894b588458SPeter Avalos extern	Cell	*forstat(Node **, int);
1904b588458SPeter Avalos extern	Cell	*instat(Node **, int);
1914b588458SPeter Avalos extern	Cell	*bltin(Node **, int);
1924b588458SPeter Avalos extern	Cell	*printstat(Node **, int);
1934b588458SPeter Avalos extern	Cell	*nullproc(Node **, int);
1944b588458SPeter Avalos extern	FILE	*redirect(int, Node *);
1951d48fce0SDaniel Fojt extern	FILE	*openfile(int, const char *, bool *);
1964b588458SPeter Avalos extern	const char	*filename(FILE *);
1974b588458SPeter Avalos extern	Cell	*closefile(Node **, int);
1984b588458SPeter Avalos extern	void	closeall(void);
199*ed569bc2SAaron LI extern	Cell	*dosub(Node **, int);
2004b588458SPeter Avalos 
2014b588458SPeter Avalos extern	FILE	*popen(const char *, const char *);
2024b588458SPeter Avalos extern	int	pclose(FILE *);
2031d48fce0SDaniel Fojt 
2041d48fce0SDaniel Fojt extern  const char	*flags2str(int flags);
205