X-Git-Url: http://winboard.nl/cgi-bin?p=xboard.git;a=blobdiff_plain;f=args.h;h=f23f1ab0f5cdc6308122cdcb227d263f06654363;hp=8d07b20d26314d913845144d82fe3c749df6032f;hb=HEAD;hpb=4fc6fe186519313063f3130fce510e55c9cf6f71 diff --git a/args.h b/args.h index 8d07b20..f23f1ab 100644 --- a/args.h +++ b/args.h @@ -223,7 +223,8 @@ ArgDescriptor argDescriptors[] = { { "flashRate", ArgInt, (void *) &appData.flashRate, XBOARD, (ArgIniType) FLASH_RATE }, { "pieceImageDirectory", ArgFilename, (void *) &appData.pieceDirectory, TRUE, (ArgIniType) "" }, { "pid", ArgFilename, (void *) &appData.pieceDirectory, FALSE, INVALID }, - { "trueColors", ArgBoolean, (void *) &appData.trueColors, TRUE, (ArgIniType) FALSE }, + { "trueColors", ArgBoolean, (void *) &appData.trueColors, XBOARD, (ArgIniType) (2*!XBOARD) }, + { "jewelled", ArgInt, (void *) &appData.jewelled, FALSE, (ArgIniType) -1 }, { "soundDirectory", ArgFilename, (void *) &appData.soundDirectory, XBOARD, (ArgIniType) "" }, { "msLoginDelay", ArgInt, (void *) &appData.msLoginDelay, XBOARD, (ArgIniType) MS_LOGIN_DELAY }, { "pasteSelection", ArgBoolean, (void *) &appData.pasteSelection, XBOARD, (ArgIniType) FALSE }, @@ -534,6 +535,7 @@ ArgDescriptor argDescriptors[] = { { "secondScoreAbs", ArgBoolean, (void *) &appData.secondScoreIsAbsolute, FALSE, (ArgIniType) FALSE }, { "pgnExtendedInfo", ArgBoolean, (void *) &appData.saveExtendedInfoInPGN, TRUE, (ArgIniType) FALSE }, { "hideThinkingFromHuman", ArgBoolean, (void *) &appData.hideThinkingFromHuman, TRUE, (ArgIniType) FALSE }, + { "pgnTimeLeft", ArgBoolean, (void *) &appData.cumulativeTimePGN, TRUE, (ArgIniType) FALSE }, { "liteBackTextureFile", ArgFilename, (void *) &appData.liteBackTextureFile, TRUE, (ArgIniType) "" }, { "lbtf", ArgFilename, (void *) &appData.liteBackTextureFile, FALSE, INVALID }, { "darkBackTextureFile", ArgFilename, (void *) &appData.darkBackTextureFile, TRUE, (ArgIniType) "" }, @@ -616,6 +618,7 @@ ArgDescriptor argDescriptors[] = { { "inscriptions", ArgString, (void *) &appData.inscriptions, FALSE, (ArgIniType) "" }, { "autoInstall", ArgString, (void *) &appData.autoInstall, XBOARD, (ArgIniType) "" }, { "fixedSize", ArgBoolean, (void *) &appData.fixedSize, TRUE, (ArgIniType) FALSE }, + { "showMoveTime", ArgBoolean, (void *) &appData.moveTime, TRUE, (ArgIniType) FALSE }, // [HGM] tournament options { "tourneyFile", ArgFilename, (void *) &appData.tourneyFile, FALSE, (ArgIniType) "" }, @@ -960,7 +963,7 @@ ParseArgs(GetFunc get, void *cl) char argValue[MAX_ARG_LEN]; ArgDescriptor *ad; char start; - char *q; + char *q, *r, *s; int i, octval; char ch; int posarg = 4; // default is game file @@ -1240,10 +1243,29 @@ ParseArgs(GetFunc get, void *cl) case ArgInstall: q = *(char **) ad->argLoc; - if((saveDate == 0 || saveDate - dateStamp < 0) && !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); + r = NULL; s = argValue; + if(argValue[0] == '#') { // group specification + r = strstr(argValue, "\\n"); + if(r) *r++ = '\n', *r++ = NULLCHAR, s = r, r = argValue; // split s into line-to-add (s) and group (r) + } + if((saveDate == 0 || saveDate - dateStamp < 0) && !strstr(q, s) ) { // not seen before, and line does not occur yet + int l = strlen(q) + strlen(s); + if(r) { // must be put in group r + char *p = strstr(q, r); + if(p) { // group already exists + p += strlen(r) - 1; // determine insertion point (immediately after group header line) + *(char **) ad->argLoc = malloc(l+2); + *p++ = NULLCHAR; // spit old value (q) at insertion point into q and p + snprintf(*(char **) ad->argLoc, l+2, "%s\n%s\n%s", q, s, p); // insert (with newline) + } else { // group did not exist, create at end + l += strlen(r) + 8; + *(char **) ad->argLoc = malloc(l); + snprintf(*(char **) ad->argLoc, l, "%s%s%s\n# end\n", q, r, s); + } + } else { // no group, just add line at end + *(char **) ad->argLoc = malloc(l+2); + snprintf(*(char **) ad->argLoc, l+2, "%s%s\n", q, s); + } free(q); } break; @@ -1529,11 +1551,10 @@ SaveSettings(char* name) ArgDescriptor *ad; char dir[MSG_SIZ], buf[MSG_SIZ]; int mps = appData.movesPerSession; - TimeMark now; if (!MainWindowUp() && !autoClose) return; - GetTimeMark(&now); saveDate = now.sec; + saveDate = programStartTime.sec; GetCurrentDirectory(MSG_SIZ, dir); if(MySearchPath(installDir, name, buf)) {