Fix o-o castling in new parser
authorH.G. Muller <h.g.muller@hccnet.nl>
Sun, 13 Mar 2011 13:09:14 +0000 (14:09 +0100)
committerArun Persaud <apersaud@lbl.gov>
Sun, 13 Mar 2011 19:41:04 +0000 (12:41 -0700)
The non-compliant notation of castling with lower-case 'o' should be
preferred over the non-compliant interpretation of moving a Pawn along
the o-file. Not doing so breaks ICS play, as ICS use o-o and o-o-o for
castling! So an exception is now made for the o-file in the 'fxg'
case.

parser.c

index 973d109..7afd348 100644 (file)
--- a/parser.c
+++ b/parser.c
@@ -242,7 +242,8 @@ if(appData.debugMode)fprintf(debugFP, "trial %d,%d,%d,%d  type %d%d%d%d\n", coor
                return ImpossibleMove; // for now treat as invalid\r
            }\r
            // fxg stuff, but also things like 0-0, 0-1 and 1-0\r
-           if(!piece && type[1] == NOTHING && type[0] == ALPHABETIC && type[2] == ALPHABETIC) {\r
+           if(!piece && type[1] == NOTHING && type[0] == ALPHABETIC && type[2] == ALPHABETIC
+                && (coord[0] != 14 || coord[2] != 14) /* reserve oo for castling! */ ) {
                piece = 'P'; n = 4; // kludge alert: fake full to-square\r
            }\r
        }\r