diff options
author | gabor <gabor@FreeBSD.org> | 2013-01-05 14:52:31 +0000 |
---|---|---|
committer | gabor <gabor@FreeBSD.org> | 2013-01-05 14:52:31 +0000 |
commit | 037843a1223935249620a4b773be51ae09f00b67 (patch) | |
tree | 401825f21e4d89f0f1b7fdc362338ad7ee53623a /usr.bin/grep | |
parent | 3566a3da10ae5af4a5d937156ab8f4e9443a572b (diff) | |
download | FreeBSD-src-037843a1223935249620a4b773be51ae09f00b67.zip FreeBSD-src-037843a1223935249620a4b773be51ae09f00b67.tar.gz |
- Fix handling of the case when multiple patterns are specified in a single
command line argument, separated by newlines
PR: bin/173673
Submitted by: ache
MFC after: 1 week
Diffstat (limited to 'usr.bin/grep')
-rw-r--r-- | usr.bin/grep/grep.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/usr.bin/grep/grep.c b/usr.bin/grep/grep.c index 7c69d5d..70fd9bd 100644 --- a/usr.bin/grep/grep.c +++ b/usr.bin/grep/grep.c @@ -479,7 +479,13 @@ main(int argc, char *argv[]) grepbehave = GREP_EXTENDED; break; case 'e': - add_pattern(optarg, strlen(optarg)); + { + char *token; + char *string = strdup(optarg); + + while ((token = strsep(&string, "\n")) != NULL) + add_pattern(token, strlen(token)); + } needpattern = 0; break; case 'F': @@ -668,7 +674,11 @@ main(int argc, char *argv[]) /* Process patterns from command line */ if (aargc != 0 && needpattern) { - add_pattern(*aargv, strlen(*aargv)); + char *token; + char *string = strdup(*aargv); + + while ((token = strsep(&string, "\n")) != NULL) + add_pattern(token, strlen(token)); --aargc; ++aargv; } |