Workaround for FICS bug
authorH.G. Muller <h.g.muller@hccnet.nl>
Sun, 23 Sep 2012 18:05:07 +0000 (20:05 +0200)
committerH.G. Muller <h.g.muller@hccnet.nl>
Sun, 23 Sep 2012 18:05:07 +0000 (20:05 +0200)
FICS does not properly understand SAN, and thinks bxc3 can be a Bishop move.
This broke 'Upload to examine', because that uploaded in SAN. In case the
SAN starts with Bx or bx, it now uses long algebraic (with = before the
promo char).

backend.c

index d3b26b9..28d4000 100644 (file)
--- a/backend.c
+++ b/backend.c
@@ -5135,6 +5135,11 @@ UploadGameEvent ()
     for(i = backwardMostMove; i<last; i++) {
        char buf[20];
        snprintf(buf, sizeof(buf)/sizeof(buf[0]),"%s\n", parseList[i]);
+       if((*buf == 'b' || *buf == 'B') && buf[1] == 'x') { // work-around for stupid FICS bug, which thinks bxc3 can be a Bishop move
+           int len = strlen(moveList[i]);
+           snprintf(buf, sizeof(buf)/sizeof(buf[0]),"%s", moveList[i]); // use long algebraic
+           if(!isdigit(buf[len-2])) snprintf(buf+len-2, 20-len, "=%c\n", ToUpper(buf[len-2])); // promotion must have '=' in ICS format
+       }
        SendToICS(buf);
     }
     SendToICS(ics_prefix);