remove time_t from struct you (trunk only)
There was an issue reported where save files between different versions of a manufacturer's compiler were incompatible because the time_t ubirthday field was changed from 32 bits to 64 bits. 32 bit time_t implementations will break at 19:14:07 on January 18, 2038. 64 bit time_t implementations will break at 23:59:59 on December 31, 3000. This removes the dependency on the size of time_t from the save file. The ubirthday field is no longer embedded in struct you. This also adds two general purpose routines to hacklib.c, one to convert a time value to a 14 character char representation and the other to convert that back to time_t. Those are used by the save/restore routines. This is a savefile breaking change, so editlevel in patchlevel.h was incremented.
This commit is contained in:
@@ -522,6 +522,7 @@ unsigned int *stuckid, *steedid; /* STEED */
|
||||
struct sysflag newgamesysflags;
|
||||
#endif
|
||||
struct obj *otmp, *tmp_bc;
|
||||
char timebuf[15];
|
||||
int uid;
|
||||
|
||||
mread(fd, (genericptr_t) &uid, sizeof uid);
|
||||
@@ -565,6 +566,9 @@ unsigned int *stuckid, *steedid; /* STEED */
|
||||
amii_setpens(amii_numcolors); /* use colors from save file */
|
||||
#endif
|
||||
mread(fd, (genericptr_t) &u, sizeof(struct you));
|
||||
mread(fd, (genericptr_t) timebuf, 14);
|
||||
ubirthday = time_from_yyyymmddhhmmss(timebuf);
|
||||
|
||||
set_uasmon();
|
||||
#ifdef CLIPPING
|
||||
cliparound(u.ux, u.uy);
|
||||
|
||||
Reference in New Issue
Block a user