X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=cbits%2FconsUtils.c;h=e0294b21c99b2903622cb4a3e0085efc74ed318e;hb=30464c0cb915c2ae900909568fa8677bba341e45;hp=bb9e154e86afda1b4b6ad7c7309f58754f060d5d;hpb=2cedb18441a5e7287d0361d5673f776e7bf9c6be;p=haskell-directory.git diff --git a/cbits/consUtils.c b/cbits/consUtils.c index bb9e154..e0294b2 100644 --- a/cbits/consUtils.c +++ b/cbits/consUtils.c @@ -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; }