X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=parser.l;h=033be7fd068f577237d3340f01f85adcc6d96907;hb=59a4f18b662ddb7174efd46e4c76fff3e5caa796;hp=53b568f29b2a8930df326612e3c62607345016b5;hpb=f766634577a899f7aa7dbcdddc90700538ab9cde;p=xboard.git diff --git a/parser.l b/parser.l index 53b568f..033be7f 100644 --- a/parser.l +++ b/parser.l @@ -310,21 +310,24 @@ extern void CopyBoard P((Board to, Board from)); currentMoveString[2] - AAA, currentMoveString[4]); - if (currentMoveString[4] == NULLCHAR && - (result == WhitePromotionKnight || result == BlackPromotionKnight || - result == WhitePromotionQueen || result == BlackPromotionQueen)) { - if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier || gameInfo.variant == VariantMakruk) - currentMoveString[4] = PieceToChar(BlackFerz); - else if(gameInfo.variant == VariantGreat) - currentMoveString[4] = PieceToChar(BlackMan); - else - currentMoveString[4] = PieceToChar(BlackQueen); - currentMoveString[5] = NULLCHAR; - } - - return (int) result; -} - + if (currentMoveString[4] == NULLCHAR) { + if(result == WhitePromotionKnight || result == BlackPromotionKnight || + result == WhitePromotionQueen || result == BlackPromotionQueen) { + if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier || gameInfo.variant == VariantMakruk) + currentMoveString[4] = PieceToChar(BlackFerz); + else if(gameInfo.variant == VariantGreat) + currentMoveString[4] = PieceToChar(BlackMan); + else + currentMoveString[4] = PieceToChar(BlackQueen); + currentMoveString[5] = NULLCHAR; + } + } else if(appData.testLegality && // strip off unnecessary and false promo characters + !(result == WhitePromotionQueen || result == BlackPromotionQueen || + result == WhiteNonPromotion || result == BlackNonPromotion)) currentMoveString[4] = NULLCHAR; + + return (int) result; +} + [a-l][0-9]((=?\(?[A-Za-z]\)?)|=)? { /* * Pawn move, possibly with promotion