X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=args.h;h=147f8bb1ecc83203a8554dd18ba529c7deed7bb7;hb=634be1ecc596d406ee5ea6f22194ef3b6348f42d;hp=0ae9f7c5fcd103bf323bcf6f4f08c1066894247f;hpb=ee7ad29e757ab4f99b8b776ce7e8ebee5081767a;p=xboard.git diff --git a/args.h b/args.h index 0ae9f7c..147f8bb 100644 --- a/args.h +++ b/args.h @@ -104,6 +104,9 @@ IcsTextMenuEntry icsTextMenuEntry[ICS_TEXT_MENU_SIZE]; int junk; Boolean singleList; char *homeDir; +char *firstEngineLine; +char *secondEngineLine; +char *icsNick; void EnsureOnScreen(int *x, int *y, int minX, int minY); char StringGet(void *getClosure); @@ -141,6 +144,7 @@ ArgDescriptor argDescriptors[] = { { "opt", ArgSettingsFilename, (void *) NULL, FALSE, INVALID }, { "loadPositionFile", ArgFilename, (void *) &appData.loadPositionFile, FALSE, INVALID }, { "tourneyFile", ArgFilename, (void *) &appData.tourneyFile, FALSE, INVALID }, + { "is", ArgString, (void *) &icsNick, FALSE, INVALID }, { "loadGameFile", ArgFilename, (void *) &appData.loadGameFile, FALSE, INVALID }, { "", ArgNone, NULL, FALSE, INVALID }, /* keyword arguments */ @@ -172,6 +176,8 @@ ArgDescriptor argDescriptors[] = { { "secondChessProgram", ArgFilename, (void *) &appData.secondChessProgram, FALSE, (ArgIniType) SECOND_CHESS_PROGRAM }, { "scp", ArgFilename, (void *) &appData.secondChessProgram, FALSE, INVALID }, + { "fe", ArgString, (void *) &firstEngineLine, FALSE, "" }, + { "se", ArgString, (void *) &secondEngineLine, FALSE, "" }, { "firstPlaysBlack", ArgBoolean, (void *) &appData.firstPlaysBlack, FALSE, FALSE }, { "fb", ArgTrue, (void *) &appData.firstPlaysBlack, FALSE, FALSE }, { "xfb", ArgFalse, (void *) &appData.firstPlaysBlack, FALSE, INVALID }, @@ -209,6 +215,8 @@ ArgDescriptor argDescriptors[] = { { "pixmap", ArgFilename, (void *) &appData.pixmapDirectory, FALSE, INVALID }, { "bitmapDirectory", ArgFilename, (void *) &appData.bitmapDirectory, XBOARD, (ArgIniType) "" }, { "bm", ArgFilename, (void *) &appData.bitmapDirectory, FALSE, INVALID }, + { "pngDirectory", ArgFilename, (void *) &appData.pngDirectory, XBOARD, (ArgIniType) "" }, + { "png", ArgFilename, (void *) &appData.pngDirectory, FALSE, INVALID }, { "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 }, @@ -224,12 +232,13 @@ ArgDescriptor argDescriptors[] = { { "td", ArgFloat, (void *) &appData.timeDelay, FALSE, INVALID }, { "timeControl", ArgString, (void *) &appData.timeControl, TRUE, (ArgIniType) TIME_CONTROL }, { "tc", ArgString, (void *) &appData.timeControl, FALSE, INVALID }, - { "timeIncrement", ArgFloat, (void *) &appData.timeIncrement, TRUE, INVALID }, + { "timeIncrement", ArgFloat, (void *) &appData.timeIncrement, FALSE, INVALID }, { "inc", ArgFloat, (void *) &appData.timeIncrement, FALSE, INVALID }, { "internetChessServerMode", ArgBoolean, (void *) &appData.icsActive, FALSE, INVALID }, { "ics", ArgTrue, (void *) &appData.icsActive, FALSE, (ArgIniType) FALSE }, { "xics", ArgFalse, (void *) &appData.icsActive, FALSE, INVALID }, { "-ics", ArgFalse, (void *) &appData.icsActive, FALSE, INVALID }, + { "is", ArgString, (void *) &icsNick, FALSE, "" }, { "internetChessServerHost", ArgString, (void *) &appData.icsHost, FALSE, (ArgIniType) "" }, { "icshost", ArgString, (void *) &appData.icsHost, FALSE, INVALID }, { "internetChessServerPort", ArgString, (void *) &appData.icsPort, FALSE, (ArgIniType) ICS_PORT }, @@ -542,12 +551,12 @@ ArgDescriptor argDescriptors[] = { { "fUCI", ArgTrue, (void *) &appData.firstIsUCI, FALSE, INVALID }, { "firstUCI", ArgTrue, (void *) &appData.firstIsUCI, FALSE, INVALID }, { "secondIsUCI", ArgBoolean, (void *) &appData.secondIsUCI, FALSE, (ArgIniType) FALSE }, + { "secondUCI", ArgTrue, (void *) &appData.secondIsUCI, FALSE, INVALID }, { "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 }, { "firstXBook", ArgFalse, (void *) &appData.firstHasOwnBookUCI, FALSE, INVALID }, @@ -733,10 +742,6 @@ ArgDescriptor argDescriptors[] = { { "icsY", ArgY, (void *) &wpConsole.y, TRUE, (ArgIniType) CW_USEDEFAULT }, { "icsW", ArgInt, (void *) &wpConsole.width, TRUE, (ArgIniType) CW_USEDEFAULT }, { "icsH", ArgInt, (void *) &wpConsole.height, TRUE, (ArgIniType) CW_USEDEFAULT }, - { "analysisX", ArgX, (void *) &junk, FALSE, INVALID }, // [HGM] placement: analysis window no longer exists - { "analysisY", ArgY, (void *) &junk, FALSE, INVALID }, // provided for compatibility with old ini files - { "analysisW", ArgInt, (void *) &junk, FALSE, INVALID }, - { "analysisH", ArgInt, (void *) &junk, FALSE, INVALID }, { "commentX", ArgX, (void *) &wpComment.x, TRUE, (ArgIniType) CW_USEDEFAULT }, { "commentY", ArgY, (void *) &wpComment.y, TRUE, (ArgIniType) CW_USEDEFAULT }, { "commentW", ArgInt, (void *) &wpComment.width, TRUE, (ArgIniType) CW_USEDEFAULT }, @@ -865,7 +870,7 @@ ParseArgs(GetFunc get, void *cl) char *q; int i, octval; char ch; - int posarg = 3; // default is game file + int posarg = 4; // default is game file ch = get(cl); for (;;) { @@ -1041,6 +1046,8 @@ ParseArgs(GetFunc get, void *cl) appData.viewer = TRUE; } else if(!strcasecmp(argValue + len, ".ini") || !strcasecmp(argValue + len, ".xop")) { ad = &argDescriptors[0]; // correct implied type to -opt + } else if(GetEngineLine(argValue, 11)) { + ad = &argDescriptors[3]; // correct implied type to -is } else { // keep default -lgf, but let it imply viewer mode as well appData.viewer = TRUE; } @@ -1269,7 +1276,7 @@ InitAppData(char *lpCmdLine) // float: casting to int is not harmless, so default cannot be contained in table appData.timeDelay = TIME_DELAY; - appData.timeIncrement = TIME_INCREMENT; + appData.timeIncrement = -314159; // some complex, platform-dependent stuff that could not be handled from table SetDefaultTextAttribs(); @@ -1284,6 +1291,8 @@ InitAppData(char *lpCmdLine) if(appData.viewer && appData.viewerOptions[0]) ParseArgsFromString(appData.viewerOptions); if(appData.tourney && appData.tourneyOptions[0]) ParseArgsFromString(appData.tourneyOptions); + chessProgram |= GetEngineLine(firstEngineLine, 0) || GetEngineLine(secondEngineLine, 1); + appData.icsActive |= GetEngineLine(icsNick, 10); /* [HGM] make sure board size is acceptable */ if(appData.NrFiles > BOARD_FILES || @@ -1335,6 +1344,12 @@ InitAppData(char *lpCmdLine) if (appData.icsActive || appData.noChessProgram) { chessProgram = FALSE; /* not local chess program mode */ } + if(appData.timeIncrement == -314159) { // new storage mechanism of (mps,inc) in use and no -inc on command line + if(appData.movesPerSession <= 0) { // new encoding of incremental mode + appData.timeIncrement = -appData.movesPerSession/1000.; + } else appData.timeIncrement = -1; + } + if(appData.movesPerSession <= 0) appData.movesPerSession = MOVES_PER_SESSION; // mps <= 0 is invalid in any case /* Open startup dialog if needed */ if ((!appData.noChessProgram && !chessProgram && !appData.icsActive) || @@ -1380,6 +1395,7 @@ SaveSettings(char* name) FILE *f; ArgDescriptor *ad; char dir[MSG_SIZ], buf[MSG_SIZ]; + int mps = appData.movesPerSession; if (!MainWindowUp()) return; @@ -1418,6 +1434,8 @@ SaveSettings(char* name) // [HGM] in WB we have to copy sound names to appData first ExportSounds(); + if(appData.timeIncrement >= 0) appData.movesPerSession = -1000*appData.timeIncrement; // kludge to store mps & inc as one + for (ad = argDescriptors; ad->argName != NULL; ad++) { if (!ad->save) continue; switch (ad->argType) { @@ -1499,6 +1517,7 @@ SaveSettings(char* name) } } fclose(f); + appData.movesPerSession = mps; } Boolean