diff options
Diffstat (limited to 'pw.c')
-rw-r--r-- | pw.c | 19 |
1 files changed, 16 insertions, 3 deletions
@@ -60,6 +60,7 @@ typedef struct dstr { static int poll_interval = 1000; static int long_interval = 10000; +static int regex_flags = 0; static char **snapshot; static int snaplines; @@ -470,7 +471,7 @@ static void execute(char *cmd, unsigned *pstat) memset(gr, 0, sizeof *gr); - if ((err = regcomp(&gr->rx, arg, REG_EXTENDED | REG_NOSUB)) != 0) { + if ((err = regcomp(&gr->rx, arg, regex_flags | REG_NOSUB)) != 0) { regerror(err, &gr->rx, cmd, cmdsize); break; } @@ -510,6 +511,12 @@ static void execute(char *cmd, unsigned *pstat) dsdrop(err); } break; + case 'E': + regex_flags = REG_EXTENDED; + break; + case 'B': + regex_flags = 0; + break; default: sprintf(cmd, "bad command"); break; @@ -574,7 +581,7 @@ int main(int argc, char **argv) if (ttyfd < 0) panic("unable to open /dev/tty"); - while ((opt = getopt(argc, argv, "n:i:l:d")) != -1) { + while ((opt = getopt(argc, argv, "n:i:l:dEB")) != -1) { switch (opt) { case 'n': { @@ -604,6 +611,12 @@ int main(int argc, char **argv) case 'd': auto_quit = 0; break; + case 'E': + regex_flags = REG_EXTENDED; + break; + case 'B': + regex_flags = 0; + break; default: usage(argv[0]); } @@ -951,7 +964,7 @@ int main(int argc, char **argv) int err; trigpat = dsdup(cmdbuf + 1); if ((err = regcomp(&trigex, trigpat, - REG_EXTENDED | REG_NOSUB))) + regex_flags | REG_NOSUB))) { regerror(err, &trigex, cmdbuf, sizeof cmdbuf); if (columns < (int) sizeof cmdbuf - 1) |