=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/awk/b.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- src/usr.bin/awk/b.c 1999/04/18 17:06:30 1.6 +++ src/usr.bin/awk/b.c 1999/04/20 17:31:29 1.7 @@ -1,4 +1,4 @@ -/* $OpenBSD: b.c,v 1.6 1999/04/18 17:06:30 millert Exp $ */ +/* $OpenBSD: b.c,v 1.7 1999/04/20 17:31:29 millert Exp $ */ /**************************************************************** Copyright (C) Lucent Technologies 1997 All Rights Reserved @@ -38,7 +38,8 @@ /* NCHARS is 2**n */ #define MAXLIN 22 -#define type(v) (v)->nobj +#define type(v) (v)->nobj /* badly overloaded here */ +#define info(v) (v)->ntype /* badly overloaded here */ #define left(v) (v)->narg[0] #define right(v) (v)->narg[1] #define parent(v) (v)->nnext @@ -183,7 +184,7 @@ { switch (type(p)) { LEAF - left(p) = (Node *) poscnt; + info(p) = poscnt; poscnt++; break; UNARY @@ -339,8 +340,8 @@ switch (type(v)) { LEAF - f->re[(int) left(v)].ltype = type(v); - f->re[(int) left(v)].lval.np = right(v); + f->re[info(v)].ltype = type(v); + f->re[info(v)].lval.np = right(v); while (f->accept >= maxsetvec) { /* guessing here! */ maxsetvec *= 4; setvec = (int *) realloc(setvec, maxsetvec * sizeof(int)); @@ -354,7 +355,7 @@ follow(v); /* computes setvec and setcnt */ if ((p = (int *) calloc(1, (setcnt+1)*sizeof(int))) == NULL) overflo("out of space building follow set"); - f->re[(int) left(v)].lfollow = p; + f->re[info(v)].lfollow = p; *p = setcnt; for (i = f->accept; i >= 0; i--) if (setvec[i] == 1) @@ -380,14 +381,13 @@ switch (type(p)) { LEAF - lp = (int) left(p); /* look for high-water mark of subscripts */ + lp = info(p); /* look for high-water mark of subscripts */ while (setcnt >= maxsetvec || lp >= maxsetvec) { /* guessing here! */ maxsetvec *= 4; setvec = (int *) realloc(setvec, maxsetvec * sizeof(int)); tmpset = (int *) realloc(tmpset, maxsetvec * sizeof(int)); - if (setvec == 0 || tmpset == 0) { abort(); + if (setvec == 0 || tmpset == 0) overflo("out of space in first()"); -} } if (setvec[lp] != 1) { setvec[lp] = 1; @@ -602,7 +602,7 @@ switch (rtok) { case CHAR: - np = op2(CHAR, NIL, (Node *) rlxval); + np = op2(CHAR, NIL, itonp(rlxval)); rtok = relex(); return (unary(np)); case ALL: @@ -621,7 +621,7 @@ return (unary(np)); case '^': rtok = relex(); - return (unary(op2(CHAR, NIL, (Node *) HAT))); + return (unary(op2(CHAR, NIL, itonp(HAT)))); case '$': rtok = relex(); return (unary(op2(CHAR, NIL, NIL))); @@ -754,9 +754,8 @@ maxsetvec *= 4; setvec = (int *) realloc(setvec, maxsetvec * sizeof(int)); tmpset = (int *) realloc(tmpset, maxsetvec * sizeof(int)); - if (setvec == 0 || tmpset == 0) { abort(); + if (setvec == 0 || tmpset == 0) overflo("out of space in cgoto()"); -} } for (i = 0; i <= f->accept; i++) setvec[i] = 0; @@ -765,7 +764,7 @@ p = f->posns[s]; for (i = 1; i <= *p; i++) { if ((k = f->re[p[i]].ltype) != FINAL) { - if ((k == CHAR && c == f->re[p[i]].lval.i) + if ((k == CHAR && c == ptoi(f->re[p[i]].lval.np)) || (k == DOT && c != 0 && c != HAT) || (k == ALL && c != 0) || (k == CCL && member(c, f->re[p[i]].lval.up))