diff options
author | James Hogan <james.hogan@imgtec.com> | 2013-05-07 12:32:21 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2013-05-16 14:47:05 +0200 |
commit | 5fc0585c01a6b87432f344c98eb544e116c2d1d4 (patch) | |
tree | 6695af7cfe19d48e9e9d0c8cedc93b7e73ba6b28 /testsuite | |
parent | aa94130f744ae229e5392eb4e303a9805a9963fb (diff) | |
download | busybox-w32-5fc0585c01a6b87432f344c98eb544e116c2d1d4.tar.gz busybox-w32-5fc0585c01a6b87432f344c98eb544e116c2d1d4.tar.bz2 busybox-w32-5fc0585c01a6b87432f344c98eb544e116c2d1d4.zip |
grep: fix grep -x to not set REG_NOSUB
When -F isn't specified (and !ENABLE_EXTRA_COMPAT), grep -x uses
regexec's regmatch_t output to determine if the match was the entire
line. However it also set the REG_NOSUB flag which makes it ignore the
regmatch_t argument.
Add an exception to the setting of REG_NOSUB for OPT_x and add some test
cases to test the behaviour of -x.
Signed-off-by: James Hogan <james.hogan@imgtec.com>
Cc: Natanael Copa <ncopa@alpinelinux.org>
Cc: Denys Vlasenko <vda.linux@googlemail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'testsuite')
-rwxr-xr-x | testsuite/grep.tests | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/testsuite/grep.tests b/testsuite/grep.tests index 5696fa7e1..64d99a905 100755 --- a/testsuite/grep.tests +++ b/testsuite/grep.tests | |||
@@ -82,6 +82,20 @@ testing "grep -F handles -i" "grep -F -i foo input ; echo \$?" \ | |||
82 | testing "grep can read regexps from stdin" "grep -f - input ; echo \$?" \ | 82 | testing "grep can read regexps from stdin" "grep -f - input ; echo \$?" \ |
83 | "two\nthree\n0\n" "tw\ntwo\nthree\n" "tw.\nthr\n" | 83 | "two\nthree\n0\n" "tw\ntwo\nthree\n" "tw.\nthr\n" |
84 | 84 | ||
85 | # -x (whole line match) | ||
86 | testing "grep -x (full match)" "grep -x foo input ; echo \$?" \ | ||
87 | "foo\n0\n" "foo\n" "" | ||
88 | testing "grep -x (partial match 1)" "grep -x foo input ; echo \$?" \ | ||
89 | "1\n" "foo bar\n" "" | ||
90 | testing "grep -x (partial match 2)" "grep -x foo input ; echo \$?" \ | ||
91 | "1\n" "bar foo\n" "" | ||
92 | testing "grep -x -F (full match)" "grep -x -F foo input ; echo \$?" \ | ||
93 | "foo\n0\n" "foo\n" "" | ||
94 | testing "grep -x -F (partial match 1)" "grep -x -F foo input ; echo \$?" \ | ||
95 | "1\n" "foo bar\n" "" | ||
96 | testing "grep -x -F (partial match 2)" "grep -x -F foo input ; echo \$?" \ | ||
97 | "1\n" "bar foo\n" "" | ||
98 | |||
85 | optional FEATURE_GREP_EGREP_ALIAS | 99 | optional FEATURE_GREP_EGREP_ALIAS |
86 | testing "grep -E supports extended regexps" "grep -E fo+" "foo\n" "" \ | 100 | testing "grep -E supports extended regexps" "grep -E fo+" "foo\n" "" \ |
87 | "b\ar\nfoo\nbaz" | 101 | "b\ar\nfoo\nbaz" |