Give savefiles an identifting header. SAve format version gets bumped.

This commit is contained in:
Eric S. Raymond 2023-04-06 17:54:02 -04:00
parent 3640e5cb96
commit d16822a583
3 changed files with 9 additions and 6 deletions

View file

@ -233,7 +233,12 @@ typedef struct {
* files afterwards. Otherwise you will get a spurious failure due to the old version * files afterwards. Otherwise you will get a spurious failure due to the old version
* having been generated into a check file. * having been generated into a check file.
*/ */
#define SAVE_VERSION 29 #define SAVE_VERSION 30
/*
* Goes at start of gile so sabes can be identified by file(1) and the like.
*/
#define ADVENT_MAGIC "open-adventure\n"
/* /*
* If you change the first three members, the resume function may not properly * If you change the first three members, the resume function may not properly
@ -241,8 +246,7 @@ typedef struct {
* when you do that. * when you do that.
*/ */
struct save_t { struct save_t {
int64_t savetime; char magic[sizeof(ADVENT_MAGIC)];
int32_t mode; /* not used, must be present for version detection */
int32_t version; int32_t version;
struct game_t game; struct game_t game;
}; };

View file

@ -25,8 +25,7 @@ struct save_t save;
int savefile(FILE *fp, int32_t version) int savefile(FILE *fp, int32_t version)
/* Save game to file. No input or output from user. */ /* Save game to file. No input or output from user. */
{ {
save.savetime = time(NULL); memcpy(&save.magic, ADVENT_MAGIC, sizeof(ADVENT_MAGIC));
save.mode = -1;
save.version = (version == 0) ? SAVE_VERSION : version; save.version = (version == 0) ? SAVE_VERSION : version;
save.game = game; save.game = game;

View file

@ -11,7 +11,7 @@ down a gully.
Can't open file y, try again. Can't open file y, try again.
I'm sorry, but that Adventure was begun using Version -133.-7 of the I'm sorry, but that Adventure was begun using Version -133.-7 of the
save file format, and this program uses Version 2.9. You must find an instance save file format, and this program uses Version 3.0. You must find an instance
using that other version in order to resume that Adventure. using that other version in order to resume that Adventure.
You're in front of building. You're in front of building.