Provide compatibility with Alien Edition setup command
authorH.G. Muller <h.g.muller@hccnet.nl>
Thu, 7 Mar 2013 17:11:31 +0000 (18:11 +0100)
committerH.G. Muller <h.g.muller@hccnet.nl>
Thu, 2 May 2013 12:54:30 +0000 (14:54 +0200)
The setup command of the Alien Edition has a board-size specifier
(possibly as prefix on a parent-variant name) between pieceToCharTable
and FEN. The regular version would choke on that, precluding engines
designed for the Alien protocol extension to have their setup processed
when running under regular XBoard. This patch makes it skip the extra info.

backend.c

index b3c152e..4af9b0a 100644 (file)
--- a/backend.c
+++ b/backend.c
@@ -8436,6 +8436,7 @@ if(appData.debugMode) fprintf(debugFP, "nodes = %d, %lld\n", (int) programStats.
       if(appData.icsActive || forwardMostMove != 0 || cps != &first) return;
       if(sscanf(message, "setup (%s", buf) == 1) s = 8 + strlen(buf), buf[s-9] = NULLCHAR, SetCharTable(pieceToChar, buf);
       if(startedFromSetupPosition) return;
       if(appData.icsActive || forwardMostMove != 0 || cps != &first) return;
       if(sscanf(message, "setup (%s", buf) == 1) s = 8 + strlen(buf), buf[s-9] = NULLCHAR, SetCharTable(pieceToChar, buf);
       if(startedFromSetupPosition) return;
+      if(sscanf(message+s, "%dx%d+%d", &dummy, &dummy, &dummy) == 3) while(message[s] && message[s++] != ' '); // for compatibility with Alien Edition
       ParseFEN(boards[0], &dummy, message+s);
       DrawPosition(TRUE, boards[0]);
       startedFromSetupPosition = TRUE;
       ParseFEN(boards[0], &dummy, message+s);
       DrawPosition(TRUE, boards[0]);
       startedFromSetupPosition = TRUE;