Also add a test, and add a test for timeout now it's been fixed.
---
 tests/grep.test    | 2 ++
 tests/timeout.test | 1 +
 toys/posix/grep.c  | 8 ++++----
 3 files changed, 7 insertions(+), 4 deletions(-)
From 17d310ac49960bd86155c0fbb20fe5b81b11020f Mon Sep 17 00:00:00 2001
From: Elliott Hughes <[email protected]>
Date: Wed, 13 Mar 2019 22:21:13 -0700
Subject: [PATCH] grep: use TOYFLAG_ARGFAIL for grep too.

Also add a test, and add a test for timeout now it's been fixed.
---
 tests/grep.test    | 2 ++
 tests/timeout.test | 1 +
 toys/posix/grep.c  | 8 ++++----
 3 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/tests/grep.test b/tests/grep.test
index 05288983..cd1e1fda 100755
--- a/tests/grep.test
+++ b/tests/grep.test
@@ -154,3 +154,5 @@ testing "explicit ERE |" "grep -E 'uno|dos'" "uno\ndos\nuno|dos\n" \
 
 testing "" "grep -o -e iss -e ipp" "iss\niss\nipp\n" "" "mississippi"
 testing "" "grep -o -e gum -e rgu" "rgu\n" "" "argument"
+
+testing "early failure" 'grep --what 2>/dev/null || echo $?' "2\n" "" ""
diff --git a/tests/timeout.test b/tests/timeout.test
index 5ca7cc90..189b592a 100644
--- a/tests/timeout.test
+++ b/tests/timeout.test
@@ -7,6 +7,7 @@
 # timeout's exit value is complicated!
 testcmd "times out" '.1 sleep 100 ; echo $?'  '124\n' '' ''
 testcmd "failure" '-s MONKEY .1 sleep 100 2>/dev/null ; echo $?' '125\n' '' ''
+testcmd "early failure" '2>/dev/null ; echo $?' '125\n' '' ''
 testcmd "can't execute" '.1 / 2>/dev/null ; echo $?' '126\n' '' ''
 testcmd "can't find" '.1 /does/not/exist 2>/dev/null ; echo $?' '127\n' '' ''
 testcmd "custom signal" '-s 3 .1 sleep 100; echo $?' '124\n' '' ''
diff --git a/toys/posix/grep.c b/toys/posix/grep.c
index c9a30882..9239614f 100644
--- a/toys/posix/grep.c
+++ b/toys/posix/grep.c
@@ -10,9 +10,9 @@
 * echo hello | grep -f </dev/null
 *
 
-USE_GREP(NEWTOY(grep, "(color):;S(exclude)*M(include)*ZzEFHIab(byte-offset)h(no-filename)ino(only-matching)rsvwcl(files-with-matches)q(quiet)(silent)e*f*C#B#A#m#x[!wx][!EFw]", TOYFLAG_BIN))
-USE_EGREP(OLDTOY(egrep, grep, TOYFLAG_BIN))
-USE_FGREP(OLDTOY(fgrep, grep, TOYFLAG_BIN))
+USE_GREP(NEWTOY(grep, "(color):;S(exclude)*M(include)*ZzEFHIab(byte-offset)h(no-filename)ino(only-matching)rsvwcl(files-with-matches)q(quiet)(silent)e*f*C#B#A#m#x[!wx][!EFw]", TOYFLAG_BIN|TOYFLAG_ARGFAIL(2)))
+USE_EGREP(OLDTOY(egrep, grep, TOYFLAG_BIN|TOYFLAG_ARGFAIL(2)))
+USE_FGREP(OLDTOY(fgrep, grep, TOYFLAG_BIN|TOYFLAG_ARGFAIL(2)))
 
 config GREP
   bool "grep"
@@ -22,7 +22,7 @@ config GREP
 
     Show lines matching regular expressions. If no -e, first argument is
     regular expression to match. With no files (or "-" filename) read stdin.
-    Returns 0 if matched, 1 if no match found.
+    Returns 0 if matched, 1 if no match found, 2 for command errors.
 
     -e  Regex to match. (May be repeated.)
     -f  File listing regular expressions to match.
-- 
2.21.0.360.g471c308f928-goog

_______________________________________________
Toybox mailing list
[email protected]
http://lists.landley.net/listinfo.cgi/toybox-landley.net

Reply via email to