From e411593d4b7083ca29ee1cf2eb925f6c960588b0 Mon Sep 17 00:00:00 2001 From: Gabor Kovesdan Date: Sat, 5 Jan 2013 14:52:31 +0000 Subject: [PATCH] - 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 --- usr.bin/grep/grep.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/usr.bin/grep/grep.c b/usr.bin/grep/grep.c index 7c69d5d29a3b..70fd9bde562c 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; }