Fix MSVC problems
[xboard.git] / book.c
diff --git a/book.c b/book.c
index 2bb542f..dc81458 100644 (file)
--- a/book.c
+++ b/book.c
@@ -28,6 +28,8 @@
  * ------------------------------------------------------------------------
  */
 
  * ------------------------------------------------------------------------
  */
 
+#include "config.h"
+
 #include <stdio.h>
 #include <string.h>
 #include <time.h>
 #include <stdio.h>
 #include <string.h>
 #include <time.h>
@@ -759,6 +761,9 @@ TextToMoves (char *text, int moveNum, entry_t *entries)
            text = strstr(text, yy_textstr) + strlen(yy_textstr); // skip what we parsed
            if(!valid || moveType != NormalMove && moveType != WhiteDrop && moveType != BlackDrop
                                                 && moveType != WhitePromotion && moveType != BlackPromotion
            text = strstr(text, yy_textstr) + strlen(yy_textstr); // skip what we parsed
            if(!valid || moveType != NormalMove && moveType != WhiteDrop && moveType != BlackDrop
                                                 && moveType != WhitePromotion && moveType != BlackPromotion
+                                                && moveType != WhiteCapturesEnPassant && moveType != BlackCapturesEnPassant
+                                                && moveType != WhiteKingSideCastle && moveType != BlackKingSideCastle
+                                                && moveType != WhiteQueenSideCastle && moveType != BlackQueenSideCastle
                                                 && moveType != WhiteNonPromotion && moveType != BlackNonPromotion) continue;
            if(*text == ' ' && sscanf(text+1, "{%hd/%hd}", &entries[count].learnPoints, &entries[count].learnCount) == 2) {
                text = strchr(text+1, '}') + 1;
                                                 && moveType != WhiteNonPromotion && moveType != BlackNonPromotion) continue;
            if(*text == ' ' && sscanf(text+1, "{%hd/%hd}", &entries[count].learnPoints, &entries[count].learnCount) == 2) {
                text = strchr(text+1, '}') + 1;
@@ -789,6 +794,7 @@ DisplayBook (int moveNr)
     p = MovesToText(count, entries);
     EditTagsPopUp(p, NULL);
     free(p);
     p = MovesToText(count, entries);
     EditTagsPopUp(p, NULL);
     free(p);
+    addToBookFlag = FALSE;
     return TRUE;
 }
 
     return TRUE;
 }
 
@@ -980,6 +986,15 @@ AddGameToBook (int always)
        AddToBook(i, WhiteOnMove(i) ? result : 2-result); // flip result when black moves
 }
 
        AddToBook(i, WhiteOnMove(i) ? result : 2-result); // flip result when black moves
 }
 
+void
+PlayBookMove(char *text, int index)
+{
+    char *start = text+index, *end = start;
+    while(start > text && start[-1] != ' ' && start[-1] != '\t') start--;
+    while(*end && *++end != ' ' && *end != '\n'); *end = NULLCHAR; // find clicked word
+    if(start != end) TypeInDoneEvent(start); // fake it was typed in move type-in
+}
+
 void
 FlushBook ()
 {
 void
 FlushBook ()
 {