- // If we're running under XBoard then we can't use PeekConsoleInput() as
- // the input commands are sent to us directly over the internal pipe.
+ // When using Standard C input functions, also check if there
+ // is anything in the buffer. After a call to such functions,
+ // the input waiting in the pipe will be copied to the buffer,
+ // and the call to PeekNamedPipe can indicate no input available.
+ // Setting stdin to unbuffered was not enough. [from Greko]
+ if (stdin->_cnt > 0)
+ return 1;
+
+ // When running under a GUI the input commands are sent to us
+ // directly over the internal pipe. If PeekNamedPipe() returns 0
+ // then something went wrong. Probably the parent program exited.
+ // Returning 1 will make the next call to the input function
+ // return EOF, where this should be catched then.