diff options
Diffstat (limited to 'src/unistd')
| -rw-r--r-- | src/unistd/isatty.c | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/src/unistd/isatty.c b/src/unistd/isatty.c index 1b502d75..cc27576f 100644 --- a/src/unistd/isatty.c +++ b/src/unistd/isatty.c @@ -1,13 +1,31 @@ #include "stddef.h" #include "sys/types.h" #include <unistd.h> -#include "errno.h" -#include "nonstd/syscall.h" +#include "termios.h" + +/** test for a terminal device **/ int isatty(int fildes) { - SYSCALL("isatty", int, -1, fildes, 0, 0, 0, 0, 0); + struct termios tios; + if (tcgetattr(fildes, &tios) == 0) { + /* errno set by tcgetattr() */ + #if 0 + errno = EBADF; /* ARGUMENT(fildes) is not a valid file descriptor */ + errno = ENOTTY; /* ARGUMENT(fildes) is not associated with a terminal */ + #endif + return 1; + } + return 0; } + +/*** +checks whether the file descriptor ARGUMENT(fildes) is associated with a +terminal device. +***/ + /* +RETURN(ZERO, ARGUMENT(fildes) is not a terminal) +RETURN(ONE, ARGUMENT(fildes) is a terminal device) POSIX(1) */ |
