1.1 --- a/src/chess/rules.c Wed Apr 16 20:32:25 2014 +0200 1.2 +++ b/src/chess/rules.c Wed Apr 16 21:16:05 2014 +0200 1.3 @@ -48,17 +48,20 @@ 1.4 elem->next = NULL; 1.5 elem->move = *move; 1.6 1.7 - gettimeofday(&(elem->move.timestamp), NULL); 1.8 + struct timeval curtimestamp; 1.9 + gettimeofday(&curtimestamp, NULL); 1.10 + elem->move.timestamp.tv_sec = curtimestamp.tv_sec; 1.11 + elem->move.timestamp.tv_usec = curtimestamp.tv_usec; 1.12 1.13 if (gamestate->lastmove) { 1.14 - struct timeval *lasttstamp = &(gamestate->lastmove->move.timestamp); 1.15 - time_t sec = elem->move.timestamp.tv_sec - lasttstamp->tv_sec; 1.16 + struct movetimeval *lasttstamp = &(gamestate->lastmove->move.timestamp); 1.17 + uint64_t sec = curtimestamp.tv_sec - lasttstamp->tv_sec; 1.18 suseconds_t micros; 1.19 - if (elem->move.timestamp.tv_usec < lasttstamp->tv_usec) { 1.20 - micros = 1e6L-(lasttstamp->tv_usec - elem->move.timestamp.tv_usec); 1.21 + if (curtimestamp.tv_usec < lasttstamp->tv_usec) { 1.22 + micros = 1e6L-(lasttstamp->tv_usec - curtimestamp.tv_usec); 1.23 sec--; 1.24 } else { 1.25 - micros = elem->move.timestamp.tv_usec - lasttstamp->tv_usec; 1.26 + micros = curtimestamp.tv_usec - lasttstamp->tv_usec; 1.27 } 1.28 1.29 elem->move.movetime.tv_sec = sec; 1.30 @@ -559,7 +562,7 @@ 1.31 while (movelist) { 1.32 time += gameinfo->addtime; 1.33 1.34 - struct timeval *movetime = &(movelist->move.movetime); 1.35 + struct movetimeval *movetime = &(movelist->move.movetime); 1.36 if (movetime->tv_sec >= time) { 1.37 return 0; 1.38 } 1.39 @@ -573,7 +576,7 @@ 1.40 time_t sec; 1.41 movelist = gamestate->lastmove; 1.42 if ((movelist->move.piece & COLOR_MASK) != color) { 1.43 - struct timeval *lastmovetstamp = &(movelist->move.timestamp); 1.44 + struct movetimeval *lastmovetstamp = &(movelist->move.timestamp); 1.45 struct timeval currenttstamp; 1.46 gettimeofday(¤ttstamp, NULL); 1.47 micros += currenttstamp.tv_usec - lastmovetstamp->tv_usec;