Merge branch 'staging'
This commit is contained in:
commit
0f25df0619
7
awk.h
7
awk.h
@ -44,14 +44,13 @@ typedef unsigned char uschar;
|
||||
*/
|
||||
#define setptr(ptr, a) (*(char *)(intptr_t)(ptr)) = (a)
|
||||
|
||||
#define NN(p) ((p) ? (p) : "(null)") /* guaranteed non-null for dprintf
|
||||
#define NN(p) ((p) ? (p) : "(null)") /* guaranteed non-null for DPRINTF
|
||||
*/
|
||||
#define DEBUG
|
||||
#ifdef DEBUG
|
||||
/* uses have to be doubly parenthesized */
|
||||
# define dprintf(x) if (dbg) printf x
|
||||
# define DPRINTF(...) if (dbg) printf(__VA_ARGS__)
|
||||
#else
|
||||
# define dprintf(x)
|
||||
# define DPRINTF(...)
|
||||
#endif
|
||||
|
||||
extern enum compile_states {
|
||||
|
4
b.c
4
b.c
@ -397,7 +397,7 @@ char *cclenter(const char *argp) /* add a character class */
|
||||
i++;
|
||||
}
|
||||
*bp = 0;
|
||||
dprintf( ("cclenter: in = |%s|, out = |%s|\n", op, buf) );
|
||||
DPRINTF("cclenter: in = |%s|, out = |%s|\n", op, buf);
|
||||
xfree(op);
|
||||
return (char *) tostring((char *) buf);
|
||||
}
|
||||
@ -733,7 +733,7 @@ Node *reparse(const char *p) /* parses regular expression pointed to by p */
|
||||
{ /* uses relex() to scan regular expression */
|
||||
Node *np;
|
||||
|
||||
dprintf( ("reparse <%s>\n", p) );
|
||||
DPRINTF("reparse <%s>\n", p);
|
||||
lastre = prestr = (const uschar *) p; /* prestr points to string to be parsed */
|
||||
rtok = relex();
|
||||
/* GNU compatibility: an empty regexp matches anything */
|
||||
|
28
lib.c
28
lib.c
@ -147,8 +147,8 @@ int getrec(char **pbuf, int *pbufsize, bool isrecord) /* get next input record *
|
||||
firsttime = false;
|
||||
initgetrec();
|
||||
}
|
||||
dprintf( ("RS=<%s>, FS=<%s>, ARGC=%g, FILENAME=%s\n",
|
||||
*RS, *FS, *ARGC, *FILENAME) );
|
||||
DPRINTF("RS=<%s>, FS=<%s>, ARGC=%g, FILENAME=%s\n",
|
||||
*RS, *FS, *ARGC, *FILENAME);
|
||||
if (isrecord) {
|
||||
donefld = false;
|
||||
donerec = true;
|
||||
@ -157,7 +157,7 @@ int getrec(char **pbuf, int *pbufsize, bool isrecord) /* get next input record *
|
||||
saveb0 = buf[0];
|
||||
buf[0] = 0;
|
||||
while (argno < *ARGC || infile == stdin) {
|
||||
dprintf( ("argno=%d, file=|%s|\n", argno, file) );
|
||||
DPRINTF("argno=%d, file=|%s|\n", argno, file);
|
||||
if (infile == NULL) { /* have to open a new file */
|
||||
file = getargv(argno);
|
||||
if (file == NULL || *file == '\0') { /* deleted or zapped */
|
||||
@ -170,7 +170,7 @@ int getrec(char **pbuf, int *pbufsize, bool isrecord) /* get next input record *
|
||||
continue;
|
||||
}
|
||||
*FILENAME = file;
|
||||
dprintf( ("opening file %s\n", file) );
|
||||
DPRINTF("opening file %s\n", file);
|
||||
if (*file == '-' && *(file+1) == '\0')
|
||||
infile = stdin;
|
||||
else if ((infile = fopen(file, "r")) == NULL)
|
||||
@ -271,7 +271,7 @@ int readrec(char **pbuf, int *pbufsize, FILE *inf, bool newflag) /* read one rec
|
||||
*pbuf = buf;
|
||||
*pbufsize = bufsize;
|
||||
isrec = *buf || !feof(inf);
|
||||
dprintf( ("readrec saw <%s>, returns %d\n", buf, isrec) );
|
||||
DPRINTF("readrec saw <%s>, returns %d\n", buf, isrec);
|
||||
return isrec;
|
||||
}
|
||||
|
||||
@ -286,7 +286,7 @@ char *getargv(int n) /* get ARGV[n] */
|
||||
return NULL;
|
||||
x = setsymtab(temp, "", 0.0, STR, ARGVtab);
|
||||
s = getsval(x);
|
||||
dprintf( ("getargv(%d) returns |%s|\n", n, s) );
|
||||
DPRINTF("getargv(%d) returns |%s|\n", n, s);
|
||||
return s;
|
||||
}
|
||||
|
||||
@ -305,7 +305,7 @@ void setclvar(char *s) /* set var=value from s */
|
||||
q->fval = atof(q->sval);
|
||||
q->tval |= NUM;
|
||||
}
|
||||
dprintf( ("command line set %s to |%s|\n", s, p) );
|
||||
DPRINTF("command line set %s to |%s|\n", s, p);
|
||||
}
|
||||
|
||||
|
||||
@ -504,7 +504,7 @@ int refldbld(const char *rec, const char *fs) /* build fields from reg expr in F
|
||||
if (*rec == '\0')
|
||||
return 0;
|
||||
pfa = makedfa(fs, 1);
|
||||
dprintf( ("into refldbld, rec = <%s>, pat = <%s>\n", rec, fs) );
|
||||
DPRINTF("into refldbld, rec = <%s>, pat = <%s>\n", rec, fs);
|
||||
tempstat = pfa->initstat;
|
||||
for (i = 1; ; i++) {
|
||||
if (i > nfields)
|
||||
@ -513,16 +513,16 @@ int refldbld(const char *rec, const char *fs) /* build fields from reg expr in F
|
||||
xfree(fldtab[i]->sval);
|
||||
fldtab[i]->tval = FLD | STR | DONTFREE;
|
||||
fldtab[i]->sval = fr;
|
||||
dprintf( ("refldbld: i=%d\n", i) );
|
||||
DPRINTF("refldbld: i=%d\n", i);
|
||||
if (nematch(pfa, rec)) {
|
||||
pfa->initstat = 2; /* horrible coupling to b.c */
|
||||
dprintf( ("match %s (%d chars)\n", patbeg, patlen) );
|
||||
DPRINTF("match %s (%d chars)\n", patbeg, patlen);
|
||||
strncpy(fr, rec, patbeg-rec);
|
||||
fr += patbeg - rec + 1;
|
||||
*(fr-1) = '\0';
|
||||
rec = patbeg + patlen;
|
||||
} else {
|
||||
dprintf( ("no match %s\n", rec) );
|
||||
DPRINTF("no match %s\n", rec);
|
||||
strcpy(fr, rec);
|
||||
pfa->initstat = tempstat;
|
||||
break;
|
||||
@ -556,15 +556,15 @@ void recbld(void) /* create $0 from $1..$NF if necessary */
|
||||
if (!adjbuf(&record, &recsize, 2+r-record, recsize, &r, "recbld 3"))
|
||||
FATAL("built giant record `%.30s...'", record);
|
||||
*r = '\0';
|
||||
dprintf( ("in recbld inputFS=%s, fldtab[0]=%p\n", inputFS, (void*)fldtab[0]) );
|
||||
DPRINTF("in recbld inputFS=%s, fldtab[0]=%p\n", inputFS, (void*)fldtab[0]);
|
||||
|
||||
if (freeable(fldtab[0]))
|
||||
xfree(fldtab[0]->sval);
|
||||
fldtab[0]->tval = REC | STR | DONTFREE;
|
||||
fldtab[0]->sval = record;
|
||||
|
||||
dprintf( ("in recbld inputFS=%s, fldtab[0]=%p\n", inputFS, (void*)fldtab[0]) );
|
||||
dprintf( ("recbld = |%s|\n", record) );
|
||||
DPRINTF("in recbld inputFS=%s, fldtab[0]=%p\n", inputFS, (void*)fldtab[0]);
|
||||
DPRINTF("recbld = |%s|\n", record);
|
||||
donerec = true;
|
||||
}
|
||||
|
||||
|
6
main.c
6
main.c
@ -200,7 +200,7 @@ int main(int argc, char *argv[])
|
||||
exit(0);
|
||||
FATAL("no program given");
|
||||
}
|
||||
dprintf( ("program = |%s|\n", argv[1]) );
|
||||
DPRINTF("program = |%s|\n", argv[1]);
|
||||
lexprog = argv[1];
|
||||
argc--;
|
||||
argv++;
|
||||
@ -209,7 +209,7 @@ int main(int argc, char *argv[])
|
||||
syminit();
|
||||
compile_time = COMPILING;
|
||||
argv[0] = cmdname; /* put prog name at front of arglist */
|
||||
dprintf( ("argc=%d, argv[0]=%s\n", argc, argv[0]) );
|
||||
DPRINTF("argc=%d, argv[0]=%s\n", argc, argv[0]);
|
||||
arginit(argc, argv);
|
||||
if (!safe)
|
||||
envinit(environ);
|
||||
@ -221,7 +221,7 @@ int main(int argc, char *argv[])
|
||||
#endif
|
||||
if (fs)
|
||||
*FS = qstring(fs, '\0');
|
||||
dprintf( ("errorflag=%d\n", errorflag) );
|
||||
DPRINTF("errorflag=%d\n", errorflag);
|
||||
if (errorflag == 0) {
|
||||
compile_time = RUNNING;
|
||||
run(winner);
|
||||
|
2
parse.c
2
parse.c
@ -250,7 +250,7 @@ void defn(Cell *v, Node *vl, Node *st) /* turn on FCN bit in definition, */
|
||||
for (p = vl; p; p = p->nnext)
|
||||
n++;
|
||||
v->fval = n;
|
||||
dprintf( ("defining func %s (%d args)\n", v->nval, n) );
|
||||
DPRINTF("defining func %s (%d args)\n", v->nval, n);
|
||||
}
|
||||
|
||||
int isarg(const char *s) /* is s in argument list for current function? */
|
||||
|
28
run.c
28
run.c
@ -119,7 +119,7 @@ int adjbuf(char **pbuf, int *psiz, int minlen, int quantum, char **pbptr,
|
||||
if (rminlen)
|
||||
minlen += quantum - rminlen;
|
||||
tbuf = realloc(*pbuf, minlen);
|
||||
dprintf( ("adjbuf %s: %d %d (pbuf=%p, tbuf=%p)\n", whatrtn, *psiz, minlen, *pbuf, tbuf) );
|
||||
DPRINTF("adjbuf %s: %d %d (pbuf=%p, tbuf=%p)\n", whatrtn, *psiz, minlen, *pbuf, tbuf);
|
||||
if (tbuf == NULL) {
|
||||
if (whatrtn)
|
||||
FATAL("out of memory in %s", whatrtn);
|
||||
@ -247,18 +247,18 @@ Cell *call(Node **a, int n) /* function call. very kludgy and fragile */
|
||||
for (ncall = 0, x = a[1]; x != NULL; x = x->nnext) /* args in call */
|
||||
ncall++;
|
||||
ndef = (int) fcn->fval; /* args in defn */
|
||||
dprintf( ("calling %s, %d args (%d in defn), frp=%d\n", s, ncall, ndef, (int) (frp-frame)) );
|
||||
DPRINTF("calling %s, %d args (%d in defn), frp=%d\n", s, ncall, ndef, (int) (frp-frame));
|
||||
if (ncall > ndef)
|
||||
WARNING("function %s called with %d args, uses only %d",
|
||||
s, ncall, ndef);
|
||||
if (ncall + ndef > NARGS)
|
||||
FATAL("function %s has %d arguments, limit %d", s, ncall+ndef, NARGS);
|
||||
for (i = 0, x = a[1]; x != NULL; i++, x = x->nnext) { /* get call args */
|
||||
dprintf( ("evaluate args[%d], frp=%d:\n", i, (int) (frp-frame)) );
|
||||
DPRINTF("evaluate args[%d], frp=%d:\n", i, (int) (frp-frame));
|
||||
y = execute(x);
|
||||
oargs[i] = y;
|
||||
dprintf( ("args[%d]: %s %f <%s>, t=%o\n",
|
||||
i, NN(y->nval), y->fval, isarr(y) ? "(array)" : NN(y->sval), y->tval) );
|
||||
DPRINTF("args[%d]: %s %f <%s>, t=%o\n",
|
||||
i, NN(y->nval), y->fval, isarr(y) ? "(array)" : NN(y->sval), y->tval);
|
||||
if (isfcn(y))
|
||||
FATAL("can't use function %s as argument in %s", y->nval, s);
|
||||
if (isarr(y))
|
||||
@ -284,9 +284,9 @@ Cell *call(Node **a, int n) /* function call. very kludgy and fragile */
|
||||
frp->nargs = ndef; /* number defined with (excess are locals) */
|
||||
frp->retval = gettemp();
|
||||
|
||||
dprintf( ("start exec of %s, frp=%d\n", s, (int) (frp-frame)) );
|
||||
DPRINTF("start exec of %s, frp=%d\n", s, (int) (frp-frame));
|
||||
y = execute((Node *)(fcn->sval)); /* execute body */
|
||||
dprintf( ("finished exec of %s, frp=%d\n", s, (int) (frp-frame)) );
|
||||
DPRINTF("finished exec of %s, frp=%d\n", s, (int) (frp-frame));
|
||||
|
||||
for (i = 0; i < ndef; i++) {
|
||||
Cell *t = frp->args[i];
|
||||
@ -319,7 +319,7 @@ Cell *call(Node **a, int n) /* function call. very kludgy and fragile */
|
||||
tempfree(y); /* don't free twice! */
|
||||
}
|
||||
z = frp->retval; /* return value */
|
||||
dprintf( ("%s returns %g |%s| %o\n", s, getfval(z), getsval(z), z->tval) );
|
||||
DPRINTF("%s returns %g |%s| %o\n", s, getfval(z), getsval(z), z->tval);
|
||||
frp--;
|
||||
return(z);
|
||||
}
|
||||
@ -347,7 +347,7 @@ Cell *arg(Node **a, int n) /* nth argument of a function */
|
||||
{
|
||||
|
||||
n = ptoi(a[0]); /* argument number, counting from 0 */
|
||||
dprintf( ("arg(%d), frp->nargs=%d\n", n, frp->nargs) );
|
||||
DPRINTF("arg(%d), frp->nargs=%d\n", n, frp->nargs);
|
||||
if (n+1 > frp->nargs)
|
||||
FATAL("argument #%d of function %s was not supplied",
|
||||
n+1, frp->fcncell->nval);
|
||||
@ -512,7 +512,7 @@ Cell *array(Node **a, int n) /* a[0] is symtab, a[1] is list of subscripts */
|
||||
x = execute(a[0]); /* Cell* for symbol table */
|
||||
buf = makearraystring(a[1], __func__);
|
||||
if (!isarr(x)) {
|
||||
dprintf( ("making %s into an array\n", NN(x->nval)) );
|
||||
DPRINTF("making %s into an array\n", NN(x->nval));
|
||||
if (freeable(x))
|
||||
xfree(x->sval);
|
||||
x->tval &= ~(STR|NUM|DONTFREE);
|
||||
@ -558,7 +558,7 @@ Cell *intest(Node **a, int n) /* a[0] is index (list), a[1] is symtab */
|
||||
|
||||
ap = execute(a[1]); /* array name */
|
||||
if (!isarr(ap)) {
|
||||
dprintf( ("making %s into an array\n", ap->nval) );
|
||||
DPRINTF("making %s into an array\n", ap->nval);
|
||||
if (freeable(ap))
|
||||
xfree(ap->sval);
|
||||
ap->tval &= ~(STR|NUM|DONTFREE);
|
||||
@ -687,7 +687,7 @@ Cell *relop(Node **a, int n) /* a[0 < a[1], etc. */
|
||||
void tfree(Cell *a) /* free a tempcell */
|
||||
{
|
||||
if (freeable(a)) {
|
||||
dprintf( ("freeing %s %s %o\n", NN(a->nval), NN(a->sval), a->tval) );
|
||||
DPRINTF("freeing %s %s %o\n", NN(a->nval), NN(a->sval), a->tval);
|
||||
xfree(a->sval);
|
||||
}
|
||||
if (a == tmps)
|
||||
@ -774,7 +774,7 @@ Cell *substr(Node **a, int nnn) /* substr(a[0], a[1], a[2]) */
|
||||
n = 0;
|
||||
else if (n > k - m)
|
||||
n = k - m;
|
||||
dprintf( ("substr: m=%d, n=%d, s=%s\n", m, n, s) );
|
||||
DPRINTF("substr: m=%d, n=%d, s=%s\n", m, n, s);
|
||||
y = gettemp();
|
||||
temp = s[n+m-1]; /* with thanks to John Linderman */
|
||||
s[n+m-1] = '\0';
|
||||
@ -1276,7 +1276,7 @@ Cell *split(Node **a, int nnn) /* split(a[0], a[1], a[2]); a[3] is type */
|
||||
sep = *fs;
|
||||
ap = execute(a[1]); /* array name */
|
||||
freesymtab(ap);
|
||||
dprintf( ("split: s=|%s|, a=%s, sep=|%s|\n", s, NN(ap->nval), fs) );
|
||||
DPRINTF("split: s=|%s|, a=%s, sep=|%s|\n", s, NN(ap->nval), fs);
|
||||
ap->tval &= ~STR;
|
||||
ap->tval |= ARR;
|
||||
ap->sval = (char *) makesymtab(NSYMTAB);
|
||||
|
34
tran.c
34
tran.c
@ -234,8 +234,8 @@ Cell *setsymtab(const char *n, const char *s, Awkfloat f, unsigned t, Array *tp)
|
||||
Cell *p;
|
||||
|
||||
if (n != NULL && (p = lookup(n, tp)) != NULL) {
|
||||
dprintf( ("setsymtab found %p: n=%s s=\"%s\" f=%g t=%o\n",
|
||||
(void*)p, NN(p->nval), NN(p->sval), p->fval, p->tval) );
|
||||
DPRINTF("setsymtab found %p: n=%s s=\"%s\" f=%g t=%o\n",
|
||||
(void*)p, NN(p->nval), NN(p->sval), p->fval, p->tval);
|
||||
return(p);
|
||||
}
|
||||
p = malloc(sizeof(*p));
|
||||
@ -253,8 +253,8 @@ Cell *setsymtab(const char *n, const char *s, Awkfloat f, unsigned t, Array *tp)
|
||||
h = hash(n, tp->size);
|
||||
p->cnext = tp->tab[h];
|
||||
tp->tab[h] = p;
|
||||
dprintf( ("setsymtab set %p: n=%s s=\"%s\" f=%g t=%o\n",
|
||||
(void*)p, p->nval, p->sval, p->fval, p->tval) );
|
||||
DPRINTF("setsymtab set %p: n=%s s=\"%s\" f=%g t=%o\n",
|
||||
(void*)p, p->nval, p->sval, p->fval, p->tval);
|
||||
return(p);
|
||||
}
|
||||
|
||||
@ -313,11 +313,11 @@ Awkfloat setfval(Cell *vp, Awkfloat f) /* set float val of a Cell */
|
||||
fldno = atoi(vp->nval);
|
||||
if (fldno > *NF)
|
||||
newfld(fldno);
|
||||
dprintf( ("setting field %d to %g\n", fldno, f) );
|
||||
DPRINTF("setting field %d to %g\n", fldno, f);
|
||||
} else if (&vp->fval == NF) {
|
||||
donerec = false; /* mark $0 invalid */
|
||||
setlastfld(f);
|
||||
dprintf( ("setting NF to %g\n", f) );
|
||||
DPRINTF("setting NF to %g\n", f);
|
||||
} else if (isrec(vp)) {
|
||||
donefld = false; /* mark $1... invalid */
|
||||
donerec = true;
|
||||
@ -333,7 +333,7 @@ Awkfloat setfval(Cell *vp, Awkfloat f) /* set float val of a Cell */
|
||||
vp->tval |= NUM; /* mark number ok */
|
||||
if (f == -0) /* who would have thought this possible? */
|
||||
f = 0;
|
||||
dprintf( ("setfval %p: %s = %g, t=%o\n", (void*)vp, NN(vp->nval), f, vp->tval) );
|
||||
DPRINTF("setfval %p: %s = %g, t=%o\n", (void*)vp, NN(vp->nval), f, vp->tval);
|
||||
return vp->fval = f;
|
||||
}
|
||||
|
||||
@ -353,8 +353,8 @@ char *setsval(Cell *vp, const char *s) /* set string val of a Cell */
|
||||
int fldno;
|
||||
Awkfloat f;
|
||||
|
||||
dprintf( ("starting setsval %p: %s = \"%s\", t=%o, r,f=%d,%d\n",
|
||||
(void*)vp, NN(vp->nval), s, vp->tval, donerec, donefld) );
|
||||
DPRINTF("starting setsval %p: %s = \"%s\", t=%o, r,f=%d,%d\n",
|
||||
(void*)vp, NN(vp->nval), s, vp->tval, donerec, donefld);
|
||||
if ((vp->tval & (NUM | STR)) == 0)
|
||||
funnyvar(vp, "assign to");
|
||||
if (isfld(vp)) {
|
||||
@ -362,7 +362,7 @@ char *setsval(Cell *vp, const char *s) /* set string val of a Cell */
|
||||
fldno = atoi(vp->nval);
|
||||
if (fldno > *NF)
|
||||
newfld(fldno);
|
||||
dprintf( ("setting field %d to %s (%p)\n", fldno, s, s) );
|
||||
DPRINTF("setting field %d to %s (%p)\n", fldno, s, s);
|
||||
} else if (isrec(vp)) {
|
||||
donefld = false; /* mark $1... invalid */
|
||||
donerec = true;
|
||||
@ -378,14 +378,14 @@ char *setsval(Cell *vp, const char *s) /* set string val of a Cell */
|
||||
vp->tval |= STR;
|
||||
vp->fmt = NULL;
|
||||
setfree(vp);
|
||||
dprintf( ("setsval %p: %s = \"%s (%p) \", t=%o r,f=%d,%d\n",
|
||||
(void*)vp, NN(vp->nval), t, t, vp->tval, donerec, donefld) );
|
||||
DPRINTF("setsval %p: %s = \"%s (%p) \", t=%o r,f=%d,%d\n",
|
||||
(void*)vp, NN(vp->nval), t, t, vp->tval, donerec, donefld);
|
||||
vp->sval = t;
|
||||
if (&vp->fval == NF) {
|
||||
donerec = false; /* mark $0 invalid */
|
||||
f = getfval(vp);
|
||||
setlastfld(f);
|
||||
dprintf( ("setting NF to %g\n", f) );
|
||||
DPRINTF("setting NF to %g\n", f);
|
||||
}
|
||||
|
||||
return(vp->sval);
|
||||
@ -404,8 +404,8 @@ Awkfloat getfval(Cell *vp) /* get float val of a Cell */
|
||||
if (is_number(vp->sval) && !(vp->tval&CON))
|
||||
vp->tval |= NUM; /* make NUM only sparingly */
|
||||
}
|
||||
dprintf( ("getfval %p: %s = %g, t=%o\n",
|
||||
(void*)vp, NN(vp->nval), vp->fval, vp->tval) );
|
||||
DPRINTF("getfval %p: %s = %g, t=%o\n",
|
||||
(void*)vp, NN(vp->nval), vp->fval, vp->tval);
|
||||
return(vp->fval);
|
||||
}
|
||||
|
||||
@ -492,8 +492,8 @@ static char *get_str_val(Cell *vp, char **fmt) /* get string val of a Cel
|
||||
}
|
||||
}
|
||||
done:
|
||||
dprintf( ("getsval %p: %s = \"%s (%p)\", t=%o\n",
|
||||
(void*)vp, NN(vp->nval), vp->sval, vp->sval, vp->tval) );
|
||||
DPRINTF("getsval %p: %s = \"%s (%p)\", t=%o\n",
|
||||
(void*)vp, NN(vp->nval), vp->sval, vp->sval, vp->tval);
|
||||
return(vp->sval);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user