diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2022-05-01 09:43:18 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2022-05-01 09:43:18 -0700 |
commit | be24bbcb8c6172b16cd4590400aa3bf59b081f29 (patch) | |
tree | 95500f2075ce1cd9126c377ffab24b89278b6c1f | |
parent | df87820818baf166eab847238118372d0d7da87c (diff) | |
download | pw-be24bbcb8c6172b16cd4590400aa3bf59b081f29.tar.gz pw-be24bbcb8c6172b16cd4590400aa3bf59b081f29.tar.bz2 pw-be24bbcb8c6172b16cd4590400aa3bf59b081f29.zip |
Refactor: move regexec calls into function.
-rw-r--r-- | pw.c | 31 |
1 files changed, 14 insertions, 17 deletions
@@ -236,6 +236,12 @@ static void usage(const char *name) exit(EXIT_FAILURE); } +static int grexec(grep *gr, const char *line) +{ + int match = regexec(&gr->rx, line, 0, NULL, 0) == 0; + return match != gr->inv; +} + static void clrline() { printf("\r\033[J"); @@ -757,12 +763,9 @@ int main(int argc, char **argv) line = addch(line, 0); if ((stat & stat_grep)) { int i; - for (i = 0; i < ngrep; i++) { - grep *gr = &grepstack[i]; - int match = regexec(&gr->rx, line, 0, NULL, 0) == 0; - if (match == gr->inv) + for (i = 0; i < ngrep; i++) + if (!grexec(&grepstack[i], line)) break; - } if (i < ngrep) { dsdrop(line); line = 0; @@ -779,12 +782,9 @@ int main(int argc, char **argv) int trig = 1; for (int i = 0; i < lim; i++) { grep *gr = triglist[i]; - if (gr) { - int match = regexec(&gr->rx, circbuf[i], 0, NULL, 0) == 0; - if (match == gr->inv) { - trig = 0; - break; - } + if (gr && !grexec(gr, circbuf[i])) { + trig = 0; + break; } } if (trig) @@ -793,12 +793,9 @@ int main(int argc, char **argv) int trig = 1; for (int j = nlines - 1, i = 0; j >= 0 && i < maxtrig; j--, i++) { grep *gr = triglist[i]; - if (gr) { - int match = regexec(&gr->rx, circbuf[j], 0, NULL, 0) == 0; - if (match == gr->inv) { - trig = 0; - break; - } + if (gr && !grexec(gr, circbuf[j])) { + trig = 0; + break; } } if (trig) |