#include <sys/param.h>
#include <sys/types.h>
#include <sys/file.h>
+#ifndef WIN32
#include <poll.h>
#include <unistd.h>
+#endif
#include "gnushogi.h"
#include "rawdsp.h"
if (XSHOGI)
{
-#ifdef HAVE_SETLINEBUF
- setlinebuf(stdout);
+#ifdef WIN32
+ /* needed because of inconsistency between MSVC run-time system and gcc includes */
+ setbuf(stdout, NULL);
#else
-# ifdef HAVE_SETVBUF
+#ifdef HAVE_SETVBUF
setvbuf(stdout, NULL, _IOLBF, BUFSIZ);
+#else
+# ifdef HAVE_SETLINEBUF
+ setlinebuf(stdout);
# else
-# error "Need setlinebuf() or setvbuf() to compile gnushogi!"
+# error "Need setvbuf() or setlinebuf() to compile gnushogi!"
# endif
#endif
+#endif
printf("GNU Shogi %s\n", PACKAGE_VERSION);
}
void
Raw_PollForInput(void)
{
+#ifdef WIN32
+ DWORD cnt;
+ if (!PeekNamedPipe(GetStdHandle(STD_INPUT_HANDLE), NULL, 0, NULL, &cnt, NULL))
+ cnt = 1;
+#else
static struct pollfd pollfds[1] = { /* [0] = */ { /* .fd = */ STDIN_FILENO,
/* .events = */ POLLIN } };
int cnt = poll(pollfds, sizeof(pollfds)/sizeof(pollfds[0]), 0);
perror("polling standard input");
ExitShogi();
}
+#endif
if (cnt) { /* if anything to read, or error occured */
if (!flag.timeout)
flag.back = true; /* previous: flag.timeout = true; */