Implement aborting of games on engine request.
authorH.G. Muller <h.g.muller@hccnet.nl>
Sun, 30 Dec 2012 13:58:16 +0000 (14:58 +0100)
committerH.G. Muller <h.g.muller@hccnet.nl>
Sat, 19 Jan 2013 22:27:21 +0000 (23:27 +0100)
A new game-end command is added. For bakward compatibility it is disguised
as an old one, namely "1/2-1/2 {Engine Abort Request}". These resultDetails
are recognized as special, and rather than ending the game in a draw (which
GUIs not implementing this), the game will be completely 'expunged' from
the match or tourney it is part of, leaving no trace in the saveGameFile.

backend.c

index 25134bf..3ab07f9 100644 (file)
--- a/backend.c
+++ b/backend.c
@@ -10632,6 +10632,10 @@ GameEnds (ChessMove result, char *resultDetails, int whosays)
                       resultDetails = buf;
                 }
                 /* (Claiming a loss is accepted no questions asked!) */
+           } else if(matchMode && result == GameIsDrawn && !strcmp(resultDetails, "Engine Abort Request")) {
+               forwardMostMove = backwardMostMove; // [HGM] delete game to surpress saving
+               result = GameUnfinished;
+               if(!*appData.tourneyFile) matchGame--; // replay even in plain match
            }
            /* [HGM] bare: don't allow bare King to win */
            if((gameInfo.holdingsWidth == 0 || gameInfo.variant == VariantSuper