diff options
author | gabor <gabor@FreeBSD.org> | 2011-06-12 12:51:58 +0000 |
---|---|---|
committer | gabor <gabor@FreeBSD.org> | 2011-06-12 12:51:58 +0000 |
commit | 3b40cce52cb6ec43ef5f0687700d4450cabac8df (patch) | |
tree | eeac779cc4c53cfe000ca6546275261ce4d21da1 /usr.bin/grep/grep.c | |
parent | af29896fe7cc22ecf57aac71fa6cf8fac9c32449 (diff) | |
download | FreeBSD-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.c | 6 |
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; |