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