diff --git a/src/unistd/isatty.c b/src/unistd/isatty.c index c8badaf55edd7d6c4e692e5d238e093848cc7290..75a9c186a941896f90dd0985fe4b1fe86d351f54 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; } diff --git a/src/unistd/ttyname_r.c b/src/unistd/ttyname_r.c index cb364c2913b442934304ac95d8fea48f01b80052..82acb75e19d60a6a075e7398dc23d9b4f8729e5d 100644 --- a/src/unistd/ttyname_r.c +++ b/src/unistd/ttyname_r.c @@ -9,7 +9,7 @@ int ttyname_r(int fd, char *name, size_t size) char procname[sizeof "/proc/self/fd/" + 3*sizeof(int) + 2]; ssize_t l; - if (!isatty(fd)) return ENOTTY; + if (!isatty(fd)) return errno; __procfdname(procname, fd); l = readlink(procname, name, size);