mirror of
https://git.musl-libc.org/git/musl
synced 2025-01-05 06:14:25 +03:00
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.
This commit is contained in:
parent
e13063aad7
commit
c84971995b
@ -1,9 +1,13 @@
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
#include <sys/ioctl.h>
|
||||
#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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user