diff -r 4d030da07c88 -r 3ab0c2e1a4e2 src/game.c --- a/src/game.c Tue Apr 01 10:28:08 2014 +0200 +++ b/src/game.c Tue Apr 01 12:30:25 2014 +0200 @@ -86,21 +86,26 @@ if (logelem) { Move move = logelem->move; - char logstr[] = { - getpiecechr(move.piece), - filechr(move.fromfile), rowchr(move.fromrow), - move.capture ? 'x':'\0', - filechr(move.tofile), rowchr(move.torow), - move.check ? '+' : (move.checkmate ? '#' : - (move.promotion ? '=' : '\0')), - move.promotion ? getpiecechr(move.promotion) : '\0', - ' ' - }; - for (int stri = 0 ; stri < sizeof(logstr) ; stri++) { - if (logstr[stri]) { - addch(logstr[stri]); + if ((move.piece&PIECE_MASK) == KING && + abs(move.tofile-move.fromfile) == 2) { + addstr(move.tofile==fileidx('c')?"O-O-O":"O-O"); + } else { + char logstr[] = { + getpiecechr(move.piece), + filechr(move.fromfile), rowchr(move.fromrow), + move.capture ? 'x':'\0', + filechr(move.tofile), rowchr(move.torow), + move.check ? '+' : (move.checkmate ? '#' : + (move.promotion ? '=' : '\0')), + move.promotion ? getpiecechr(move.promotion) : '\0' + }; + for (int stri = 0 ; stri < sizeof(logstr) ; stri++) { + if (logstr[stri]) { + addch(logstr[stri]); + } } } + addch(' '); logelem = logelem->next; }