diff options
Diffstat (limited to 'w32')
-rw-r--r-- | w32/compat/posixfcn.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/w32/compat/posixfcn.c b/w32/compat/posixfcn.c index 1d852f5..946f16b 100644 --- a/w32/compat/posixfcn.c +++ b/w32/compat/posixfcn.c @@ -454,3 +454,33 @@ dlclose (void *handle) #endif /* MAKE_LOAD */ + +/* MS runtime's isatty returns non-zero for any character device, + including the null device, which is not what we want. */ +int +isatty (int fd) +{ + HANDLE fh = (HANDLE) _get_osfhandle (fd); + DWORD con_mode; + + if (fh == INVALID_HANDLE_VALUE) + { + errno = EBADF; + return 0; + } + if (GetConsoleMode (fh, &con_mode)) + return 1; + + errno = ENOTTY; + return 0; +} + +char * +ttyname (int fd) +{ + /* This "knows" that Make only asks about stdout and stderr. A more + sophisticated implementation should test whether FD is open for + input or output. We can do that by looking at the mode returned + by GetConsoleMode. */ + return "CONOUT$"; +} |