add code to keep log of user input
[capablanca.git] / lasker-2.2.3 / src / seekproc.c
index 8a1b9f6..94960c4 100644 (file)
@@ -65,7 +65,6 @@ int com_seek(int p, param_list param)
                pprintf(p, "ERROR: Sorry, all available slots for seek are closed.\n");
                return COM_OK;
        }
-       seek_globals.ads[num].status = SEEKCLOSED;
        seek_globals.ads[num].whofrom = p;
 
 #if 1
@@ -78,6 +77,25 @@ int com_seek(int p, param_list param)
                                                          board,param[0].val.string))
              return COM_OK; /* couldn't parse */
        }
+
+    if (category[0]) {
+      if (!board[0] && strcmp(category,"bughouse")) {
+        pprintf(p, "You must specify a board and a category.\n");
+        return COM_OK;
+
+      } else if (board[0]) { /* not bughouse */
+        char fname[MAX_FILENAME_SIZE];
+
+        sprintf(fname, "%s/%s/%s", BOARD_DIR, category, board);
+        if (!file_exists(fname)) {
+          pprintf(p, "No such category/board: %s/%s\n", category, board);
+          return COM_OK;
+        }
+      }
+    }
+
+       seek_globals.ads[num].status = SEEKCLOSED; // params are valid; create ad
+
        if(wt < 0) wt = pp->d_time; if(bt < 0) bt = wt;
        if(winc < 0) winc = pp->d_inc; if(binc < 0) binc = bt;
        seek_globals.ads[num].wtime = wt;
@@ -100,6 +118,8 @@ int com_seek(int p, param_list param)
                seek_globals.ads[num].seek_color = random() % 2;
 
 #else
+       seek_globals.ads[num].status = SEEKCLOSED;
+
        if (param[0].type == TYPE_INT)
                seek_globals.ads[num].wtime = param[0].val.integer;     /* White time */
        else
@@ -187,6 +207,8 @@ int com_play(int p, param_list param)
 return 0;
 }
 
+extern FILE *comlog;
+
 int com_sought(int p, param_list param)
 {
        int             i;
@@ -194,6 +216,7 @@ int com_sought(int p, param_list param)
        for (i = 0; i < seek_globals.max_ads; i++) {
                if (seek_globals.ads[i].status == SEEKCLOSED) {
                        char *msgtxt = form_ad(&seek_globals.ads[i], i);
+if(comlog) fprintf(comlog, "msgtext = %s\n", msgtxt), fflush(comlog);
                        pprintf(p, "%s", msgtxt);
                        free(msgtxt);
                }
@@ -224,7 +247,7 @@ void withdraw_seeks(int p)
                                        continue;
                                pprintf_prompt(p1, "AD_DESTROY: %d\n", i);
                        }
-                       pprintf(p, "AD_DESTROY: %d\n", i);
+                       pprintf(p, "Ads removed: %d\n", i);
                        FREE(seek_globals.ads[i].category);
                        FREE(seek_globals.ads[i].board_type);
                }
@@ -276,6 +299,7 @@ static char *form_ad(struct pending * ad, int i)
                 rating = player_globals.parray[ad->whofrom].b_stats.rating;
        }
 
+if(comlog) fprintf(comlog, "seek %d type = %d\n", i, type), fflush(comlog);
        if(ad->category[0]) { // [HGM] print category with seek ad
                sprintf(buf, " %s", ad->category);
                if(ad->board_type[0] && strcmp(ad->board_type, "0"))