X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=backend.c;h=6e1da236b7389f5fa819336caa7e15010cf04a03;hb=ab6f75e012f36005a85de3bb1c49b9c4e48b026e;hp=929b30f3af1d3eb08ba2508bef37ab5f02bf1a09;hpb=24659044481fa42b3846cb9e801fd06abe0a102e;p=xboard.git diff --git a/backend.c b/backend.c index 929b30f..6e1da23 100644 --- a/backend.c +++ b/backend.c @@ -1031,7 +1031,7 @@ Load (ChessProgramState *cps, int i) q = firstChessProgramNames; if(nickName[0]) snprintf(buf, MSG_SIZ, "\"%s\" -fcp ", nickName); else buf[0] = NULLCHAR; quote = strchr(p, '"') ? '\'' : '"'; // use single quotes around engine command if it contains double quotes - snprintf(buf+strlen(buf), MSG_SIZ-strlen(buf), "%c%s%c -fd \"%s\"%s%s%s%s%s%s%s%s\n", + snprintf(buf+strlen(buf), MSG_SIZ-strlen(buf), "%c%s%c -fd \"%s\"%s%s%s%s%s%s%s%s", quote, p, quote, appData.directory[i], useNick ? " -fn \"" : "", useNick ? nickName : "", @@ -1041,10 +1041,10 @@ Load (ChessProgramState *cps, int i) isUCI ? (isUCI == TRUE ? " -fUCI" : gameInfo.variant == VariantShogi ? " -fUSI" : " -fUCCI") : "", storeVariant ? " -variant " : "", storeVariant ? VariantName(gameInfo.variant) : ""); - if(wbOptions && wbOptions[0]) snprintf(buf+strlen(buf)-1, MSG_SIZ-strlen(buf), " %s\n", wbOptions); - firstChessProgramNames = malloc(len = strlen(q) + strlen(buf) + 1); + if(wbOptions && wbOptions[0]) snprintf(buf+strlen(buf), MSG_SIZ-strlen(buf), " %s", wbOptions); + firstChessProgramNames = malloc(len = strlen(q) + strlen(buf) + 2); if(insert != q) insert[-1] = NULLCHAR; - snprintf(firstChessProgramNames, len, "%s\n%s%s", q, buf, insert); + snprintf(firstChessProgramNames, len, "%s\n%s\n%s", q, buf, insert); if(q) free(q); FloatToFront(&appData.recentEngineList, buf); ASSIGN(currentEngine[i], buf); @@ -1593,8 +1593,6 @@ MatchEvent (int mode) NextMatchGame(); } -char *comboLine = NULL; // [HGM] recent: WinBoard's first-engine combobox line - void InitBackEnd3 P((void)) { @@ -1626,7 +1624,7 @@ InitBackEnd3 P((void)) free(programVersion); programVersion = (char*) malloc(8 + strlen(PACKAGE_STRING) + strlen(first.tidy)); sprintf(programVersion, "%s + %s", PACKAGE_STRING, first.tidy); - FloatToFront(&appData.recentEngineList, comboLine ? comboLine : appData.firstChessProgram); + FloatToFront(&appData.recentEngineList, currentEngine[0] ? currentEngine[0] : appData.firstChessProgram); } if (appData.icsActive) { @@ -11276,9 +11274,9 @@ void SaveEngineSettings (int n) { int len; char *p, *q, *s, buf[MSG_SIZ], *optionSettings; - if(!currentEngine[n] || !currentEngine[n][0]) return; // no engine from list is loaded + if(!currentEngine[n] || !currentEngine[n][0]) { DisplayMessage("saving failed: engine not from list", ""); return; } // no engine from list is loaded p = strstr(firstChessProgramNames, currentEngine[n]); - if(!p) return; // sanity check; engine could be deleted from list after loading + if(!p) { DisplayMessage("saving failed: engine not found in list", ""); return; } // sanity check; engine could be deleted from list after loading optionSettings = ResendOptions(n ? &second : &first, FALSE); len = strlen(currentEngine[n]); q = p + len; *p = 0; // cut list into head and tail piece