grep: add proper support for pattern_list

From POSIX.1-2008:

	The pattern_list's value shall consist of one or more patterns
	separated by <newline> characters;

As such, given patterns need to be split at newline characters. Without
doing so, busybox grep will interpret the newline as part of the pattern
which is not in accordance with POSIX.

See also: https://bugs.busybox.net/show_bug.cgi?id=12721

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Sören Tempel
2020-03-30 11:02:08 +02:00
committed by Denys Vlasenko
parent c3295d233b
commit 42a8984abc
2 changed files with 25 additions and 6 deletions

View File

@@ -190,6 +190,18 @@ testing "grep -x -v -e EXP1 -e EXP2 finds nothing if either EXP matches" \
"" \
" aa bb cc\n"
testing "grep PATTERN can be a newline-delimited list" \
'grep -Fv "$(printf "foo\nbar\n")"' \
"baz\n" \
"" \
"foo\nbar\nbaz\n"
testing "grep -e PATTERN can be a newline-delimited list" \
'grep -Fv -e "$(printf "foo\nbar\n")"' \
"baz\n" \
"" \
"foo\nbar\nbaz\n"
# -r on symlink to dir should recurse into dir
mkdir -p grep.testdir/foo
echo bar > grep.testdir/foo/file