* 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
*
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);
{ "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 },
{ "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,
{ "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 },
{ "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) "" },
{ "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) "" },
{ "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 },
/* [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 },
{ "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
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...
{
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);
}
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);
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
}
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 == '{') {
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';
} else {
if (ad->argLoc != NULL) {
} else {
- ExitArgError(_("Failed to open indirection file"), argValue, TRUE);
+ ExitArgError(_("Failed to open indirection file %s"), argValue, TRUE);
}
}
}
*(Boolean *) ad->argLoc = FALSE;
break;
default:
- ExitArgError(_("Unrecognized boolean argument value"), argValue, TRUE);
+ ExitArgError(_("Unrecognized boolean argument value %s"), argValue, TRUE);
break;
}
break;
break;
case ArgNone:
- ExitArgError(_("Unrecognized argument"), argValue, TRUE);
+ ExitArgError(_("Unrecognized argument %s"), argValue, TRUE);
break;
case ArgTwo:
case ArgTrue:
/* 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 )
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);
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);
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;