Restore SIGINT for stopping gnushogi when thinking.
[gnushogi.git] / gnushogi / commondsp.c
index b5b59d7..31dc80e 100644 (file)
@@ -16,8 +16,8 @@
  *
  * GNU Shogi is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 1, or (at your option) any
- * later version.
+ * Free Software Foundation; either version 3 of the License,
+ * or (at your option) any later version.
  *
  * GNU Shogi is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
@@ -25,8 +25,8 @@
  * for more details.
  *
  * You should have received a copy of the GNU General Public License along
- * with GNU Shogi; see the file COPYING.  If not, write to the Free
- * Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+ * with GNU Shogi; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
  * ----------------------------------------------------------------------
  *
  */
@@ -128,6 +128,17 @@ movealgbr(short m, char *s)
 
 /*
  * Generate move strings in different formats.
+ *
+ * INPUT:
+ * - f                                 piece to be moved
+ *   - 0 < f < NO_SQUARES                              source square
+ *   - NO_SQUARES <= f NO_SQUARES + 2*NO_PIECES                dropped piece modulo NO_PIECES
+ * - t & 0x7f                          target square
+ * - t & 0x80                          promotion flag
+ * - flag                              FIXME: must be zero ?
+ *
+ * OUTPUT:
+ * - GLOBAL mvstr
  */
 
 void
@@ -389,17 +400,17 @@ parser(char *f, int side, short *fpiece)
 
     if (f[1] == '*' || f[1] == '\'')
     {
-        c2 = '9' - f[2];
-        r2 = 'i' - f[3];
+        c2 = COL_NAME(f[2]);
+        r2 = ROW_NAME(f[3]);
 
         return ((NO_SQUARES + *fpiece) << 8) | locn(r2, c2);
     }
     else
     {
-        c1 = '9' - f[1];
-        r1 = 'i' - f[2];
-        c2 = '9' - f[3];
-        r2 = 'i' - f[4];
+        c1 = COL_NAME(f[1]);
+        r1 = ROW_NAME(f[2]);
+        c2 = COL_NAME(f[3]);
+        r2 = ROW_NAME(f[4]);
         p = (f[5] == '+') ? 0x80 : 0;
 
         return (locn(r1, c1) << 8) | locn(r2, c2) | p;
@@ -710,16 +721,16 @@ SaveGame(void)
 
         fprintf(fd, CP[37], w, b, Game50,
                 flag.force ? "force" : "");
-        fprintf(fd, empty);
+        fputs(empty, fd);
         fprintf(fd, CP[111], TCflag, OperatorTime);
         fprintf(fd, CP[117],
                 TimeControl.clock[black], TimeControl.moves[black],
                 TimeControl.clock[white], TimeControl.moves[white]);
-        fprintf(fd, empty);
+        fputs(empty, fd);
 
         for (i = NO_ROWS - 1; i > -1; i--)
         {
-            fprintf(fd, "%c ", 'i' - i);
+            fprintf(fd, "%c ", ROW_NAME(i));
 
             for (c = 0; c < NO_COLS; c++)
             {
@@ -753,9 +764,9 @@ SaveGame(void)
             fprintf(fd, "\n");
         }
 
-        fprintf(fd, empty);
-        fprintf(fd, "   9 8 7 6 5 4 3 2 1\n");
-        fprintf(fd, empty);
+        fputs(empty, fd);
+        fprintf(fd, "   9 8 7 6 5 4 3 2 1\n");    /* FIXME */
+        fputs(empty, fd);
         fprintf(fd, "   p  l  n  s  g  b  r  k\n");
 
         for (side = 0; side <= 1; side++)
@@ -772,8 +783,8 @@ SaveGame(void)
             fprintf(fd, "\n");
         }
 
-        fprintf(fd, empty);
-        fprintf(fd, CP[126]);
+        fputs(empty, fd);
+        fputs(CP[126], fd);
 
         for (i = 1; i <= GameCnt; i++)
         {
@@ -1203,8 +1214,8 @@ ListGame(void)
 
     /* fprintf(fd, "gnushogi game %d\n", u); */
     fprintf(fd, CP[161], version, patchlevel);
-    fprintf(fd, CP[10]);
-    fprintf(fd, CP[11]);
+    fputs(CP[10], fd);
+    fputs(CP[11], fd);
 
     for (i = 1; i <= GameCnt; i++)
     {
@@ -1735,7 +1746,7 @@ InputCommand(char *command)
                 s[0] = sx[0] = '\0';
 
                 while(!sx[0])
-                    (void)fgets(sx, 256, stdin);
+                    (void)fgets(sx, 80, stdin);
             }
             else
             {