GNU bug report logs -
#26371
[PATCH 0/1] tty: do not provide conflicting information
Previous Next
Full log
View this message in rfc822 format
In case the current file descriptor is a tty but ttyname{_r}() fails to retrieve
the device path tty would falsely report "not a tty" but return EXIT_SUCCESS.
This is confusing. Instead, let's first check whether the fd refers to a tty and
if not report "not a tty" and exit with error. In all other cases, we should
report "is a tty but failed to determine the device path" and exit with success.
This is much clearer. Depending on the platform the user can then decide how to
proceed, e.g. by looking at /proc/self/fd/0 for Linux or somewhere else on other
platforms.
Signed-off-by: Christian Brauner <christian.brauner <at> ubuntu.com>
---
src/tty.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/src/tty.c b/src/tty.c
index c3fdabc85..fb21a995a 100644
--- a/src/tty.c
+++ b/src/tty.c
@@ -79,6 +79,7 @@ main (int argc, char **argv)
{
char *tty;
int optc;
+ int is_tty;
initialize_main (&argc, &argv);
set_program_name (argv[0]);
@@ -111,14 +112,21 @@ main (int argc, char **argv)
if (optind < argc)
error (0, 0, _("extra operand %s"), quote (argv[optind]));
+ is_tty = isatty (STDIN_FILENO);
+ if (!is_tty)
+ {
+ puts (_("not a tty"));
+ return EXIT_FAILURE;
+ }
+
tty = ttyname (STDIN_FILENO);
if (!silent)
{
if (tty)
puts (tty);
else
- puts (_("not a tty"));
+ puts (_("is a tty but failed to determine the device path"));
}
- return isatty (STDIN_FILENO) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return EXIT_SUCCESS;
}
--
2.11.0
This bug report was last modified 48 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.