/*\r
* wclipbrd.c -- Clipboard routines for WinBoard\r
- * $Id$\r
+ * $Id: wclipbrd.c,v 2.1 2003/10/27 19:21:02 mann Exp $
*\r
* Copyright 2000 Free Software Foundation, Inc.\r
*\r
#include <stdio.h>\r
#include <stdlib.h>\r
#include <malloc.h>\r
-#include <io.h>\r
#include <sys/stat.h>\r
\r
#include "common.h"\r
{\r
char *fen = NULL;\r
\r
- fen = PositionToFEN(currentMove);\r
+ fen = PositionToFEN(currentMove,1);
if (!fen) {\r
DisplayError("Unable to convert position to FEN.", 0);\r
return;\r
struct stat st;\r
\r
if (!copyTemp) {\r
- copyTemp = tmpnam(NULL);\r
+ copyTemp = tempnam(NULL, "wbcp");\r
}\r
if (!copyTemp) {\r
DisplayError("Cannot create temporary file name.",0);\r
return;\r
}\r
- f = fopen(copyTemp, "w"); \r
+ f = fopen(copyTemp, "w");\r
if (!f) {\r
DisplayError("Cannot open temporary file.", 0);\r
return;\r
return TRUE;\r
}\r
\r
+/* [AS] Reworked paste functions so they can work with strings too */
+
+VOID PasteFENFromString( char * fen )
+{
+ if (appData.debugMode) {
+ fprintf(debugFP, "PasteFenFromString(): fen '%s'\n", fen);
+ }
+ EditPositionPasteFEN(fen); /* call into backend */
+ free(fen);
+}
\r
\r
VOID\r
DisplayError("Unable to paste FEN from clipboard.", 0);\r
return;\r
}\r
- if (appData.debugMode) {\r
- fprintf(debugFP, "PasteFenFromClipboard(): fen '%s'\n", fen);\r
- }\r
- EditPositionPasteFEN(fen); /* call into backend */\r
- free(fen);\r
+ PasteFENFromString( fen );
}\r
\r
-\r
-VOID\r
-PasteGameFromClipboard()\r
+VOID PasteGameFromString( char * buf )
{\r
- /* Write the clipboard to a temp file, then let LoadGameFromFile()\r
- * do all the work. */\r
- char *buf;\r
FILE *f;\r
size_t len;\r
- if (!PasteTextFromClipboard(&buf)) {\r
- return;\r
- }\r
if (!pasteTemp) {\r
- pasteTemp = tmpnam(NULL);\r
+ pasteTemp = tempnam(NULL, "wbpt");\r
}\r
- f = fopen(pasteTemp, "wb+");\r
+ f = fopen(pasteTemp, "w");\r
if (!f) {\r
DisplayError("Unable to create temporary file.", 0);\r
+ free(buf); /* [AS] */
return;\r
}\r
len = fwrite(buf, sizeof(char), strlen(buf), f);\r
fclose(f);\r
if (len != strlen(buf)) {\r
DisplayError("Error writing to temporary file.", 0);\r
+ free(buf); /* [AS] */
return;\r
}\r
LoadGameFromFile(pasteTemp, 0, "Clipboard", TRUE);\r
+ free( buf ); /* [AS] */
+}
+
+
+VOID
+PasteGameFromClipboard()
+{
+ /* Write the clipboard to a temp file, then let LoadGameFromFile()
+ * do all the work. */
+ char *buf;
+ if (!PasteTextFromClipboard(&buf)) {
+ return;
+ }
+ PasteGameFromString( buf );
}\r
\r
+/* [AS] Try to detect whether the clipboard contains FEN or PGN data */
+VOID PasteGameOrFENFromClipboard()
+{
+ char *buf;
+ char *tmp;
+
+ if (!PasteTextFromClipboard(&buf)) {
+ return;
+ }
+
+ tmp = buf;
+ while( *tmp == ' ' || *tmp == '\t' || *tmp == '\r' || *tmp == '\n' ) {
+ tmp++;
+ }
+
+ if( *tmp == '[' ) {
+ PasteGameFromString( buf );
+ }
+ else {
+ PasteFENFromString( buf );
+ }
+}
\r
int \r
PasteTextFromClipboard(char **text)\r