]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
tty: don't distinguish input errors
authorPádraig Brady <P@draigBrady.com>
Thu, 31 Aug 2017 03:14:22 +0000 (20:14 -0700)
committerPádraig Brady <P@draigBrady.com>
Thu, 31 Aug 2017 03:46:49 +0000 (20:46 -0700)
* src/tty.c (main): Don't distinguish ENOTTY from other errors,
because isatty() doesn't portably distinguish errors.
Solaris returns ENOENT for all input errors for example.
Musl also returns ENOENT, and ENODEV may be returned as disscussed at:
http://openwall.com/lists/musl/2017/04/06/6
* tests/misc/tty.sh: Adjust accordingly.

doc/coreutils.texi
src/tty.c
tests/misc/tty.sh

index 5a0c476590ebc5c551e4a8406fa22864d29bc414..eb174620da907d23ac478c76af67e79730d07744 100644 (file)
@@ -15123,7 +15123,6 @@ Exit status:
 1 if standard input is a non-terminal file
 2 if given incorrect arguments
 3 if a write error occurs
-4 if standard input is closed or its type cannot be determined
 @end display
 
 
index 994b3561104a12e0952d6ffd04196a7583c2a0ae..c02a0d0db5a39caf0b6769cfcaa18db82fa9d53a 100644 (file)
--- a/src/tty.c
+++ b/src/tty.c
@@ -17,7 +17,7 @@
 /* Displays "not a tty" if stdin is not a terminal.
    Displays nothing if -s option is given.
    Exit status 0 if stdin is a tty, 1 if not a tty, 2 if usage error,
-   3 if write error, 4 for other stdin errors.
+   3 if write error.
 
    Written by David MacKenzie <djm@gnu.ai.mit.edu>.  */
 
@@ -35,8 +35,7 @@ enum
   {
     TTY_STDIN_NOTTY = 1,
     TTY_FAILURE = 2,
-    TTY_WRITE_ERROR = 3,
-    TTY_STDIN_ERROR = 4
+    TTY_WRITE_ERROR = 3
   };
 
 /* The official name of this program (e.g., no 'g' prefix).  */
@@ -118,17 +117,13 @@ main (int argc, char **argv)
   errno = ENOENT;
 
   if (silent)
-    return (isatty (STDIN_FILENO) ? EXIT_SUCCESS
-            : (errno == ENOTTY || errno == EINVAL) ? TTY_STDIN_NOTTY
-            : TTY_STDIN_ERROR);
+    return isatty (STDIN_FILENO) ? EXIT_SUCCESS : TTY_STDIN_NOTTY;
 
   int status = EXIT_SUCCESS;
   char const *tty = ttyname (STDIN_FILENO);
 
   if (! tty)
     {
-      if (errno != ENOTTY && errno != EINVAL)
-        error (TTY_STDIN_ERROR, errno, _("standard input"));
       tty = _("not a tty");
       status = TTY_STDIN_NOTTY;
     }
index 904b5d6a29cf659bd1a04f674b526a63882bfbc1..aa3203be58e8a632f37976dfbb9854fec6ebdd1a 100755 (executable)
@@ -27,6 +27,8 @@ fi
 
 returns_ 1 tty </dev/null || fail=1
 returns_ 1 tty -s </dev/null || fail=1
+returns_ 1 tty <&- 2>/dev/null || fail=1
+returns_ 1 tty -s <&- || fail=1
 
 returns_ 2 tty a || fail=1
 returns_ 2 tty -s a || fail=1
@@ -38,7 +40,4 @@ if test -w /dev/full && test -c /dev/full; then
   returns_ 3 tty </dev/null >/dev/full || fail=1
 fi
 
-returns_ 4 tty <&- 2>/dev/null || fail=1
-returns_ 4 tty -s <&- || fail=1
-
 Exit $fail