Simplify the signature of savefile().
authorEric S. Raymond <esr@thyrsus.com>
Thu, 6 Apr 2023 23:26:04 +0000 (19:26 -0400)
committerEric S. Raymond <esr@thyrsus.com>
Thu, 6 Apr 2023 23:26:04 +0000 (19:26 -0400)
advent.h
cheat.c
main.c
saveresume.c

index f9a6a9ae84f555e335bbf0ffb36f42d8e4a59ca1..3cea5f569f9ac0ad7c5a54ca9c737460bf359a9c 100644 (file)
--- a/advent.h
+++ b/advent.h
@@ -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
diff --git a/cheat.c b/cheat.c
index ebbc1661397b66e8edf43a3041b4a9b688edadf4..1a415b750a173af2f2d61d2067e5ddee9bdb2604 100644 (file)
--- a/cheat.c
+++ b/cheat.c
@@ -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);
 
diff --git a/main.c b/main.c
index 80689e3f5c14f314fdd04c0b3dd4d51e1c1bdd8b..a162463edc251ea9f6cc1af224c706b21753d9e6 100644 (file)
--- a/main.c
+++ b/main.c
@@ -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);
     }
 }
index 0ed8cd37c56a538b1d0834e03474e78c0b091756..0b71319c0dc835368eb95f0df39d1dc6e8f5d292 100644 (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);