summaryrefslogtreecommitdiffstats
path: root/usr.bin/grep/grep.c
diff options
context:
space:
mode:
authorgabor <gabor@FreeBSD.org>2011-06-12 12:51:58 +0000
committergabor <gabor@FreeBSD.org>2011-06-12 12:51:58 +0000
commit3b40cce52cb6ec43ef5f0687700d4450cabac8df (patch)
treeeeac779cc4c53cfe000ca6546275261ce4d21da1 /usr.bin/grep/grep.c
parentaf29896fe7cc22ecf57aac71fa6cf8fac9c32449 (diff)
downloadFreeBSD-src-3b40cce52cb6ec43ef5f0687700d4450cabac8df.zip
FreeBSD-src-3b40cce52cb6ec43ef5f0687700d4450cabac8df.tar.gz
- Use REG_NOSUB to bypass submatch counting when not necessary. This may
yield in somewhat better performance in a few cases. Approved by: delphij (mentor)
Diffstat (limited to 'usr.bin/grep/grep.c')
-rw-r--r--usr.bin/grep/grep.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/usr.bin/grep/grep.c b/usr.bin/grep/grep.c
index 0047650..d03c13c 100644
--- a/usr.bin/grep/grep.c
+++ b/usr.bin/grep/grep.c
@@ -73,7 +73,7 @@ const char *errstr[] = {
};
/* Flags passed to regcomp() and regexec() */
-int cflags = 0;
+int cflags = REG_NOSUB;
int eflags = REG_STARTEND;
/* Shortcut for matching all cases like empty regex */
@@ -519,6 +519,7 @@ main(int argc, char *argv[])
break;
case 'o':
oflag = true;
+ cflags &= ~REG_NOSUB;
break;
case 'p':
linkbehave = LINK_SKIP;
@@ -552,9 +553,11 @@ main(int argc, char *argv[])
break;
case 'w':
wflag = true;
+ cflags &= ~REG_NOSUB;
break;
case 'x':
xflag = true;
+ cflags &= ~REG_NOSUB;
break;
case 'Z':
filebehave = FILE_GZIP;
@@ -588,6 +591,7 @@ main(int argc, char *argv[])
strcasecmp("none", optarg) != 0 &&
strcasecmp("no", optarg) != 0)
errx(2, getstr(3), "--color");
+ cflags &= ~REG_NOSUB;
break;
case LABEL_OPT:
label = optarg;
OpenPOWER on IntegriCloud