[project @ 2005-05-13 16:58:02 by sof]
authorsof <unknown>
Fri, 13 May 2005 16:58:02 +0000 (16:58 +0000)
committersof <unknown>
Fri, 13 May 2005 16:58:02 +0000 (16:58 +0000)
flush_input_console__(): if the fd isn't connected to a console, treat flush as a NOP. Merge to STABLE.

cbits/consUtils.c

index bb9e154..e0294b2 100644 (file)
@@ -67,8 +67,17 @@ get_console_echo__(int fd)
 int
 flush_input_console__(int fd)
 {
-    HANDLE h;
-    if ( (h = (HANDLE)_get_osfhandle(fd)) != INVALID_HANDLE_VALUE ) {
+    HANDLE h = (HANDLE)_get_osfhandle(fd);
+    
+    if ( h != INVALID_HANDLE_VALUE ) {
+       /* If the 'fd' isn't connected to a console; treat the flush
+        * operation as a NOP.
+        */
+       DWORD unused;
+       if ( !GetConsoleMode(h,&unused) &&
+            GetLastError() == ERROR_INVALID_HANDLE ) {
+           return 0;
+       }
        if ( FlushConsoleInputBuffer(h) ) {
            return 0;
        }