#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"
unsigned short MV[MAXDEPTH];
int MSCORE;
extern char *InPtr;
extern short pscore[];
+/****************************************
+ * forward declarations
+ ****************************************/
+
+void Raw_UpdateDisplay(short f, short t, short redraw, short isspec);
/****************************************
* Trivial output functions.
void
-Raw_AlwaysShowMessage(const char *format, va_list ap)
+Raw_AlwaysShowMessage(const char *format, ...)
{
+ va_list ap;
+ va_start(ap, format);
vprintf(format, ap);
printf("\n");
+ va_end(ap);
}
void
-Raw_Printf(const char *format, va_list ap)
+Raw_Printf(const char *format, ...)
{
+ va_list ap;
+ va_start(ap, format);
vprintf(format, ap);
+ va_end(ap);
}
if (XSHOGI)
{
+#ifdef WIN32
+ /* needed because of inconsistency between MSVC run-time system and gcc includes */
+ setbuf(stdout, NULL);
+#else
#ifdef HAVE_SETLINEBUF
setlinebuf(stdout);
#else
# error "Need setlinebuf() or setvbuf() to compile gnushogi!"
# endif
#endif
+#endif
printf("GNU Shogi %s\n", PACKAGE_VERSION);
}
void
Raw_PollForInput(void)
{
- static struct pollfd pollfds[1] = { /* [0] = */ { /* .fd = */ STDIN_FILENO,
- /* .events = */ POLLIN } };
+#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);
if (cnt < 0) {
perror("polling standard input");
- ExitShogi();
+ Raw_ExitShogi();
}
+#endif
if (cnt) { /* if anything to read, or error occured */
if (!flag.timeout)
flag.back = true; /* previous: flag.timeout = true; */
flag.bothsides = false;
}
}
+
+struct display raw_display =
+{
+ .ChangeAlphaWindow = Raw_ChangeAlphaWindow,
+ .ChangeBetaWindow = Raw_ChangeBetaWindow,
+ .ChangeHashDepth = Raw_ChangeHashDepth,
+ .ChangeSearchDepth = Raw_ChangeSearchDepth,
+ .ChangeXwindow = Raw_ChangeXwindow,
+ .ClearScreen = Raw_ClearScreen,
+ .DoDebug = Raw_DoDebug,
+ .DoTable = Raw_DoTable,
+ .EditBoard = Raw_EditBoard,
+ .ExitShogi = Raw_ExitShogi,
+ .GiveHint = Raw_GiveHint,
+ .Initialize = Raw_Initialize,
+ .ShowNodeCnt = Raw_ShowNodeCnt,
+ .OutputMove = Raw_OutputMove,
+ .PollForInput = Raw_PollForInput,
+ .SetContempt = Raw_SetContempt,
+ .SearchStartStuff = Raw_SearchStartStuff,
+ .SelectLevel = Raw_SelectLevel,
+ .ShowCurrentMove = Raw_ShowCurrentMove,
+ .ShowDepth = Raw_ShowDepth,
+ .ShowGameType = Raw_ShowGameType,
+ .ShowLine = Raw_ShowLine,
+ .ShowMessage = Raw_ShowMessage,
+ .AlwaysShowMessage = Raw_AlwaysShowMessage,
+ .Printf = Raw_Printf,
+ .doRequestInputString = Raw_doRequestInputString,
+ .GetString = Raw_GetString,
+ .SetupBoard = Raw_SetupBoard,
+ .ShowPatternCount = Raw_ShowPatternCount,
+ .ShowPostnValue = Raw_ShowPostnValue,
+ .ShowPostnValues = Raw_ShowPostnValues,
+ .ShowPrompt = Raw_ShowPrompt,
+ .ShowResponseTime = Raw_ShowResponseTime,
+ .ShowResults = Raw_ShowResults,
+ .ShowSidetoMove = Raw_ShowSidetoMove,
+ .ShowStage = Raw_ShowStage,
+ .TerminateSearch = Raw_TerminateSearch,
+ .UpdateClocks = Raw_UpdateClocks,
+ .UpdateDisplay = Raw_UpdateDisplay,
+ .help = Raw_help,
+};