From c84971995b3a6d5118f9357c040572f4c78bcd55 Mon Sep 17 00:00:00 2001 From: Benjamin Peterson Date: Thu, 13 Sep 2018 14:23:42 -0700 Subject: improve error handling of ttyname_r and isatty POSIX allows ttyname(_r) and isatty to return EBADF if passed file descriptor is invalid. maintainer's note: these are optional ("may fail") errors, but it's non-conforming for ttyname_r to return ENOTTY when it failed for a different reason. --- src/unistd/isatty.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/unistd/isatty.c') diff --git a/src/unistd/isatty.c b/src/unistd/isatty.c index c8badaf5..75a9c186 100644 --- a/src/unistd/isatty.c +++ b/src/unistd/isatty.c @@ -1,9 +1,13 @@ #include +#include #include #include "syscall.h" int isatty(int fd) { struct winsize wsz; - return !__syscall(SYS_ioctl, fd, TIOCGWINSZ, &wsz); + unsigned long r = syscall(SYS_ioctl, fd, TIOCGWINSZ, &wsz); + if (r == 0) return 1; + if (errno != EBADF) errno = ENOTTY; + return 0; } -- cgit v1.2.1