This one with a little cleanup of unnecessary duplication.
---
 tests/diff.test     |  7 ++++++-
 toys/pending/diff.c | 18 +++++++-----------
 2 files changed, 13 insertions(+), 12 deletions(-)
From 98b1c5e566e1d807d2cf31f2aa523141d9255188 Mon Sep 17 00:00:00 2001
From: Elliott Hughes <[email protected]>
Date: Mon, 18 Mar 2019 20:43:04 -0700
Subject: [PATCH] diff: use TOYFLAG_ARGFAIL.

This one with a little cleanup of unnecessary duplication.
---
 tests/diff.test     |  7 ++++++-
 toys/pending/diff.c | 18 +++++++-----------
 2 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/tests/diff.test b/tests/diff.test
index ce51f1e8..98477587 100644
--- a/tests/diff.test
+++ b/tests/diff.test
@@ -5,6 +5,11 @@
 seq 10 > left
 seq 11 > right
 
+testing "unknown argument" 'diff --oops left right 2>/dev/null ; echo $?' "2\n" "" ""
+testing "missing" 'diff missing1 missing2 2>/dev/null ; echo $?' "2\n" "" ""
+
+testing "- -" 'diff - - ; echo $?' "0\n" "" "whatever"
+
 expected='--- lll
 +++ rrr
 @@ -8,3 +8,4 @@
@@ -27,4 +32,4 @@ mkdir -p tree1 tree2
 echo foo > tree1/file
 echo food > tree2/file
 
-testing "simple" "diff -r -L tree1/file -L tree2/file tree1 tree2 |tee out" "$expected" "" ""
+testing "-r" "diff -r -L tree1/file -L tree2/file tree1 tree2 |tee out" "$expected" "" ""
diff --git a/toys/pending/diff.c b/toys/pending/diff.c
index ea11ba29..4a528134 100644
--- a/toys/pending/diff.c
+++ b/toys/pending/diff.c
@@ -5,7 +5,7 @@
  *
  * See: http://cm.bell-labs.com/cm/cs/cstr/41.pdf
 
-USE_DIFF(NEWTOY(diff, "<2>2(color)B(ignore-blank-lines)d(minimal)b(ignore-space-change)ut(expand-tabs)w(ignore-all-space)i(ignore-case)T(initial-tab)s(report-identical-files)q(brief)a(text)L(label)*S(starting-file):N(new-file)r(recursive)U(unified)#<0=3", TOYFLAG_USR|TOYFLAG_BIN))
+USE_DIFF(NEWTOY(diff, "<2>2(color)B(ignore-blank-lines)d(minimal)b(ignore-space-change)ut(expand-tabs)w(ignore-all-space)i(ignore-case)T(initial-tab)s(report-identical-files)q(brief)a(text)L(label)*S(starting-file):N(new-file)r(recursive)U(unified)#<0=3", TOYFLAG_USR|TOYFLAG_BIN|TOYFLAG_ARGFAIL(2)))
 
 config DIFF
   bool "diff"
@@ -791,32 +791,28 @@ void diff_main(void)
   int j = 0, k = 1, start[2] = {1, 1};
   char *files[2];
 
+  toys.exitval = 2;
+
   if ((toys.optflags & FLAG_color) && !isatty(1)) toys.optflags ^= FLAG_color;
 
   for (j = 0; j < 2; j++) {
     files[j] = toys.optargs[j];
     if (IS_STDIN(files[j])) {
       if (fstat(0, &TT.st[j]) == -1)
-        perror_exit("can fstat %s", files[j]);
+        perror_exit("can't fstat %s", files[j]);
     } else {
-      if (stat(files[j], &TT.st[j]) == -1)
-        perror_exit("can't stat %s", files[j]);
+      xstat(files[j], &TT.st[j]);
     }
   }
 
-  if (IS_STDIN(files[0]) && IS_STDIN(files[1])) { //compat :(
-    show_status(files);  //check ASAP
-    return;
-  }
-
   if ((IS_STDIN(files[0]) || IS_STDIN(files[1]))
       && (S_ISDIR(TT.st[0].st_mode) || S_ISDIR(TT.st[1].st_mode)))
     error_exit("can't compare stdin to directory");
 
   if ((TT.st[0].st_ino == TT.st[1].st_ino) //physicaly same device
       && (TT.st[0].st_dev == TT.st[1].st_dev)) {
-    show_status(files);
-    return ;
+    toys.exitval = 0;
+    return show_status(files);
   }
 
   if (S_ISDIR(TT.st[0].st_mode) && S_ISDIR(TT.st[1].st_mode)) {
-- 
2.21.0.225.g810b269d1ac-goog

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

Reply via email to