X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=gamelist.c;h=8497192f0c80dab2dfd358e4da3829fb5e5a565a;hb=a3e7cc9b3eb04ffb69fd73b47c06758f73316373;hp=fb10fbe443699e91cdc2ae13ab2455c3006f500d;hpb=ca6061cbffe88ff5eb2332e733e0a534b89cc5e7;p=xboard.git diff --git a/gamelist.c b/gamelist.c index fb10fbe..8497192 100644 --- a/gamelist.c +++ b/gamelist.c @@ -42,6 +42,16 @@ #include "frontend.h" #include "backend.h" #include "parser.h" +#include "moves.h" +#include "gettext.h" + +#ifdef ENABLE_NLS +# define _(s) gettext (s) +# define N_(s) gettext_noop (s) +#else +# define _(s) (s) +# define N_(s) s +#endif /* Variables @@ -217,10 +227,9 @@ int GameListBuild(f) int error, scratch=100, plyNr=0, fromX, fromY, toX, toY; int offset; char lastComment[MSG_SIZ], buf[MSG_SIZ]; -struct { - long sec; /* Assuming this is >= 32 bits */ - int ms; /* Assuming this is >= 16 bits */ -} t,t2; GetTimeMark(&t); + TimeMark t, t2; + + GetTimeMark(&t); GameListFree(&gameList); yynewfile(f); gameNumber = 0; @@ -342,7 +351,7 @@ struct { toY = currentMoveString[3] - ONE; plyNr++; ApplyMove(fromX, fromY, toX, toY, currentMoveString[4], boards[scratch]); - if(currentListGame->moves) PackMove(fromX, fromY, toX, toY, boards[scratch][toY][toX]); + if(currentListGame && currentListGame->moves) PackMove(fromX, fromY, toX, toY, boards[scratch][toY][toX]); break; case WhiteWins: // [HGM] rescom: save last comment as result details case BlackWins: @@ -352,22 +361,24 @@ struct { if (currentListGame->gameInfo.resultDetails != NULL) { free(currentListGame->gameInfo.resultDetails); } - if(yy_text[0] == '{') { char *p; - safeStrCpy(lastComment, yy_text+1, sizeof(lastComment)/sizeof(lastComment[0])); - if(p = strchr(lastComment, '}')) *p = 0; - currentListGame->gameInfo.resultDetails = StrSave(lastComment); + if(yy_text[0] == '{') { + char *p; + safeStrCpy(lastComment, yy_text+1, sizeof(lastComment)/sizeof(lastComment[0])); + if((p = strchr(lastComment, '}'))) *p = 0; + currentListGame->gameInfo.resultDetails = StrSave(lastComment); } break; default: break; } if(gameNumber % 1000 == 0) { - snprintf(buf, MSG_SIZ,"Reading game file (%d)", gameNumber); + snprintf(buf, MSG_SIZ, _("Reading game file (%d)"), gameNumber); DisplayTitle(buf); } } while (cm != (ChessMove) 0); + if(currentListGame) { if(!currentListGame->moves) DisplayError("Game cache overflowed\nPosition-searching might not work properly", 0); if (appData.debugMode) { @@ -380,7 +391,8 @@ struct { PrintPGNTags(debugFP, ¤tListGame->gameInfo); } } -GetTimeMark(&t2);printf("GameListBuild %d msec\n", SubtractTimeMarks(&t2,&t)); + } +GetTimeMark(&t2);printf("GameListBuild %ld msec\n", SubtractTimeMarks(&t2,&t)); quickFlag = 0; PackGame(boards[scratch]); // for appending end-of-game marker. DisplayTitle("WinBoard");