X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=args.h;h=a08d49b2cb1f7e158c0ac023b3b7d7eecd2a2e5e;hb=24f7a493a2d030011b0a4f883eaeeb6cbf991414;hp=e22ebfc15ca2f796a08bfb01997e15b039d65056;hpb=4d04bc8a6c2d5e410d519b25164613c5e5c2d160;p=xboard.git diff --git a/args.h b/args.h index e22ebfc..a08d49b 100644 --- a/args.h +++ b/args.h @@ -5,7 +5,7 @@ * Massachusetts. * * Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005, 2006, - * 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. + * 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. * * Enhancements Copyright 2005 Alessandro Scotti * @@ -123,8 +123,6 @@ void SaveColor(FILE *f, ArgDescriptor *ad); void SaveBoardSize(FILE *f, char *name, void *addr); void PrintCommPortSettings(FILE *f, char *name); void GetWindowCoords(); -int MySearchPath(char *installDir, char *name, char *fullname); -int MyGetFullPathName(char *name, char *fullname); int MainWindowUp(); void PopUpStartupDialog(); typedef char GetFunc(void *getClosure); @@ -423,7 +421,7 @@ ArgDescriptor argDescriptors[] = { { "xhighlight", ArgFalse, (void *) &appData.highlightLastMove, FALSE, INVALID }, { "-highlight", ArgFalse, (void *) &appData.highlightLastMove, FALSE, INVALID }, { "highlightDragging", ArgBoolean, - (void *) &appData.highlightDragging, TRUE, INVALID }, + (void *) &appData.highlightDragging, !XBOARD, (ArgIniType) TRUE }, { "highdrag", ArgTrue, (void *) &appData.highlightDragging, FALSE, INVALID }, { "xhighdrag", ArgFalse, (void *) &appData.highlightDragging, FALSE, INVALID }, { "-highdrag", ArgFalse, (void *) &appData.highlightDragging, FALSE, INVALID }, @@ -485,6 +483,8 @@ ArgDescriptor argDescriptors[] = { { "icsMenu", ArgString, (void *) &icsTextMenuString, TRUE, (ArgIniType) ICS_TEXT_MENU_DEFAULT }, { "icsNames", ArgString, (void *) &icsNames, TRUE, (ArgIniType) ICS_NAMES }, { "singleEngineList", ArgBoolean, (void *) &singleList, !XBOARD, (ArgIniType) FALSE }, + { "recentEngines", ArgInt, (void *) &appData.recentEngines, TRUE, (ArgIniType) 6 }, + { "recentEngineList", ArgString, (void *) &appData.recentEngineList, TRUE, (ArgIniType) "" }, { "firstChessProgramNames", ArgString, (void *) &firstChessProgramNames, TRUE, (ArgIniType) FCP_NAMES }, { "secondChessProgramNames", ArgString, (void *) &secondChessProgramNames, @@ -558,6 +558,7 @@ ArgDescriptor argDescriptors[] = { { "polyglotBook", ArgFilename, (void *) &appData.polyglotBook, TRUE, (ArgIniType) "" }, { "bookDepth", ArgInt, (void *) &appData.bookDepth, TRUE, (ArgIniType) 12 }, { "bookVariation", ArgInt, (void *) &appData.bookStrength, TRUE, (ArgIniType) 50 }, + { "discourageOwnBooks", ArgBoolean, (void *) &appData.defNoBook, TRUE, (ArgIniType) FALSE }, { "defaultHashSize", ArgInt, (void *) &appData.defaultHashSize, TRUE, (ArgIniType) 64 }, { "defaultCacheSizeEGTB", ArgInt, (void *) &appData.defaultCacheSizeEGTB, TRUE, (ArgIniType) 4 }, { "defaultPathEGTB", ArgFilename, (void *) &appData.defaultPathEGTB, TRUE, (ArgIniType) "c:\\egtb" }, @@ -578,7 +579,9 @@ ArgDescriptor argDescriptors[] = { { "syncAfterRound", ArgBoolean, (void *) &appData.roundSync, FALSE, (ArgIniType) FALSE }, { "syncAfterCycle", ArgBoolean, (void *) &appData.cycleSync, FALSE, (ArgIniType) TRUE }, { "seedBase", ArgInt, (void *) &appData.seedBase, FALSE, (ArgIniType) 1 }, + { "pgnNumberTag", ArgBoolean, (void *) &appData.numberTag, TRUE, (ArgIniType) FALSE }, { "afterGame", ArgString, (void *) &appData.afterGame, FALSE, INVALID }, + { "afterTourney", ArgString, (void *) &appData.afterTourney, FALSE, INVALID }, /* [HGM] board-size, adjudication and misc. options */ { "oneClickMove", ArgBoolean, (void *) &appData.oneClick, TRUE, (ArgIniType) FALSE }, @@ -611,17 +614,20 @@ ArgDescriptor argDescriptors[] = { { "smpCores", ArgInt, (void *) &appData.smpCores, TRUE, (ArgIniType) 1 }, { "egtFormats", ArgString, (void *) &appData.egtFormats, TRUE, (ArgIniType) "" }, { "niceEngines", ArgInt, (void *) &appData.niceEngines, TRUE, INVALID }, - { "firstLogo", ArgFilename, (void *) &appData.firstLogo, FALSE, INVALID }, - { "secondLogo", ArgFilename, (void *) &appData.secondLogo, FALSE, INVALID }, + { "firstLogo", ArgFilename, (void *) &appData.firstLogo, FALSE, (ArgIniType) "" }, + { "secondLogo", ArgFilename, (void *) &appData.secondLogo, FALSE, (ArgIniType) "" }, { "autoLogo", ArgBoolean, (void *) &appData.autoLogo, TRUE, INVALID }, { "firstOptions", ArgString, (void *) &appData.firstOptions, FALSE, (ArgIniType) "" }, { "secondOptions", ArgString, (void *) &appData.secondOptions, FALSE, (ArgIniType) "" }, + { "firstFeatures", ArgString, (void *) &appData.features[0], FALSE, (ArgIniType) "" }, + { "secondFeatures", ArgString, (void *) &appData.features[1], FALSE, (ArgIniType) "" }, + { "featureDefaults", ArgString, (void *) &appData.featureDefaults, TRUE, (ArgIniType) "" }, { "firstNeedsNoncompliantFEN", ArgString, (void *) &appData.fenOverride1, FALSE, (ArgIniType) NULL }, { "secondNeedsNoncompliantFEN", ArgString, (void *) &appData.fenOverride2, FALSE, (ArgIniType) NULL }, { "keepAlive", ArgInt, (void *) &appData.keepAlive, FALSE, INVALID }, { "icstype", ArgInt, (void *) &ics_type, FALSE, INVALID }, { "forceIllegalMoves", ArgTrue, (void *) &appData.forceIllegal, FALSE, INVALID }, - { "showTargetSquares", ArgBoolean, (void *) &appData.markers, TRUE, FALSE }, + { "showTargetSquares", ArgBoolean, (void *) &appData.markers, TRUE, (ArgIniType) FALSE }, { "firstPgnName", ArgString, (void *) &appData.pgnName[0], FALSE, (ArgIniType) "" }, { "fn", ArgString, (void *) &appData.pgnName[0], FALSE, INVALID }, { "secondPgnName", ArgString, (void *) &appData.pgnName[1], FALSE, (ArgIniType) "" }, @@ -638,6 +644,15 @@ ArgDescriptor argDescriptors[] = { { "eloThresholdBoth", ArgInt, (void *) &appData.eloThreshold2, FALSE, (ArgIniType) 0 }, { "dateThreshold", ArgInt, (void *) &appData.dateThreshold, FALSE, (ArgIniType) 0 }, { "searchMode", ArgInt, (void *) &appData.searchMode, FALSE, (ArgIniType) 1 }, + { "stretch", ArgInt, (void *) &appData.stretch, FALSE, (ArgIniType) 1 }, + { "ignoreColors", ArgBoolean, (void *) &appData.ignoreColors, FALSE, FALSE }, + { "findMirrorImage", ArgBoolean, (void *) &appData.findMirror, FALSE, FALSE }, + { "viewer", ArgTrue, (void *) &appData.viewer, FALSE, FALSE }, + { "viewerOptions", ArgString, (void *) &appData.viewerOptions, TRUE, (ArgIniType) "-ncp -engineOutputUp false -saveSettingsOnExit false" }, + { "autoCopyPV", ArgBoolean, (void *) &appData.autoCopyPV, TRUE, FALSE }, + { "topLevel", ArgBoolean, (void *) &appData.topLevel, XBOARD, (ArgIniType) TOPLEVEL }, + { "dialogColor", ArgString, (void *) &appData.dialogColor, XBOARD, (ArgIniType) "" }, + { "buttonColor", ArgString, (void *) &appData.buttonColor, XBOARD, (ArgIniType) "" }, #if ZIPPY { "zippyTalk", ArgBoolean, (void *) &appData.zippyTalk, FALSE, (ArgIniType) ZIPPY_TALK }, @@ -685,6 +700,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 }, @@ -698,9 +714,10 @@ ArgDescriptor argDescriptors[] = { { "keepLineBreaksICS", ArgBoolean, (void *) &appData.noJoin, TRUE, INVALID }, { "wrapContinuationSequence", ArgString, (void *) &appData.wrapContSeq, FALSE, INVALID }, { "useInternalWrap", ArgTrue, (void *) &appData.useInternalWrap, FALSE, INVALID }, /* noJoin usurps this if set */ + { "openCommand", ArgString, (void *) &appData.sysOpen, FALSE, "xdg-open" }, // [HGM] placement: put all window layouts last in ini file, but man X,Y before all others - { "minX", ArgZ, (void *) &minX, FALSE, INVALID }, // [HGM] placement: to make suer auxialary windows can be placed + { "minX", ArgZ, (void *) &minX, FALSE, INVALID }, // [HGM] placement: to make sure auxiliary windows can be placed { "minY", ArgZ, (void *) &minY, FALSE, INVALID }, { "winWidth", ArgInt, (void *) &wpMain.width, TRUE, INVALID }, // [HGM] placement: dummies to remember right & bottom { "winHeight", ArgInt, (void *) &wpMain.height, TRUE, INVALID }, // for attaching auxiliary windows to them @@ -760,11 +777,11 @@ ExitArgError(char *msg, char *badArg, Boolean quit) char buf[MSG_SIZ]; int len; - len = snprintf(buf,MSG_SIZ, "%s %s", msg, badArg); - if( (len > MSG_SIZ) && appData.debugMode ) + len = snprintf(buf, MSG_SIZ, msg, badArg); + if( (len >= MSG_SIZ) && appData.debugMode ) fprintf(debugFP, "ExitArgError: buffer truncated. Input: msg=%s badArg=%s\n", msg, badArg); - if(!quit) { printf("%s in settings file\n", buf); return; } // DisplayError does not work yet at this stage... + if(!quit) { printf(_("%s in settings file\n"), buf); return; } // DisplayError does not work yet at this stage... DisplayFatalError(buf, 0, 2); exit(2); } @@ -774,7 +791,7 @@ ValidateInt(char *s) { char *p = s; if(*p == '-' || *p == '+') p++; - while(*p) if(!isdigit(*p++)) ExitArgError("Bad integer value", s, TRUE); + while(*p) if(!isdigit(*p++)) ExitArgError(_("Bad integer value %s"), s, TRUE); return atoi(s); } @@ -813,7 +830,7 @@ ParseSettingsFile(char *name, char **addr) if(!ok && strchr(name, '.') == NULL) { // append default file-name extension '.ini' when needed len = snprintf(buf,MSG_SIZ, "%s.ini", name); - if( (len > MSG_SIZ) && appData.debugMode ) + if( (len >= MSG_SIZ) && appData.debugMode ) fprintf(debugFP, "ParseSettingsFile: buffer truncated. Input: name=%s \n",name); ok = MySearchPath(installDir, buf, fullname); @@ -865,7 +882,7 @@ ParseArgs(GetFunc get, void *cl) for (ad = argDescriptors; ad->argName != NULL; ad++) if (strcmp(ad->argName, argName + 1) == 0) break; if (ad->argName == NULL) { - ExitArgError("Unrecognized argument", argName, get != &FileGet); // [HGM] make unknown argument non-fatal + ExitArgError(_("Unrecognized argument %s"), argName, get != &FileGet); // [HGM] make unknown argument non-fatal while (ch != '\n' && ch != NULLCHAR) ch = get(cl); // but skip rest of line it is on continue; // so that when it is in a settings file, it is the only setting that will be purged from it } @@ -894,7 +911,7 @@ ParseArgs(GetFunc get, void *cl) while (ch == ' ' || ch == '=' || ch == ':' || ch == '\t') ch = get(cl); if (ch == NULLCHAR || ch == '\n') { - ExitArgError("No value provided for argument", argName, TRUE); + ExitArgError(_("No value provided for argument %s"), argName, TRUE); } q = argValue; if (ch == '{') { @@ -954,7 +971,7 @@ ParseArgs(GetFunc get, void *cl) ch = get(cl); switch (ch) { case NULLCHAR: - ExitArgError("Incomplete \\ escape in value for", argName, TRUE); + ExitArgError(_("Incomplete \\ escape in value for %s"), argName, TRUE); break; case 'n': *q++ = '\n'; @@ -1038,7 +1055,7 @@ ParseArgs(GetFunc get, void *cl) } else { if (ad->argLoc != NULL) { } else { - ExitArgError("Failed to open indirection file", argValue, TRUE); + ExitArgError(_("Failed to open indirection file %s"), argValue, TRUE); } } } @@ -1055,7 +1072,7 @@ ParseArgs(GetFunc get, void *cl) *(Boolean *) ad->argLoc = FALSE; break; default: - ExitArgError("Unrecognized boolean argument value", argValue, TRUE); + ExitArgError(_("Unrecognized boolean argument value %s"), argValue, TRUE); break; } break; @@ -1083,7 +1100,7 @@ ParseArgs(GetFunc get, void *cl) break; case ArgNone: - ExitArgError("Unrecognized argument", argValue, TRUE); + ExitArgError(_("Unrecognized argument %s"), argValue, TRUE); break; case ArgTwo: case ArgTrue: @@ -1240,6 +1257,8 @@ InitAppData(char *lpCmdLine) /* Parse command line */ ParseArgs(StringGet, &lpCmdLine); + if(appData.viewer && appData.viewerOptions[0]) ParseArgsFromString(appData.viewerOptions); + /* [HGM] make sure board size is acceptable */ if(appData.NrFiles > BOARD_FILES || appData.NrRanks > BOARD_RANKS ) @@ -1260,7 +1279,7 @@ InitAppData(char *lpCmdLine) if(p != NULL) { // engine command line contains WinBoard options len = snprintf(buf, MSG_SIZ, p+6, f, f, f, f, f, f, f, f, f, f); // replace %s in them by "first" - if( (len > MSG_SIZ) && appData.debugMode ) + if( (len >= MSG_SIZ) && appData.debugMode ) fprintf(debugFP, "InitAppData: buffer truncated.\n"); ParseArgs(StringGet, &q); @@ -1277,7 +1296,7 @@ InitAppData(char *lpCmdLine) if(p != NULL) { // engine command line contains WinBoard options len = snprintf(buf,MSG_SIZ, p+6, s, s, s, s, s, s, s, s, s, s); // replace %s in them by "first" - if( (len > MSG_SIZ) && appData.debugMode ) + if( (len >= MSG_SIZ) && appData.debugMode ) fprintf(debugFP, "InitAppData: buffer truncated.\n"); ParseArgs(StringGet, &q); @@ -1476,13 +1495,13 @@ GetArgValue(char *name) return TRUE; case ArgInt: len = snprintf(name, MSG_SIZ, "%d", *(int*) ad->argLoc); - if( (len > MSG_SIZ) && appData.debugMode ) + if( (len >= MSG_SIZ) && appData.debugMode ) fprintf(debugFP, "GetArgValue: buffer truncated.\n"); return TRUE; case ArgBoolean: len = snprintf(name, MSG_SIZ, "%s", *(Boolean*) ad->argLoc ? "true" : "false"); - if( (len > MSG_SIZ) && appData.debugMode ) + if( (len >= MSG_SIZ) && appData.debugMode ) fprintf(debugFP, "GetArgValue: buffer truncated.\n"); return TRUE;