- Correctly initialize the standard handles for console-less applications. - Simplify _isatty and fix it to not set the errno for "invalid" handles. Modified: trunk/reactos/lib/crt/io/isatty.c Modified: trunk/reactos/lib/crt/io/open.c _____
Modified: trunk/reactos/lib/crt/io/isatty.c --- trunk/reactos/lib/crt/io/isatty.c 2005-03-18 00:56:34 UTC (rev 14170) +++ trunk/reactos/lib/crt/io/isatty.c 2005-03-18 02:10:50 UTC (rev 14171) @@ -1,5 +1,4 @@
-#include <io.h> -#include <sys/stat.h> +#include <internal/file.h>
#define NDEBUG #include <internal/debug.h> @@ -7,13 +6,10 @@ /* * @implemented */ -int _isatty( int fd ) +int _isatty(int fd) { - struct _stat buf; - DPRINT("_isatty(fd %d)\n", fd); - if (_fstat (fd, &buf) < 0) + HANDLE hFile = fdinfo(fd)->hFile; + if (hFile == INVALID_HANDLE_VALUE) return 0; - if (S_ISCHR (buf.st_mode)) - return 1; - return 0; + return GetFileType(hFile) == FILE_TYPE_CHAR ? 1 : 0; } _____
Modified: trunk/reactos/lib/crt/io/open.c --- trunk/reactos/lib/crt/io/open.c 2005-03-18 00:56:34 UTC (rev 14170) +++ trunk/reactos/lib/crt/io/open.c 2005-03-18 02:10:50 UTC (rev 14171) @@ -608,14 +608,20 @@
if (fdinfo(0)->hFile == INVALID_HANDLE_VALUE || !(fdinfo(0)->fdflags & FOPEN)) { fdinfo(0)->hFile = GetStdHandle(STD_INPUT_HANDLE); + if (fdinfo(0)->hFile == NULL) + fdinfo(0)->hFile = INVALID_HANDLE_VALUE; fdinfo(0)->fdflags = FOPEN|FTEXT; } if (fdinfo(1)->hFile == INVALID_HANDLE_VALUE || !(fdinfo(1)->fdflags & FOPEN)) { fdinfo(1)->hFile = GetStdHandle(STD_OUTPUT_HANDLE); + if (fdinfo(1)->hFile == NULL) + fdinfo(1)->hFile = INVALID_HANDLE_VALUE; fdinfo(1)->fdflags = FOPEN|FTEXT; } if (fdinfo(2)->hFile == INVALID_HANDLE_VALUE || !(fdinfo(2)->fdflags & FOPEN)) { fdinfo(2)->hFile = GetStdHandle(STD_ERROR_HANDLE); + if (fdinfo(2)->hFile == NULL) + fdinfo(2)->hFile = INVALID_HANDLE_VALUE; fdinfo(2)->fdflags = FOPEN|FTEXT; }