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