typedef enum {
ArgString, ArgInt, ArgFloat, ArgBoolean, ArgTrue, ArgFalse, ArgNone,
ArgColor, ArgAttribs, ArgFilename, ArgBoardSize, ArgFont, ArgCommSettings,
- ArgSettingsFilename, ArgBackupSettingsFile, ArgTwo,
+ ArgSettingsFilename, ArgBackupSettingsFile, ArgTwo, ArgInstall,
ArgX, ArgY, ArgZ // [HGM] placement: for window-placement options stored relative to main window
} ArgType;
{ "soundSeek", ArgFilename, (void *) &appData.soundSeek, TRUE, (ArgIniType) "" },
{ "soundMove", ArgFilename, (void *) &appData.soundMove, TRUE, (ArgIniType) "" },
{ "soundBell", ArgFilename, (void *) &appData.soundBell, TRUE, (ArgIniType) SOUND_BELL },
+ { "soundRoar", ArgFilename, (void *) &appData.soundRoar, TRUE, (ArgIniType) "" },
{ "soundIcsWin", ArgFilename, (void *) &appData.soundIcsWin, TRUE, (ArgIniType) "" },
{ "soundIcsLoss", ArgFilename, (void *) &appData.soundIcsLoss, TRUE, (ArgIniType) "" },
{ "soundIcsDraw", ArgFilename, (void *) &appData.soundIcsDraw, TRUE, (ArgIniType) "" },
{ "secondChessProgramNames", ArgString, (void *) &secondChessProgramNames,
!XBOARD, (ArgIniType) SCP_NAMES },
{ "themeNames", ArgString, (void *) &appData.themeNames, !XBOARD, (ArgIniType) "native -upf false -ub false -ubt false -pid \"\"\n" },
+ { "installEngine", ArgInstall, (void *) &firstChessProgramNames, FALSE, (ArgIniType) "" },
{ "initialMode", ArgString, (void *) &appData.initialMode, FALSE, (ArgIniType) "" },
{ "mode", ArgString, (void *) &appData.initialMode, FALSE, INVALID },
{ "variant", ArgString, (void *) &appData.variant, FALSE, (ArgIniType) "normal" },
}
if (ok) {
f = fopen(fullname, "r");
+#ifdef DATADIR
+ if(f == NULL && *fullname != '/') { // when a relative name did not work
+ MySearchPath(DATADIR "/themes/conf", name, fullname); // also look in standard place
+ f = fopen(fullname, "r");
+ }
+#endif
if (f != NULL) {
if (addr != NULL) {
ASSIGN(*addr, fullname);
case ArgString:
case ArgFilename:
+#ifdef DATADIR
+ if(argValue[0] == '~' && argValue[1] == '~') {
+ char buf[4*MSG_SIZ]; // expand ~~
+ snprintf(buf, 4*MSG_SIZ, DATADIR "%s", argValue+2);
+ ASSIGN(*(char **) ad->argLoc, buf);
+ break;
+ }
+#endif
ASSIGN(*(char **) ad->argLoc, argValue);
break;
ParseCommPortSettings(argValue);
break;
+ case ArgInstall:
+ q = *(char **) ad->argLoc;
+ if((strcmp(version, VERSION) || autoClose) && !strstr(q, argValue) ) {
+ int l = strlen(q) + strlen(argValue);
+ *(char **) ad->argLoc = malloc(l+2);
+ snprintf(*(char **) ad->argLoc, l+2, "%s%s\n", q, argValue);
+ free(q);
+ }
+ break;
+
case ArgNone:
ExitArgError(_("Unrecognized argument %s"), argValue, TRUE);
break;
case ArgNone:
case ArgBackupSettingsFile:
case ArgSettingsFilename: ;
+ case ArgInstall: ;
}
}
fclose(f);