typedef enum {
ArgString, ArgInt, ArgFloat, ArgBoolean, ArgTrue, ArgFalse, ArgNone,
ArgColor, ArgAttribs, ArgFilename, ArgBoardSize, ArgFont, ArgCommSettings,
- ArgSettingsFilename,
+ ArgSettingsFilename, ArgTwo,
ArgX, ArgY, ArgZ // [HGM] placement: for window-placement options stored relative to main window
} ArgType;
int junk;
Boolean singleList;
+char *homeDir;\r
void EnsureOnScreen(int *x, int *y, int minX, int minY);
char StringGet(void *getClosure);
{ "popUpErrors", ArgBoolean, (void *) &appData.popupMoveErrors,
FALSE, INVALID }, /* only so that old WinBoard.ini files from betas can be read */
{ "clockFont", ArgFont, (void *) CLOCK_FONT, TRUE, INVALID },
- { "messageFont", ArgFont, (void *) MESSAGE_FONT, !XBOARD, INVALID },
- { "font", ArgFont, (void *) MESSAGE_FONT, XBOARD, INVALID },
+ { "messageFont", ArgFont, (void *) MESSAGE_FONT, TRUE, INVALID },
+ { "font", ArgFont, (void *) MESSAGE_FONT, FALSE, INVALID }, /* only so that old .xboardrc files will parse. -font does not work from the command line because it is captured by the X libraries. */
{ "coordFont", ArgFont, (void *) COORD_FONT, TRUE, INVALID },
{ "tagsFont", ArgFont, (void *) EDITTAGS_FONT, TRUE, INVALID },
{ "commentFont", ArgFont, (void *) COMMENT_FONT, TRUE, INVALID },
{ "firstUCI", ArgTrue, (void *) &appData.firstIsUCI, FALSE, INVALID },
{ "secondIsUCI", ArgBoolean, (void *) &appData.secondIsUCI, FALSE, (ArgIniType) FALSE },
{ "sUCI", ArgTrue, (void *) &appData.secondIsUCI, FALSE, INVALID },
+ { "fUCCI", ArgTwo, (void *) &appData.firstIsUCI, FALSE, INVALID },
+ { "sUCCI", ArgTwo, (void *) &appData.secondIsUCI, FALSE, INVALID },
+ { "fUSI", ArgTwo, (void *) &appData.firstIsUCI, FALSE, INVALID },
+ { "sUSI", ArgTwo, (void *) &appData.secondIsUCI, FALSE, INVALID },
{ "secondUCI", ArgTrue, (void *) &appData.secondIsUCI, FALSE, INVALID },
{ "firstHasOwnBookUCI", ArgBoolean, (void *) &appData.firstHasOwnBookUCI, FALSE, (ArgIniType) TRUE },
{ "fNoOwnBookUCI", ArgFalse, (void *) &appData.firstHasOwnBookUCI, FALSE, INVALID },
{ "sNoOwnBookUCI", ArgFalse, (void *) &appData.secondHasOwnBookUCI, FALSE, INVALID },
{ "secondXBook", ArgFalse, (void *) &appData.secondHasOwnBookUCI, FALSE, INVALID },
{ "adapterCommand", ArgFilename, (void *) &appData.adapterCommand, TRUE, (ArgIniType) "polyglot -noini -ec \"%fcp\" -ed \"%fd\"" },
+ { "uxiAdapter", ArgFilename, (void *) &appData.ucciAdapter, TRUE, (ArgIniType) "" },
{ "polyglotDir", ArgFilename, (void *) &appData.polyglotDir, TRUE, (ArgIniType) "" },
{ "usePolyglotBook", ArgBoolean, (void *) &appData.usePolyglotBook, TRUE, (ArgIniType) FALSE },
{ "polyglotBook", ArgFilename, (void *) &appData.polyglotBook, TRUE, (ArgIniType) "" },
{ "defaultCacheSizeEGTB", ArgInt, (void *) &appData.defaultCacheSizeEGTB, TRUE, (ArgIniType) 4 },
{ "defaultPathEGTB", ArgFilename, (void *) &appData.defaultPathEGTB, TRUE, (ArgIniType) "c:\\egtb" },
{ "language", ArgFilename, (void *) &appData.language, TRUE, (ArgIniType) "" },
+ { "userFileDirectory", ArgFilename, (void *) &homeDir, FALSE, (ArgIniType) installDir },
// [HGM] tournament options
{ "tourney", ArgFilename, (void *) &appData.tourneyFile, FALSE, (ArgIniType) "" },
{ "icstype", ArgInt, (void *) &ics_type, FALSE, INVALID },
{ "forceIllegalMoves", ArgTrue, (void *) &appData.forceIllegal, FALSE, INVALID },
{ "showTargetSquares", ArgBoolean, (void *) &appData.markers, TRUE, 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) "" },
+ { "sn", ArgString, (void *) &appData.pgnName[1], FALSE, INVALID },
+ { "absoluteAnalysisScores", ArgBoolean, (void *) &appData.whitePOV, TRUE, FALSE },
+ { "pairingEngine", ArgFilename, (void *) &appData.pairingEngine, TRUE, "" },
+ { "defaultTourneyName", ArgFilename, (void *) &appData.defName, TRUE, "" },
#if ZIPPY
{ "zippyTalk", ArgBoolean, (void *) &appData.zippyTalk, FALSE, (ArgIniType) ZIPPY_TALK },
f = fopen(fullname, "r");
if (f != NULL) {
if (addr != NULL) {
- *addr = strdup(fullname);
+ ASSIGN(*addr, fullname);
}
ParseArgs(FileGet, f);
fclose(f);
strncpy(argName, ad->argName,sizeof(argName)/sizeof(argName[0]));
}
+ if (ad->argType == ArgTwo) { // [HGM] kludgey arg type, not suitable for saving
+ *(Boolean *) ad->argLoc = 2;
+ continue;
+ }
if (ad->argType == ArgTrue) {
*(Boolean *) ad->argLoc = TRUE;
continue;
case ArgString:
case ArgFilename:
- *(char **) ad->argLoc = strdup(argValue);
+ ASSIGN(*(char **) ad->argLoc, argValue);
break;
case ArgSettingsFilename:
case ArgNone:
ExitArgError("Unrecognized argument", argValue);
break;
+ case ArgTwo:
case ArgTrue:
case ArgFalse: ;
}
if(argDescriptors[i].defaultValue != INVALID)
switch(argDescriptors[i].argType) {
case ArgBoolean:
+ case ArgTwo:
case ArgTrue:
case ArgFalse:
*(Boolean *) argDescriptors[i].argLoc = (int)(intptr_t)argDescriptors[i].defaultValue;
case ArgString:
case ArgFilename:
case ArgSettingsFilename:
- *(char **) argDescriptors[i].argLoc = (char *)argDescriptors[i].defaultValue;
+ if((char *)argDescriptors[i].defaultValue)
+ *(char **) argDescriptors[i].argLoc = strdup((char *)argDescriptors[i].defaultValue);
break;
case ArgBoardSize:
*(int *) argDescriptors[i].argLoc = (int)(intptr_t)argDescriptors[i].defaultValue;
break;
case ArgCommSettings:
PrintCommPortSettings(f, ad->argName);
+ case ArgTwo:
case ArgNone:
case ArgSettingsFilename: ;
}