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