Move ElapsedTime to tcontrl.c, now that there is a single implementation.
[gnushogi.git] / gnushogi / rawdsp.c
index 6c8e654..8bdc1a0 100644 (file)
@@ -35,6 +35,8 @@
 #include <sys/param.h>
 #include <sys/types.h>
 #include <sys/file.h>
+#include <poll.h>
+#include <unistd.h>
 
 #include "gnushogi.h"
 #include "rawdsp.h"
@@ -123,23 +125,17 @@ Raw_ShowMessage(char *s)
 
 
 void
-Raw_AlwaysShowMessage(const char *format, ...)
+Raw_AlwaysShowMessage(const char *format, va_list ap)
 {
-    va_list ap;
-    va_start(ap, format);
     vprintf(format, ap);
-    va_end(ap);
     printf("\n");
 }
 
 
 void
-Raw_Printf(const char *format, ...)
+Raw_Printf(const char *format, va_list ap)
 {
-    va_list ap;
-    va_start(ap, format);
     vprintf(format, ap);
-    va_end(ap);
 }
 
 
@@ -633,6 +629,12 @@ Raw_OutputMove(void)
 
 
 void
+Raw_UpdateClocks(void)
+{
+}
+
+
+void
 Raw_UpdateDisplay(short f, short t, short redraw, short isspec)
 {
 
@@ -989,57 +991,19 @@ Raw_ShowPostnValues(void)
 }
 
 
-/*
- * Determine the time that has passed since the search was started. If the
- * elapsed time exceeds the target(ResponseTime + ExtraTime) then set timeout
- * to true which will terminate the search.
- * iop = COMPUTE_MODE calculate et, bump ETnodes
- * iop = COMPUTE_AND_INIT_MODE calculate et, set timeout if time exceeded,
- *     set reference time
- */
 void
-Raw_ElapsedTime(ElapsedTime_mode iop)
+Raw_PollForInput(void)
 {
-    long current_time;
-#ifdef HAVE_GETTIMEOFDAY
-    struct timeval tv;
-    gettimeofday(&tv, NULL);
-    current_time = tv.tv_sec*100 + (tv.tv_usec/10000);
-#else
-    et = ((current_time = time((long *) 0)) - time0) * 100;
-#endif
-
-#ifdef INTERRUPT_TEST
-    if (iop == INIT_INTERRUPT_MODE)
-    {
-        itime0 = current_time;
-    }
-    else if (iop == COMPUTE_INTERRUPT_MODE)
-    {
-        it = current_time - itime0;
+    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();
     }
-    else
-#endif
-    {
-#ifdef HAVE_GETTIMEOFDAY
-        et = current_time - time0;
-#endif
-        ETnodes = NodeCnt + znodes;
-
-        if (et < 0)
-        {
-#ifdef INTERRUPT_TEST
-            printf("elapsed time %ld not positive\n", et);
-#endif
-            et = 0;
-        }
-
-        if (iop == COMPUTE_AND_INIT_MODE)
-        {
-            if ((et > (ResponseTime + ExtraTime)) && (Sdepth > MINDEPTH))
-                flag.timeout = true;
-
-            time0 = current_time;
-        }
+    if (cnt) { /* if anything to read, or error occured */
+        if (!flag.timeout)
+            flag.back = true; /* previous: flag.timeout = true; */
+        flag.bothsides = false;
     }
 }