Fix multi-leg promotions
[xboard.git] / winboard / wclipbrd.c
index f3f716d..700ccde 100644 (file)
@@ -1,7 +1,8 @@
 /*\r
  * wclipbrd.c -- Clipboard routines for WinBoard\r
  *\r
- * Copyright 2000, 2009, 2010 Free Software Foundation, Inc.\r
+ * Copyright 2000, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free\r
+ * Software Foundation, Inc.\r
  *\r
  * Enhancements Copyright 2005 Alessandro Scotti\r
  *\r
@@ -42,7 +43,6 @@
 \r
 /* Imports from winboard.c */\r
 extern HWND hwndMain;\r
-Boolean ParseFEN(Board b, int *stm, char *FEN);\r
 \r
 /* File globals */\r
 static char *copyTemp;\r
@@ -54,7 +54,7 @@ CopyFENToClipboard()
   char *fen = NULL;\r
 \r
   if(gameMode == EditPosition) EditPositionDone(TRUE); // [HGM] mak sure castling rights are set consistently\r
-  fen = PositionToFEN(currentMove, NULL);\r
+  fen = PositionToFEN(currentMove, NULL, 1);\r
   if (!fen) {\r
     DisplayError(_("Unable to convert position to FEN."), 0);\r
     return;\r
@@ -188,7 +188,7 @@ CopyTextToClipboard(char *text)
     GlobalFree(hGlobalMem);\r
     return FALSE;\r
   }\r
-  lstrcpy(lpGlobalMem, text);\r
+  safeStrCpy(lpGlobalMem, text, 1<<20);\r
   if (appData.debugMode) {\r
     lockCount = GlobalFlags(hGlobalMem) & GMEM_LOCKCOUNT;\r
     fprintf(debugFP, "CopyTextToClipboard(): lock count %d\n", lockCount);\r
@@ -260,6 +260,7 @@ VOID PasteGameFromString( char * buf )
 {\r
   FILE *f;\r
   size_t len;\r
+  int flip = appData.flipView;\r
   if (!pasteTemp) {\r
     pasteTemp = tempnam(NULL, "wbpt");\r
   }\r
@@ -276,7 +277,9 @@ VOID PasteGameFromString( char * buf )
     free(buf); /* [AS] */\r
     return;\r
   }\r
+  if(!appData.autoFlipView) appData.flipView = flipView;\r
   LoadGameFromFile(pasteTemp, 0, "Clipboard", TRUE);\r
+  appData.flipView = flip;\r
   free( buf ); /* [AS] */\r
 }\r
 \r
@@ -301,11 +304,12 @@ VOID PasteGameOrFENFromClipboard()
   Board dummyBoard; int dummy; // [HGM] paste any\r
 \r
   if (!PasteTextFromClipboard(&buf)) {\r
+\r
     return;\r
   }\r
 \r
   // [HGM] paste any: make still smarter, to allow pasting of games without tags, recognize FEN in stead\r
-  if(!ParseFEN(dummyBoard, &dummy, buf) ) {\r
+  if(!ParseFEN(dummyBoard, &dummy, buf, 0) ) {\r
       PasteGameFromString( buf );\r
   }\r
   else {\r
@@ -347,7 +351,7 @@ PasteTextFromClipboard(char **text)
     CloseClipboard();\r
     return FALSE;\r
   }\r
-  lstrcpy(*text, lpClipMem);\r
+  safeStrCpy(*text, lpClipMem, 1<<20 );\r
   if (appData.debugMode) {\r
     lockCount = GlobalFlags(hClipMem) & GMEM_LOCKCOUNT;\r
     fprintf(debugFP, "PasteTextFromClipboard(): lock count %d\n", lockCount);\r