=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/awk/b.c,v retrieving revision 1.29 retrieving revision 1.30 diff -u -r1.29 -r1.30 --- src/usr.bin/awk/b.c 2020/06/10 21:03:56 1.29 +++ src/usr.bin/awk/b.c 2020/06/10 21:04:40 1.30 @@ -1,4 +1,4 @@ -/* $OpenBSD: b.c,v 1.29 2020/06/10 21:03:56 millert Exp $ */ +/* $OpenBSD: b.c,v 1.30 2020/06/10 21:04:40 millert Exp $ */ /**************************************************************** Copyright (C) Lucent Technologies 1997 All Rights Reserved @@ -188,7 +188,7 @@ } fa *mkdfa(const char *s, bool anchor) /* does the real work of making a dfa */ - /* anchor = 1 for anchored matches, else 0 */ + /* anchor = true for anchored matches, else false */ { Node *p, *p1; fa *f; @@ -231,17 +231,17 @@ k = *(f->re[0].lfollow); xfree(f->posns[2]); f->posns[2] = intalloc(k + 1, __func__); - for (i=0; i <= k; i++) { + for (i = 0; i <= k; i++) { (f->posns[2])[i] = (f->re[0].lfollow)[i]; } if ((f->posns[2])[1] == f->accept) f->out[2] = 1; - for (i=0; i < NCHARS; i++) + for (i = 0; i < NCHARS; i++) f->gototab[2][i] = 0; f->curstat = cgoto(f, 2, HAT); if (anchor) { *f->posns[2] = k-1; /* leave out position 0 */ - for (i=0; i < k; i++) { + for (i = 0; i < k; i++) { (f->posns[0])[i] = (f->posns[2])[i]; } @@ -471,9 +471,10 @@ } if (type(p) == CCL && (*(char *) right(p)) == '\0') return(0); /* empty CCL */ - else return(1); + return(1); case PLUS: - if (first(left(p)) == 0) return(0); + if (first(left(p)) == 0) + return(0); return(1); case STAR: case QUEST: @@ -722,7 +723,7 @@ if (buf[--k] && ungetc(buf[k], f) == EOF) FATAL("unable to ungetc '%c'", buf[k]); while (k > i + patlen); - buf[k] = 0; + buf[k] = '\0'; return true; } else @@ -915,7 +916,7 @@ int i, j; uschar *buf = NULL; int ret = 1; - int init_q = (firstnum == 0); /* first added char will be ? */ + bool init_q = (firstnum == 0); /* first added char will be ? */ int n_q_reps = secondnum-firstnum; /* m>n, so reduce until {1,m-n} left */ int prefix_length = reptok - basestr; /* prefix includes first rep */ int suffix_length = strlen((const char *) reptok) - reptoklen; /* string after rep specifier */ @@ -942,7 +943,7 @@ buf[j++] = '('; buf[j++] = ')'; } - for (i=1; i < firstnum; i++) { /* copy x reps */ + for (i = 1; i < firstnum; i++) { /* copy x reps */ memcpy(&buf[j], atom, atomlen); j += atomlen; } @@ -951,7 +952,7 @@ } else if (special_case == REPEAT_WITH_Q) { if (init_q) buf[j++] = '?'; - for (i = 0; i < n_q_reps; i++) { /* copy x? reps */ + for (i = init_q; i < n_q_reps; i++) { /* copy x? reps */ memcpy(&buf[j], atom, atomlen); j += atomlen; buf[j++] = '?'; @@ -1173,15 +1174,17 @@ if (commafound) { if (digitfound) { /* {n,m} */ m = num; - if (m 0) { - if ((n==0) && (m==0)) { + if (n == 0 && m == 0) { return EMPTYRE; } /* must rescan input for next token */ @@ -1280,7 +1283,8 @@ if (tmpset[j] != p[j]) goto different; /* setvec is state i */ - f->gototab[s][c] = i; + if (c != HAT) + f->gototab[s][c] = i; return i; different:; } @@ -1294,7 +1298,8 @@ p = intalloc(setcnt + 1, __func__); f->posns[f->curstat] = p; - f->gototab[s][c] = f->curstat; + if (c != HAT) + f->gototab[s][c] = f->curstat; for (i = 0; i <= setcnt; i++) p[i] = tmpset[i]; if (setvec[f->accept]) @@ -1318,7 +1323,7 @@ for (i = 0; i <= f->accept; i++) { xfree(f->re[i].lfollow); if (f->re[i].ltype == CCL || f->re[i].ltype == NCCL) - xfree((f->re[i].lval.np)); + xfree(f->re[i].lval.np); } xfree(f->restr); xfree(f->out);