Move ElapsedTime to tcontrl.c, now that there is a single implementation.
[gnushogi.git] / gnushogi / rawdsp.c
index 27e558c..8bdc1a0 100644 (file)
 
 #include <ctype.h>
 #include <signal.h>
+#include <stdarg.h>
 #include <sys/param.h>
 #include <sys/types.h>
 #include <sys/file.h>
+#include <poll.h>
+#include <unistd.h>
 
 #include "gnushogi.h"
 #include "rawdsp.h"
@@ -59,9 +62,8 @@ Raw_ClearScreen(void)
 }
 
 
-/* FIXME: change to ShowPrompt? */
 void
-PromptForMove(void)
+Raw_ShowPrompt(void)
 {
     if (!barebones && !XSHOGI)
     {
@@ -123,6 +125,48 @@ Raw_ShowMessage(char *s)
 
 
 void
+Raw_AlwaysShowMessage(const char *format, va_list ap)
+{
+    vprintf(format, ap);
+    printf("\n");
+}
+
+
+void
+Raw_Printf(const char *format, va_list ap)
+{
+    vprintf(format, ap);
+}
+
+
+void
+Raw_doRequestInputString(const char* fmt, char* buffer)
+{
+    scanf(fmt, buffer);
+}
+
+
+int
+Raw_GetString(char* sx)
+{
+    int eof = 0;
+    sx[0] = '\0';
+
+    while(!eof && !sx[0])
+        eof = (fgets(sx, 80, stdin) == NULL);
+    return eof;
+}
+
+
+void
+Raw_ShowNodeCnt(long NodeCnt)
+{
+    printf(CP[91],
+           NodeCnt, (((et) ? ((NodeCnt * 100) / et) : 0)));
+}
+
+
+void
 Raw_ShowPatternCount(short side, short n)
 {
     if (flag.post)
@@ -167,7 +211,6 @@ Raw_ShowStage(void)
  * End of trivial output routines.
  ****************************************/
 
-
 void
 Raw_Initialize(void)
 {
@@ -195,7 +238,6 @@ Raw_Initialize(void)
 }
 
 
-
 void
 Raw_ExitShogi(void)
 {
@@ -222,7 +264,6 @@ Raw_Die(int sig)
 }
 
 
-
 void
 Raw_TerminateSearch(int sig)
 {
@@ -237,7 +278,6 @@ Raw_TerminateSearch(int sig)
 }
 
 
-
 void
 Raw_help(void)
 {
@@ -318,12 +358,10 @@ Raw_help(void)
 }
 
 
-
 /*
  * Set up a board position. Pieces are entered by typing the piece followed
  * by the location. For example, Nf3 will place a knight on square f3.
  */
-
 void
 Raw_EditBoard(void)
 {
@@ -424,16 +462,13 @@ Raw_EditBoard(void)
 }
 
 
-
-
 /*
  * Set up a board position.
  * Nine lines of nine characters are used to setup the board. 9a-1a is the
  * first line. White pieces are  represented  by  uppercase characters.
  */
-
 void
-SetupBoard(void)
+Raw_SetupBoard(void)
 {
     short r, c, sq, i;
     char ch;
@@ -495,7 +530,6 @@ Raw_SearchStartStuff(short side)
 }
 
 
-
 void
 Raw_OutputMove(void)
 {
@@ -595,6 +629,12 @@ Raw_OutputMove(void)
 
 
 void
+Raw_UpdateClocks(void)
+{
+}
+
+
+void
 Raw_UpdateDisplay(short f, short t, short redraw, short isspec)
 {
 
@@ -654,7 +694,6 @@ Raw_UpdateDisplay(short f, short t, short redraw, short isspec)
 }
 
 
-
 void
 Raw_ChangeAlphaWindow(void)
 {
@@ -665,7 +704,6 @@ Raw_ChangeAlphaWindow(void)
 }
 
 
-
 void
 Raw_ChangeBetaWindow(void)
 {
@@ -676,7 +714,6 @@ Raw_ChangeBetaWindow(void)
 }
 
 
-
 void
 Raw_GiveHint(void)
 {
@@ -690,7 +727,6 @@ Raw_GiveHint(void)
 }
 
 
-
 void
 Raw_SelectLevel(char *sx)
 {
@@ -773,8 +809,6 @@ Raw_SelectLevel(char *sx)
 }
 
 
-
-
 void
 Raw_ChangeSearchDepth(void)
 {
@@ -784,8 +818,6 @@ Raw_ChangeSearchDepth(void)
 }
 
 
-
-
 void
 Raw_ChangeHashDepth(void)
 {
@@ -796,7 +828,6 @@ Raw_ChangeHashDepth(void)
 }
 
 
-
 void
 Raw_SetContempt(void)
 {
@@ -805,7 +836,6 @@ Raw_SetContempt(void)
 }
 
 
-
 void
 Raw_ChangeXwindow(void)
 {
@@ -818,7 +848,6 @@ Raw_ChangeXwindow(void)
  * Raw_ShowPostnValue(short sq)
  * must have called ExaminePosition() first
  */
-
 void
 Raw_ShowPostnValue(short sq)
 {
@@ -840,7 +869,6 @@ Raw_ShowPostnValue(short sq)
 }
 
 
-
 void
 Raw_DoDebug(void)
 {
@@ -919,7 +947,6 @@ Raw_DoDebug(void)
 }
 
 
-
 void
 Raw_DoTable(short table[NO_SQUARES])
 {
@@ -939,7 +966,6 @@ Raw_DoTable(short table[NO_SQUARES])
 }
 
 
-
 void
 Raw_ShowPostnValues(void)
 {
@@ -963,3 +989,21 @@ Raw_ShowPostnValues(void)
            mtl[opponent], pscore[opponent], GameType[opponent]);
     printf("\nhung black %d hung white %d\n", hung[black], hung[white]);
 }
+
+
+void
+Raw_PollForInput(void)
+{
+    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();
+    }
+    if (cnt) { /* if anything to read, or error occured */
+        if (!flag.timeout)
+            flag.back = true; /* previous: flag.timeout = true; */
+        flag.bothsides = false;
+    }
+}