Simplify the signature of savefile().

This commit is contained in:
Eric S. Raymond 2023-04-06 19:26:04 -04:00
parent 58cf204eba
commit 4b08b726f9
4 changed files with 10 additions and 9 deletions

View file

@ -248,6 +248,7 @@ typedef struct {
struct save_t {
char magic[sizeof(ADVENT_MAGIC)];
int32_t version;
int32_t canary;
struct game_t game;
};
@ -277,7 +278,7 @@ extern void set_seed(int32_t);
extern int32_t randrange(int32_t);
extern int score(enum termination);
extern void terminate(enum termination) __attribute__((noreturn));
extern int savefile(FILE *, int32_t);
extern int savefile(FILE *);
#if defined ADVENT_AUTOSAVE
extern void autosave(void);
#endif

View file

@ -19,7 +19,6 @@ int main(int argc, char *argv[])
{
int ch;
char *savefilename = NULL;
int version = 0;
FILE *fp = NULL;
// Initialize game variables
@ -59,8 +58,8 @@ int main(int argc, char *argv[])
printf("cheat: game.turns = %d\n", game.turns);
break;
case 'v':
version = atoi(optarg);
printf("cheat: version = %d\n", version);
save.version = atoi(optarg);
printf("cheat: version = %d\n", save.version);
break;
case 'o':
savefilename = optarg;
@ -89,7 +88,7 @@ int main(int argc, char *argv[])
exit(EXIT_FAILURE);
}
savefile(fp, version);
savefile(fp);
fclose(fp);

2
main.c
View file

@ -24,7 +24,7 @@ void autosave(void)
{
if (autosave_fp != NULL) {
rewind(autosave_fp);
savefile(autosave_fp, /* version (auto): */0);
savefile(autosave_fp);
fflush(autosave_fp);
}
}

View file

@ -22,11 +22,12 @@ struct save_t save;
#define IGNORE(r) do{if (r){}}while(0)
int savefile(FILE *fp, int32_t version)
int savefile(FILE *fp)
/* Save game to file. No input or output from user. */
{
memcpy(&save.magic, ADVENT_MAGIC, sizeof(ADVENT_MAGIC));
save.version = (version == 0) ? SAVE_VERSION : version;
if (save.version == 0)
save.version = SAVE_VERSION;
save.game = game;
IGNORE(fwrite(&save, sizeof(struct save_t), 1, fp));
@ -84,7 +85,7 @@ int suspend(void)
free(name);
}
savefile(fp, SAVE_VERSION);
savefile(fp);
fclose(fp);
rspeak(RESUME_HELP);
exit(EXIT_SUCCESS);