aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Landley <rob@landley.net>2019-05-17 02:54:32 -0500
committerRob Landley <rob@landley.net>2019-05-17 02:54:32 -0500
commita39eab3fc7da89f2ee743dd116be632189f32c80 (patch)
treebbd3fa9e4dcdeb49c5d9032eb462ac2fbfe66267
parentada1b3ab1edab71a185fba6c2ee98d1985933be5 (diff)
downloadtoybox-a39eab3fc7da89f2ee743dd116be632189f32c80.tar.gz
Fix a missing else, and an inverted test hidden by the missing else.
Add test to show failure case.
-rwxr-xr-xtests/grep.test2
-rw-r--r--toys/posix/grep.c7
2 files changed, 5 insertions, 4 deletions
diff --git a/tests/grep.test b/tests/grep.test
index 798a9c6a..0e0f3c47 100755
--- a/tests/grep.test
+++ b/tests/grep.test
@@ -90,6 +90,8 @@ testing "-Fx ''" "grep -Fx '' input" "" "one one one\n" ""
testing "-F ''" "grep -F '' input" "one one one\n" "one one one\n" ""
testing "-F -e blah -e ''" "grep -F -e blah -e '' input" "one one one\n" \
"one one one\n" ""
+testing "-Fxv -e subset" "grep -Fxv -e bbswitch-dkms -e dkms" "" "" \
+ "bbswitch-dkms\n"
testing "-e blah -e ''" "grep -e blah -e '' input" "one one one\n" \
"one one one\n" ""
testing "-w ''" "grep -w '' input" "" "one one one\n" ""
diff --git a/toys/posix/grep.c b/toys/posix/grep.c
index c88d4c65..5afe38ca 100644
--- a/toys/posix/grep.c
+++ b/toys/posix/grep.c
@@ -173,14 +173,13 @@ static void do_grep(int fd, char *name)
for (seek = TT.e; seek; seek = seek->next) {
if (FLAG(x)) {
- if ((FLAG(i) ? strcasecmp : strcmp)(seek->arg, line)) s = line;
+ if (!(FLAG(i) ? strcasecmp : strcmp)(seek->arg, line)) s = line;
} else if (!*seek->arg) {
seek = &fseek;
fseek.arg = s = line;
- break;
- }
- if (FLAG(i)) s = strcasestr(line, seek->arg);
+ } else if (FLAG(i)) s = strcasestr(line, seek->arg);
else s = strstr(line, seek->arg);
+
if (s) break;
}