aboutsummaryrefslogtreecommitdiffstats
path: root/pw.c
diff options
context:
space:
mode:
Diffstat (limited to 'pw.c')
-rw-r--r--pw.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/pw.c b/pw.c
index b9868c6..e00750a 100644
--- a/pw.c
+++ b/pw.c
@@ -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)