X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=args.h;h=01dc439b8b24a2851d3295c1a0a2e9edd68e49c9;hb=19322454d23ba4bd033d3578978db047bbd49c7d;hp=ea3e8c0550c3adb54440559a9b8039e5e5eb1e5e;hpb=74506c0e852b35465c651f331e010ca7e60e7dd3;p=xboard.git diff --git a/args.h b/args.h index ea3e8c0..01dc439 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, 2012 Free Software Foundation, Inc. + * 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. * * Enhancements Copyright 2005 Alessandro Scotti * @@ -60,7 +60,7 @@ typedef enum { ArgString, ArgInt, ArgFloat, ArgBoolean, ArgTrue, ArgFalse, ArgNone, ArgColor, ArgAttribs, ArgFilename, ArgBoardSize, ArgFont, ArgCommSettings, - ArgSettingsFilename, ArgTwo, + ArgSettingsFilename, ArgBackupSettingsFile, ArgTwo, ArgX, ArgY, ArgZ // [HGM] placement: for window-placement options stored relative to main window } ArgType; @@ -196,6 +196,7 @@ ArgDescriptor argDescriptors[] = { { "secondDirectory", ArgFilename, (void *) &appData.secondDirectory, FALSE, (ArgIniType) SECOND_DIRECTORY }, { "sd", ArgFilename, (void *) &appData.secondDirectory, FALSE, INVALID }, { "variations", ArgBoolean, (void *) &appData.variations, TRUE, (ArgIniType) FALSE }, + { "appendPV", ArgBoolean, (void *) &appData.autoExtend, TRUE, (ArgIniType) FALSE }, { "theme", ArgString, (void *) &theme, FALSE, (ArgIniType) "" }, /* some options only used by the XBoard front end, and ignored in WinBoard */ @@ -259,6 +260,7 @@ ArgDescriptor argDescriptors[] = { { "seekGraph", ArgBoolean, (void *) &appData.seekGraph, TRUE, (ArgIniType) FALSE }, { "sg", ArgTrue, (void *) &appData.seekGraph, FALSE, INVALID }, { "autoRefresh", ArgBoolean, (void *) &appData.autoRefresh, TRUE, (ArgIniType) FALSE }, + { "autoBox", ArgBoolean, (void *) &appData.autoBox, XBOARD, (ArgIniType) TRUE }, { "gateway", ArgString, (void *) &appData.gateway, FALSE, (ArgIniType) "" }, { "loadGameFile", ArgFilename, (void *) &appData.loadGameFile, FALSE, (ArgIniType) "" }, { "lgf", ArgFilename, (void *) &appData.loadGameFile, FALSE, INVALID }, @@ -270,6 +272,7 @@ ArgDescriptor argDescriptors[] = { { "autosave", ArgTrue, (void *) &appData.autoSaveGames, FALSE, INVALID }, { "xautosave", ArgFalse, (void *) &appData.autoSaveGames, FALSE, INVALID }, { "-autosave", ArgFalse, (void *) &appData.autoSaveGames, FALSE, INVALID }, + { "onlyOwnGames", ArgBoolean, (void *) &appData.onlyOwn, TRUE, (ArgIniType) FALSE }, { "loadPositionFile", ArgFilename, (void *) &appData.loadPositionFile, FALSE, (ArgIniType) "" }, { "lpf", ArgFilename, (void *) &appData.loadPositionFile, FALSE, INVALID }, { "loadPositionIndex", ArgInt, (void *) &appData.loadPositionIndex, FALSE, (ArgIniType) 1 }, @@ -487,6 +490,7 @@ ArgDescriptor argDescriptors[] = { { "at", ArgSettingsFilename, (void *) NULL, FALSE, INVALID }, { "opt", ArgSettingsFilename, (void *) NULL, FALSE, INVALID }, { "saveSettingsFile", ArgFilename, (void *) &settingsFileName, FALSE, INVALID }, + { "backupSettingsFile", ArgBackupSettingsFile, (void *) &settingsFileName, FALSE, INVALID }, { "saveSettingsOnExit", ArgBoolean, (void *) &saveSettingsOnExit, TRUE, (ArgIniType) TRUE }, { "chessProgram", ArgBoolean, (void *) &chessProgram, FALSE, (ArgIniType) FALSE }, { "cp", ArgTrue, (void *) &chessProgram, FALSE, INVALID }, @@ -593,6 +597,7 @@ ArgDescriptor argDescriptors[] = { { "useBorder", ArgBoolean, (void *) &appData.useBorder, TRUE, (ArgIniType) FALSE }, { "ub", ArgBoolean, (void *) &appData.useBorder, FALSE, INVALID }, { "border", ArgFilename, (void *) &appData.border, TRUE, (ArgIniType) "" }, + { "finger", ArgFilename, (void *) &appData.finger, FALSE, (ArgIniType) "" }, // [HGM] tournament options { "tourneyFile", ArgFilename, (void *) &appData.tourneyFile, FALSE, (ArgIniType) "" }, @@ -769,6 +774,12 @@ ArgDescriptor argDescriptors[] = { { "gameListY", ArgY, (void *) &wpGameList.y, TRUE, (ArgIniType) CW_USEDEFAULT }, { "gameListW", ArgInt, (void *) &wpGameList.width, TRUE, (ArgIniType) CW_USEDEFAULT }, { "gameListH", ArgInt, (void *) &wpGameList.height, TRUE, (ArgIniType) CW_USEDEFAULT }, +#if XBOARD + { "slaveX", ArgX, (void *) &wpDualBoard.x, TRUE, (ArgIniType) CW_USEDEFAULT }, + { "slaveY", ArgY, (void *) &wpDualBoard.y, TRUE, (ArgIniType) CW_USEDEFAULT }, + { "slaveW", ArgInt, (void *) &wpDualBoard.width, FALSE, (ArgIniType) CW_USEDEFAULT }, + { "slaveH", ArgInt, (void *) &wpDualBoard.height, FALSE, (ArgIniType) CW_USEDEFAULT }, +#endif /* [AS] Layout stuff */ { "moveHistoryUp", ArgBoolean, (void *) &wpMoveHistory.visible, TRUE, (ArgIniType) TRUE }, { "moveHistoryX", ArgX, (void *) &wpMoveHistory.x, TRUE, (ArgIniType) CW_USEDEFAULT }, @@ -909,8 +920,10 @@ ParseArgs(GetFunc get, void *cl) for (ad = argDescriptors; ad->argName != NULL; ad++) if (strcmp(ad->argName, argName + 1) == 0) break; if (ad->argName == NULL) { + char endChar = (ch && ch != '\n' && (ch = get(cl)) == '{' ? '}' : '\n'); 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 + while (ch != endChar && ch != NULLCHAR) ch = get(cl); // but skip rest of line it is on (or until closing '}' ) + if(ch == '}') ch = get(cl); continue; // so that when it is in a settings file, it is the only setting that will be purged from it } } else if (ch == '@') { @@ -1096,6 +1109,8 @@ ParseArgs(GetFunc get, void *cl) ASSIGN(*(char **) ad->argLoc, argValue); break; + case ArgBackupSettingsFile: // no-op if non-default settings-file already successfully read + if(strcmp(*(char**)ad->argLoc, SETTINGS_FILE)) break; case ArgSettingsFilename: { if (ParseSettingsFile(argValue, (char**)ad->argLoc)) { @@ -1528,6 +1543,7 @@ SaveSettings(char* name) PrintCommPortSettings(f, ad->argName); case ArgTwo: case ArgNone: + case ArgBackupSettingsFile: case ArgSettingsFilename: ; } }