Implement -serverFile option
authorH.G. Muller <h.g.muller@hccnet.nl>
Wed, 22 Feb 2012 17:27:40 +0000 (18:27 +0100)
committerH.G. Muller <h.g.muller@hccnet.nl>
Wed, 22 Feb 2012 17:27:40 +0000 (18:27 +0100)
This writs an extra debug file with only engine communiation on it,
for the benifit of programs like TLCS.

args.h
backend.c
common.h

diff --git a/args.h b/args.h
index 9c746f6..613f0a4 100644 (file)
--- a/args.h
+++ b/args.h
@@ -699,6 +699,7 @@ ArgDescriptor argDescriptors[] = {
   /* [HGM] options for broadcasting and time odds */
   { "chatBoxes", ArgString, (void *) &appData.chatBoxes, !XBOARD, (ArgIniType) NULL },
   { "serverMoves", ArgString, (void *) &appData.serverMovesName, FALSE, (ArgIniType) NULL },
+  { "serverFile", ArgString, (void *) &appData.serverFileName, FALSE, (ArgIniType) NULL },
   { "suppressLoadMoves", ArgBoolean, (void *) &appData.suppressLoadMoves, FALSE, (ArgIniType) FALSE },
   { "serverPause", ArgInt, (void *) &appData.serverPause, FALSE, (ArgIniType) 15 },
   { "firstTimeOdds", ArgInt, (void *) &appData.firstTimeOdds, FALSE, (ArgIniType) 1 },
index 06c3145..59103ed 100644 (file)
--- a/backend.c
+++ b/backend.c
@@ -392,7 +392,7 @@ PosFlags (index)
   return flags;
 }
 
-FILE *gameFileFP, *debugFP;
+FILE *gameFileFP, *debugFP, *serverFP;
 char *currentDebugFile; // [HGM] debug split: to remember name
 
 /*
@@ -10083,6 +10083,12 @@ NextMatchGame ()
                fclose(debugFP);
                debugFP = f;
            }
+           if(appData.serverFileName) {
+               if(serverFP) fclose(serverFP);
+               serverFP = fopen(appData.serverFileName, "w");
+               if(serverFP && first.pr != NoProc) fprintf(serverFP, "StartChildProcess (dir=\".\") .\\%s\n", first.tidy);
+               if(serverFP && second.pr != NoProc) fprintf(serverFP, "StartChildProcess (dir=\".\") .\\%s\n", second.tidy);
+           }
        }
     }
     firstWhite = appData.firstPlaysBlack ^ (matchGame & 1 | appData.sameColorGames > 1); // non-incremental default
@@ -15023,6 +15029,10 @@ SendToProgram (char *message, ChessProgramState *cps)
        fprintf(debugFP, "%ld >%-6s: %s",
                SubtractTimeMarks(&now, &programStartTime),
                cps->which, message);
+       if(serverFP)
+           fprintf(serverFP, "%ld >%-6s: %s",
+               SubtractTimeMarks(&now, &programStartTime),
+               cps->which, message), fflush(serverFP);
     }
 
     count = strlen(message);
@@ -15124,6 +15134,11 @@ ReceiveFromProgram (InputSourceRef isr, VOIDSTAR closure, char *message, int cou
                        SubtractTimeMarks(&now, &programStartTime), cps->which,
                        quote,
                        message);
+               if(serverFP)
+                   fprintf(serverFP, "%ld <%-6s: %s%s\n",
+                       SubtractTimeMarks(&now, &programStartTime), cps->which,
+                       quote,
+                       message), fflush(serverFP);
        }
     }
 
index 9e1c3dd..b433e68 100644 (file)
--- a/common.h
+++ b/common.h
@@ -623,6 +623,7 @@ typedef struct {
     Boolean lowTimeWarning; /* [HGM] low time */
     char *lowTimeWarningColor;
 
+    char *serverFileName;
     char *serverMovesName;
     Boolean suppressLoadMoves;
     int serverPause;