From 8dac052af443ca14fac6d343b22113fb1d19cd1b Mon Sep 17 00:00:00 2001 From: usa Date: Wed, 15 Dec 2004 08:05:10 +0000 Subject: * win32/win32.[ch] (rb_w32_isatty): new function to replace MSVCRT's isatty because it never sets errno. (backported from CVS HEAD) git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@7565 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- win32/win32.c | 14 ++++++++++++++ win32/win32.h | 3 +++ 2 files changed, 17 insertions(+) (limited to 'win32') diff --git a/win32/win32.c b/win32/win32.c index a4cea9b287..f44b805ae6 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -3322,6 +3322,20 @@ rb_w32_snprintf(char *buf, size_t size, const char *format, ...) return ret; } +int +rb_w32_isatty(int fd) +{ + if (!(_osfile(fd) & FOPEN)) { + errno = EBADF; + return 0; + } + if (!(_osfile(fd) & FDEV)) { + errno = ENOTTY; + return 0; + } + return 1; +} + // // Fix bcc32's stdio bug // diff --git a/win32/win32.h b/win32/win32.h index d7222fc1b1..a7995a083b 100644 --- a/win32/win32.h +++ b/win32/win32.h @@ -125,6 +125,8 @@ extern "C++" { #define stat(path,st) rb_w32_stat(path,st) #undef execv #define execv(path,argv) do_aspawn(P_OVERLAY,path,argv) +#undef isatty +#define isatty(h) rb_w32_isatty(h) #ifdef __MINGW32__ struct timezone { @@ -181,6 +183,7 @@ extern int do_spawn(int, char *); extern int do_aspawn(int, char *, char **); extern int kill(int, int); extern pid_t rb_w32_getpid(void); +extern int rb_w32_isatty(int); #ifdef __BORLANDC__ extern FILE *rb_w32_fopen(const char *, const char *); -- cgit v1.2.3