]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/one-true-awk/proto.h
Add UPDATING entries and bump version.
[FreeBSD/FreeBSD.git] / contrib / one-true-awk / proto.h
1 /****************************************************************
2 Copyright (C) Lucent Technologies 1997
3 All Rights Reserved
4
5 Permission to use, copy, modify, and distribute this software and
6 its documentation for any purpose and without fee is hereby
7 granted, provided that the above copyright notice appear in all
8 copies and that both that the copyright notice and this
9 permission notice and warranty disclaimer appear in supporting
10 documentation, and that the name Lucent Technologies or any of
11 its entities not be used in advertising or publicity pertaining
12 to distribution of the software without specific, written prior
13 permission.
14
15 LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
16 INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
17 IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
18 SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
19 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
20 IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
21 ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
22 THIS SOFTWARE.
23 ****************************************************************/
24
25 extern  int     yywrap(void);
26 extern  void    setfname(Cell *);
27 extern  int     constnode(Node *);
28 extern  char    *strnode(Node *);
29 extern  Node    *notnull(Node *);
30 extern  int     yyparse(void);
31
32 extern  int     yylex(void);
33 extern  void    startreg(void);
34 extern  int     input(void);
35 extern  void    unput(int);
36 extern  void    unputstr(const char *);
37 extern  int     yylook(void);
38 extern  int     yyback(int *, int);
39 extern  int     yyinput(void);
40
41 extern  fa      *makedfa(const char *, bool);
42 extern  fa      *mkdfa(const char *, bool);
43 extern  int     makeinit(fa *, bool);
44 extern  void    penter(Node *);
45 extern  void    freetr(Node *);
46 extern  int     hexstr(const uschar **);
47 extern  int     quoted(const uschar **);
48 extern  char    *cclenter(const char *);
49 extern  noreturn void   overflo(const char *);
50 extern  void    cfoll(fa *, Node *);
51 extern  int     first(Node *);
52 extern  void    follow(Node *);
53 extern  int     member(int, const char *);
54 extern  int     match(fa *, const char *);
55 extern  int     pmatch(fa *, const char *);
56 extern  int     nematch(fa *, const char *);
57 extern  bool    fnematch(fa *, FILE *, char **, int *, int);
58 extern  Node    *reparse(const char *);
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);
69 extern  char    *cursource(void);
70
71 extern  Node    *nodealloc(int);
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 *);
77 extern  Node    *node5(int, Node *, Node *, Node *, Node *, Node *);
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 *);
84 extern  Node    *op5(int, Node *, Node *, Node *, Node *, Node *);
85 extern  Node    *stat2(int, Node *, Node *);
86 extern  Node    *stat4(int, Node *, Node *, Node *, Node *);
87 extern  Node    *celltonode(Cell *, int);
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 *);
93 extern  int     isarg(const char *);
94 extern  const char *tokname(int);
95 extern  Cell    *(*proctab[])(Node **, int);
96 extern  int     ptoi(void *);
97 extern  Node    *itonp(int);
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 *);
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);
107 extern  void    rehash(Array *);
108 extern  Cell    *lookup(const char *, Array *);
109 extern  double  setfval(Cell *, double);
110 extern  void    funnyvar(Cell *, const char *);
111 extern  char    *setsval(Cell *, const char *);
112 extern  double  getfval(Cell *);
113 extern  char    *getsval(Cell *);
114 extern  char    *getpssval(Cell *);     /* for print */
115 extern  char    *tostring(const char *);
116 extern  char    *tostringN(const char *, size_t);
117 extern  char    *qstring(const char *, int);
118 extern  Cell    *catstr(Cell *, Cell *);
119
120 extern  void    recinit(unsigned int);
121 extern  void    initgetrec(void);
122 extern  void    makefields(int, int);
123 extern  void    growfldtab(int n);
124 extern  void    savefs(void);
125 extern  int     getrec(char **, int *, bool);
126 extern  void    nextfile(void);
127 extern  int     readrec(char **buf, int *bufsize, FILE *inf, bool isnew);
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);
133 extern  void    setlastfld(int);
134 extern  int     refldbld(const char *, const char *);
135 extern  void    recbld(void);
136 extern  Cell    *fieldadr(int);
137 extern  void    yyerror(const char *);
138 extern  void    bracecheck(void);
139 extern  void    bcheck2(int, int, int);
140 extern  void    SYNTAX(const char *, ...)
141     __attribute__((__format__(__printf__, 1, 2)));
142 extern  noreturn void   FATAL(const char *, ...)
143     __attribute__((__format__(__printf__, 1, 2)));
144 extern  void    WARNING(const char *, ...)
145     __attribute__((__format__(__printf__, 1, 2)));
146 extern  void    error(void);
147 extern  void    eprint(void);
148 extern  void    bclass(int);
149 extern  double  errcheck(double, const char *);
150 extern  int     isclvar(const char *);
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)
154
155 extern  int     adjbuf(char **pb, int *sz, int min, int q, char **pbp, const char *what);
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);
163 extern  Cell    *awkgetline(Node **, int);
164 extern  Cell    *getnf(Node **, int);
165 extern  Cell    *array(Node **, int);
166 extern  Cell    *awkdelete(Node **, int);
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);
177 extern  int     format(char **, int *, const char *, Node *);
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 *);
198 extern  FILE    *openfile(int, const char *, bool *);
199 extern  const char      *filename(FILE *);
200 extern  Cell    *closefile(Node **, int);
201 extern  void    closeall(void);
202 extern  Cell    *sub(Node **, int);
203 extern  Cell    *gsub(Node **, int);
204 extern  Cell    *gensub(Node **, int);
205
206 extern  FILE    *popen(const char *, const char *);
207 extern  int     pclose(FILE *);
208
209 extern  const char      *flags2str(int flags);