- 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;
}