Move "offset to command args" to InputCommand.
[gnushogi.git] / gnushogi / commondsp.c
index 40bfd22..1c6ae09 100644 (file)
@@ -424,7 +424,7 @@ void RequestInputString(char* buffer, unsigned bufsize)
 }
 
 
-void
+static void
 GetGame(void)
 {
     FILE *fd;
@@ -647,7 +647,7 @@ GetGame(void)
 }
 
 
-void
+static void
 SaveGame(void)
 {
     FILE *fd;
@@ -799,7 +799,7 @@ SaveGame(void)
  * xshogi wasn't defined -- wonder why?
  */
 
-void
+static void
 GetXGame(void)
 {
     FILE *fd;
@@ -928,7 +928,7 @@ GetXGame(void)
 }
 
 
-void
+static void
 SaveXGame(void)
 {
     FILE *fd;
@@ -1008,7 +1008,7 @@ SaveXGame(void)
 }
 
 
-void
+static void
 BookSave(void)
 {
     FILE *fd;
@@ -1227,7 +1227,7 @@ ListGame(void)
 }
 
 
-void
+static void
 FlagMove(char c)
 {
     switch(c)
@@ -1253,7 +1253,7 @@ FlagMove(char c)
  * Undo the most recent half-move.
  */
 
-void
+static void
 Undo(void)
 {
     short f, t;
@@ -1362,7 +1362,7 @@ FlagString(unsigned short flags, char *s)
 }
 
 
-void
+static void
 TestSpeed(void(*f)(short side, short ply,
                    short in_check, short blockable),
           unsigned j)
@@ -1416,7 +1416,7 @@ TestSpeed(void(*f)(short side, short ply,
 }
 
 
-void
+static void
 TestPSpeed(short(*f) (short side), unsigned j)
 {
     unsigned i;
@@ -1453,14 +1453,12 @@ TestPSpeed(short(*f) (short side), unsigned j)
 }
 
 
-void
-SetOppTime(char *s)
+static void
+SetOppTime(char *time)
 {
-    char *time;
     int m, t, sec;
 
     sec = 0;
-    time = &s[strlen("otime")];
     t = (int)strtol(time, &time, 10);
 
     if (*time == ':')
@@ -1488,13 +1486,11 @@ SetOppTime(char *s)
 }
 
 
-void
-SetMachineTime(char *s)
+static void
+SetMachineTime(char *time)
 {
-    char *time;
     int m, t, sec;
 
-    time = &s[strlen("time")];
     sec = 0;
     t = (int)strtol(time, &time, 10);
 
@@ -1529,15 +1525,13 @@ SetMachineTime(char *s)
  * Process the user's command. If easy mode is OFF (the computer is thinking
  * on opponents time) and the program is out of book, then make the 'hint'
  * move on the board and call SelectMove() to find a response. The user
- * terminates the search by entering ^C (quit siqnal) before entering a
- * command. If the opponent does not make the hint move, then set Sdepth to
- * zero.
+ * terminates the search by entering a command. If the opponent does not make
+ * the hint move, then set Sdepth to zero.
  */
 
 void
 InputCommand(char *command)
 {
-    int eof = 0;
     short have_shown_prompt = false;
     short ok, done, is_move = false;
     unsigned short mv;
@@ -1631,21 +1625,16 @@ InputCommand(char *command)
 #endif /* QUIETBACKGROUND */
 
         if (command == NULL) {
-            if (NOT_CURSES)
-                s[0] = '\0';
-
-            eof = dsp->GetString(sx);
+            int eof = dsp->GetString(sx);
+            if (eof)
+                dsp->ExitShogi();
         } else {
             strcpy(sx, command);
             done = true;
         }
 
-        sscanf(sx, "%s", s);
-
-        if (eof)
-            dsp->ExitShogi();
-
-        if (s[0] == '\0')
+        /* extract first word */
+        if (sscanf(sx, "%s", s) < 1)
             continue;
 
         if (strcmp(s, "bd") == 0)   /* bd -- display board */
@@ -1744,10 +1733,13 @@ InputCommand(char *command)
         {
             ListGame();
         }
-        else if ((strcmp(s, "level") == 0)
-                 || (strcmp(s, "clock") == 0))
+        else if (strcmp(s, "level") == 0)
+        {
+            dsp->SelectLevel(sx + strlen("level"));
+        }
+        else if (strcmp(s, "clock") == 0)
         {
-            dsp->SelectLevel(sx);
+            dsp->SelectLevel(sx + strlen("clock"));
         }
         else if (strcmp(s, "hash") == 0)
         {
@@ -1763,11 +1755,11 @@ InputCommand(char *command)
         }
         else if (strcmp(s, "time") == 0)
         {
-            SetMachineTime(sx);
+            SetMachineTime(sx + strlen("time"));
         }
         else if (strcmp(s, "otime") == 0)
         {
-            SetOppTime(sx);
+            SetOppTime(sx + strlen("otime"));
         }
         else if (strcmp(s, "Awindow") == 0)
         {