Annotation of src/usr.bin/awk/proto.h, Revision 1.23
1.23 ! millert 1: /* $OpenBSD: proto.h,v 1.22 2023/09/17 14:49:44 millert Exp $ */
1.1 tholo 2: /****************************************************************
1.3 kstailey 3: Copyright (C) Lucent Technologies 1997
1.1 tholo 4: All Rights Reserved
5:
6: Permission to use, copy, modify, and distribute this software and
7: its documentation for any purpose and without fee is hereby
8: granted, provided that the above copyright notice appear in all
9: copies and that both that the copyright notice and this
10: permission notice and warranty disclaimer appear in supporting
1.3 kstailey 11: documentation, and that the name Lucent Technologies or any of
12: its entities not be used in advertising or publicity pertaining
13: to distribution of the software without specific, written prior
14: permission.
15:
16: LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
17: INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
18: IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
19: SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
20: WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
21: IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
22: ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
23: THIS SOFTWARE.
1.1 tholo 24: ****************************************************************/
25:
1.2 millert 26: extern int yywrap(void);
1.1 tholo 27: extern void setfname(Cell *);
28: extern int constnode(Node *);
29: extern char *strnode(Node *);
30: extern Node *notnull(Node *);
31: extern int yyparse(void);
32:
33: extern int yylex(void);
34: extern void startreg(void);
1.2 millert 35: extern int input(void);
36: extern void unput(int);
1.7 millert 37: extern void unputstr(const char *);
1.2 millert 38: extern int yylook(void);
39: extern int yyback(int *, int);
40: extern int yyinput(void);
1.1 tholo 41:
1.16 millert 42: extern fa *makedfa(const char *, bool);
43: extern fa *mkdfa(const char *, bool);
44: extern int makeinit(fa *, bool);
1.1 tholo 45: extern void penter(Node *);
46: extern void freetr(Node *);
1.15 millert 47: extern int quoted(const uschar **);
1.22 millert 48: extern int *cclenter(const char *);
1.18 millert 49: extern noreturn void overflo(const char *);
1.1 tholo 50: extern void cfoll(fa *, Node *);
51: extern int first(Node *);
52: extern void follow(Node *);
1.22 millert 53: extern int member(int, int *);
1.7 millert 54: extern int match(fa *, const char *);
55: extern int pmatch(fa *, const char *);
56: extern int nematch(fa *, const char *);
1.16 millert 57: extern bool fnematch(fa *, FILE *, char **, int *, int);
1.7 millert 58: extern Node *reparse(const char *);
1.1 tholo 59: extern Node *regexp(void);
60: extern Node *primary(void);
61: extern Node *concat(Node *);
62: extern Node *alt(Node *);
63: extern Node *unary(Node *);
64: extern int relex(void);
65: extern int cgoto(fa *, int, int);
66: extern void freefa(fa *);
67:
68: extern int pgetc(void);
1.5 millert 69: extern char *cursource(void);
1.1 tholo 70:
1.21 millert 71: extern Node *nodealloc(size_t);
1.1 tholo 72: extern Node *exptostat(Node *);
73: extern Node *node1(int, Node *);
74: extern Node *node2(int, Node *, Node *);
75: extern Node *node3(int, Node *, Node *, Node *);
76: extern Node *node4(int, Node *, Node *, Node *, Node *);
1.19 millert 77: extern Node *node5(int, Node *, Node *, Node *, Node *, Node *);
1.1 tholo 78: extern Node *stat3(int, Node *, Node *, Node *);
79: extern Node *op2(int, Node *, Node *);
80: extern Node *op1(int, Node *);
81: extern Node *stat1(int, Node *);
82: extern Node *op3(int, Node *, Node *, Node *);
83: extern Node *op4(int, Node *, Node *, Node *, Node *);
1.19 millert 84: extern Node *op5(int, Node *, Node *, Node *, Node *, Node *);
1.1 tholo 85: extern Node *stat2(int, Node *, Node *);
86: extern Node *stat4(int, Node *, Node *, Node *, Node *);
1.3 kstailey 87: extern Node *celltonode(Cell *, int);
1.1 tholo 88: extern Node *rectonode(void);
89: extern Node *makearr(Node *);
90: extern Node *pa2stat(Node *, Node *, Node *);
91: extern Node *linkum(Node *, Node *);
92: extern void defn(Cell *, Node *, Node *);
1.7 millert 93: extern int isarg(const char *);
1.15 millert 94: extern const char *tokname(int);
1.5 millert 95: extern Cell *(*proctab[])(Node **, int);
96: extern int ptoi(void *);
97: extern Node *itonp(int);
1.1 tholo 98:
99: extern void syminit(void);
100: extern void arginit(int, char **);
101: extern void envinit(char **);
102: extern Array *makesymtab(int);
103: extern void freesymtab(Cell *);
1.7 millert 104: extern void freeelem(Cell *, const char *);
105: extern Cell *setsymtab(const char *, const char *, double, unsigned int, Array *);
106: extern int hash(const char *, int);
1.1 tholo 107: extern void rehash(Array *);
1.7 millert 108: extern Cell *lookup(const char *, Array *);
1.1 tholo 109: extern double setfval(Cell *, double);
1.7 millert 110: extern void funnyvar(Cell *, const char *);
111: extern char *setsval(Cell *, const char *);
1.1 tholo 112: extern double getfval(Cell *);
113: extern char *getsval(Cell *);
1.7 millert 114: extern char *getpssval(Cell *); /* for print */
115: extern char *tostring(const char *);
1.17 millert 116: extern char *tostringN(const char *, size_t);
1.7 millert 117: extern char *qstring(const char *, int);
1.13 millert 118: extern Cell *catstr(Cell *, Cell *);
1.1 tholo 119:
120: extern void recinit(unsigned int);
121: extern void initgetrec(void);
1.3 kstailey 122: extern void makefields(int, int);
123: extern void growfldtab(int n);
1.13 millert 124: extern void savefs(void);
1.16 millert 125: extern int getrec(char **, int *, bool);
1.1 tholo 126: extern void nextfile(void);
1.17 millert 127: extern int readrec(char **buf, int *bufsize, FILE *inf, bool isnew);
1.1 tholo 128: extern char *getargv(int);
129: extern void setclvar(char *);
130: extern void fldbld(void);
131: extern void cleanfld(int, int);
132: extern void newfld(int);
1.12 millert 133: extern void setlastfld(int);
1.7 millert 134: extern int refldbld(const char *, const char *);
1.1 tholo 135: extern void recbld(void);
136: extern Cell *fieldadr(int);
1.7 millert 137: extern void yyerror(const char *);
1.1 tholo 138: extern void bracecheck(void);
139: extern void bcheck2(int, int, int);
1.17 millert 140: extern void SYNTAX(const char *, ...)
141: __attribute__((__format__(__printf__, 1, 2)));
1.18 millert 142: extern noreturn void FATAL(const char *, ...)
143: __attribute__((__format__(__printf__, 1, 2)));
1.17 millert 144: extern void WARNING(const char *, ...)
145: __attribute__((__format__(__printf__, 1, 2)));
1.6 millert 146: extern void error(void);
1.1 tholo 147: extern void eprint(void);
148: extern void bclass(int);
1.7 millert 149: extern double errcheck(double, const char *);
150: extern int isclvar(const char *);
1.20 millert 151: extern bool is_valid_number(const char *s, bool trailing_stuff_ok,
152: bool *no_trailing, double *result);
153: #define is_number(s, val) is_valid_number(s, false, NULL, val)
1.1 tholo 154:
1.7 millert 155: extern int adjbuf(char **pb, int *sz, int min, int q, char **pbp, const char *what);
1.1 tholo 156: extern void run(Node *);
157: extern Cell *execute(Node *);
158: extern Cell *program(Node **, int);
159: extern Cell *call(Node **, int);
160: extern Cell *copycell(Cell *);
161: extern Cell *arg(Node **, int);
162: extern Cell *jump(Node **, int);
1.8 millert 163: extern Cell *awkgetline(Node **, int);
1.1 tholo 164: extern Cell *getnf(Node **, int);
165: extern Cell *array(Node **, int);
1.4 millert 166: extern Cell *awkdelete(Node **, int);
1.1 tholo 167: extern Cell *intest(Node **, int);
168: extern Cell *matchop(Node **, int);
169: extern Cell *boolop(Node **, int);
170: extern Cell *relop(Node **, int);
171: extern void tfree(Cell *);
172: extern Cell *gettemp(void);
173: extern Cell *field(Node **, int);
174: extern Cell *indirect(Node **, int);
175: extern Cell *substr(Node **, int);
176: extern Cell *sindex(Node **, int);
1.7 millert 177: extern int format(char **, int *, const char *, Node *);
1.1 tholo 178: extern Cell *awksprintf(Node **, int);
179: extern Cell *awkprintf(Node **, int);
180: extern Cell *arith(Node **, int);
181: extern double ipow(double, int);
182: extern Cell *incrdecr(Node **, int);
183: extern Cell *assign(Node **, int);
184: extern Cell *cat(Node **, int);
185: extern Cell *pastat(Node **, int);
186: extern Cell *dopa2(Node **, int);
187: extern Cell *split(Node **, int);
188: extern Cell *condexpr(Node **, int);
189: extern Cell *ifstat(Node **, int);
190: extern Cell *whilestat(Node **, int);
191: extern Cell *dostat(Node **, int);
192: extern Cell *forstat(Node **, int);
193: extern Cell *instat(Node **, int);
194: extern Cell *bltin(Node **, int);
195: extern Cell *printstat(Node **, int);
196: extern Cell *nullproc(Node **, int);
197: extern FILE *redirect(int, Node *);
1.17 millert 198: extern FILE *openfile(int, const char *, bool *);
1.7 millert 199: extern const char *filename(FILE *);
1.1 tholo 200: extern Cell *closefile(Node **, int);
201: extern void closeall(void);
1.23 ! millert 202: extern Cell *dosub(Node **, int);
1.19 millert 203: extern Cell *gensub(Node **, int);
1.1 tholo 204:
205: extern FILE *popen(const char *, const char *);
206: extern int pclose(FILE *);
1.12 millert 207:
208: extern const char *flags2str(int flags);