From 8c41a962a7bde86a26111fcd371a61567765113e Mon Sep 17 00:00:00 2001 From: Pasi Kallinen Date: Fri, 17 Apr 2015 10:35:05 +0300 Subject: [PATCH] Fix saving xlogfile realtime --- include/patchlevel.h | 2 +- include/you.h | 2 +- src/allmain.c | 2 +- src/end.c | 2 +- src/restore.c | 2 +- src/save.c | 4 ++-- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/include/patchlevel.h b/include/patchlevel.h index 0665df6fe..ec56f36e1 100644 --- a/include/patchlevel.h +++ b/include/patchlevel.h @@ -14,7 +14,7 @@ * Incrementing EDITLEVEL can be used to force invalidation of old bones * and save files. */ -#define EDITLEVEL 61 +#define EDITLEVEL 62 #define COPYRIGHT_BANNER_A \ "NetHack, Copyright 1985-2015" diff --git a/include/you.h b/include/you.h index 11ba9079e..87291479c 100644 --- a/include/you.h +++ b/include/you.h @@ -67,7 +67,7 @@ struct u_achieve { }; struct u_realtime { - time_t realtime; /* actual playing time up until the last restore */ + long realtime; /* actual playing time up until the last restore, seconds */ time_t restored; /* time the game was started or restored */ time_t endtime; }; diff --git a/src/allmain.c b/src/allmain.c index 7a2ebe675..2c874d29d 100644 --- a/src/allmain.c +++ b/src/allmain.c @@ -537,7 +537,7 @@ newgame() #endif program_state.something_worth_saving++; /* useful data now exists */ - urealtime.realtime = (time_t)0L; + urealtime.realtime = 0L; #if defined(BSD) && !defined(POSIX_TYPES) (void) time((long *)&urealtime.restored); #else diff --git a/src/end.c b/src/end.c index 9767e0481..38c83f378 100644 --- a/src/end.c +++ b/src/end.c @@ -916,7 +916,7 @@ die: topten figure it out separately and possibly getting different time or even day if player is slow responding to --More-- */ endtime = getnow(); - urealtime.realtime += (endtime - urealtime.restored); + urealtime.realtime += (long)(endtime - urealtime.restored); /* Sometimes you die on the first move. Life's not fair. * On those rare occasions you get hosed immediately, go out diff --git a/src/restore.c b/src/restore.c index 1caab6108..094820208 100644 --- a/src/restore.c +++ b/src/restore.c @@ -568,7 +568,7 @@ unsigned int *stuckid, *steedid; foo = time_from_yyyymmddhhmmss(timebuf); ReadTimebuf(ubirthday); - ReadTimebuf(urealtime.realtime); + mread(fd, &urealtime.realtime, sizeof(urealtime.realtime)); ReadTimebuf(urealtime.restored); #if defined(BSD) && !defined(POSIX_TYPES) (void) time((long *)&urealtime.restored); diff --git a/src/save.c b/src/save.c index 673a37c1f..ed0047698 100644 --- a/src/save.c +++ b/src/save.c @@ -307,10 +307,10 @@ register int fd, mode; #ifdef SYSFLAGS bwrite(fd, (genericptr_t) &sysflags, sizeof(struct sysflag)); #endif - urealtime.realtime += (getnow() - urealtime.restored); + urealtime.realtime += (long)(getnow() - urealtime.restored); bwrite(fd, (genericptr_t) &u, sizeof(struct you)); bwrite(fd, yyyymmddhhmmss(ubirthday), 14); - bwrite(fd, yyyymmddhhmmss(urealtime.realtime), 14); + bwrite(fd, (genericptr_t) &urealtime.realtime, sizeof(urealtime.realtime)); bwrite(fd, yyyymmddhhmmss(urealtime.restored), 14); save_killers(fd, mode);