X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=args.h;h=fbf2651a647a318911bc2ce3821207b07eda9d63;hb=adbe3504da7bfecb255bbe854bfc0963c02a743b;hp=e6da21ab28fa950614ec0b3adae467a7dd7da8a5;hpb=a26cd318ed4cf0c45dbd87fc01bef8633ea1dc82;p=xboard.git diff --git a/args.h b/args.h index e6da21a..fbf2651 100644 --- a/args.h +++ b/args.h @@ -103,7 +103,7 @@ IcsTextMenuEntry icsTextMenuEntry[ICS_TEXT_MENU_SIZE]; int junk; Boolean singleList; -char *homeDir; +char *homeDir; void EnsureOnScreen(int *x, int *y, int minX, int minY); char StringGet(void *getClosure); @@ -217,7 +217,7 @@ ArgDescriptor argDescriptors[] = { { "sweepPromotions", ArgBoolean, (void *) &appData.sweepSelect, TRUE, (ArgIniType) FALSE }, { "remoteShell", ArgFilename, (void *) &appData.remoteShell, FALSE, (ArgIniType) REMOTE_SHELL }, { "rsh", ArgFilename, (void *) &appData.remoteShell, FALSE, INVALID }, - { "remoteUser", ArgString, (void *) &appData.remoteUser, FALSE, INVALID }, + { "remoteUser", ArgString, (void *) &appData.remoteUser, FALSE, (ArgIniType) "" }, { "ruser", ArgString, (void *) &appData.remoteUser, FALSE, INVALID }, { "timeDelay", ArgFloat, (void *) &appData.timeDelay, TRUE, INVALID }, { "td", ArgFloat, (void *) &appData.timeDelay, FALSE, INVALID }, @@ -564,9 +564,8 @@ ArgDescriptor argDescriptors[] = { { "userFileDirectory", ArgFilename, (void *) &homeDir, FALSE, (ArgIniType) installDir }, // [HGM] tournament options - { "tourney", ArgFilename, (void *) &appData.tourneyFile, FALSE, (ArgIniType) "" }, + { "tourneyFile", ArgFilename, (void *) &appData.tourneyFile, FALSE, (ArgIniType) "" }, { "tf", ArgFilename, (void *) &appData.tourneyFile, FALSE, INVALID }, - { "processes", ArgString, (void *) &appData.processes, FALSE, (ArgIniType) " " }, { "participants", ArgString, (void *) &appData.participants, FALSE, (ArgIniType) "" }, { "tourneyType", ArgInt, (void *) &appData.tourneyType, FALSE, (ArgIniType) 0 }, { "tt", ArgInt, (void *) &appData.tourneyType, FALSE, INVALID }, @@ -623,6 +622,9 @@ ArgDescriptor argDescriptors[] = { { "secondPgnName", ArgString, (void *) &appData.pgnName[1], FALSE, (ArgIniType) "" }, { "sn", ArgString, (void *) &appData.pgnName[1], FALSE, INVALID }, { "absoluteAnalysisScores", ArgBoolean, (void *) &appData.whitePOV, TRUE, FALSE }, + { "scoreWhite", ArgBoolean, (void *) &appData.scoreWhite, TRUE, FALSE }, + { "fSAN", ArgTrue, (void *) &appData.pvSAN[0], FALSE, FALSE }, + { "sSAN", ArgTrue, (void *) &appData.pvSAN[1], FALSE, FALSE }, { "pairingEngine", ArgFilename, (void *) &appData.pairingEngine, TRUE, "" }, { "defaultTourneyName", ArgFilename, (void *) &appData.defName, TRUE, "" }, @@ -742,7 +744,7 @@ ArgDescriptor argDescriptorIndirection = { "", ArgSettingsFilename, (void *) NULL, FALSE }; void -ExitArgError(char *msg, char *badArg) +ExitArgError(char *msg, char *badArg, Boolean quit) { char buf[MSG_SIZ]; int len; @@ -751,6 +753,7 @@ ExitArgError(char *msg, char *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... DisplayFatalError(buf, 0, 2); exit(2); } @@ -760,7 +763,7 @@ ValidateInt(char *s) { char *p = s; if(*p == '-' || *p == '+') p++; - while(*p) if(!isdigit(*p++)) ExitArgError("Bad integer value", s); + while(*p) if(!isdigit(*p++)) ExitArgError("Bad integer value", s, TRUE); return atoi(s); } @@ -850,9 +853,11 @@ ParseArgs(GetFunc get, void *cl) *q = NULLCHAR; for (ad = argDescriptors; ad->argName != NULL; ad++) if (strcmp(ad->argName, argName + 1) == 0) break; - if (ad->argName == NULL) - ExitArgError("Unrecognized argument", argName); - + if (ad->argName == NULL) { + ExitArgError("Unrecognized argument", 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 + } } else if (ch == '@') { /* Indirection file */ ad = &argDescriptorIndirection; @@ -878,7 +883,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); + ExitArgError("No value provided for argument", argName, TRUE); } q = argValue; if (ch == '{') { @@ -938,7 +943,7 @@ ParseArgs(GetFunc get, void *cl) ch = get(cl); switch (ch) { case NULLCHAR: - ExitArgError("Incomplete \\ escape in value for", argName); + ExitArgError("Incomplete \\ escape in value for", argName, TRUE); break; case 'n': *q++ = '\n'; @@ -1022,7 +1027,7 @@ ParseArgs(GetFunc get, void *cl) } else { if (ad->argLoc != NULL) { } else { - ExitArgError("Failed to open indirection file", argValue); + ExitArgError("Failed to open indirection file", argValue, TRUE); } } } @@ -1039,7 +1044,7 @@ ParseArgs(GetFunc get, void *cl) *(Boolean *) ad->argLoc = FALSE; break; default: - ExitArgError("Unrecognized boolean argument value", argValue); + ExitArgError("Unrecognized boolean argument value", argValue, TRUE); break; } break; @@ -1067,7 +1072,7 @@ ParseArgs(GetFunc get, void *cl) break; case ArgNone: - ExitArgError("Unrecognized argument", argValue); + ExitArgError("Unrecognized argument", argValue, TRUE); break; case ArgTwo: case ArgTrue: