X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=saveresume.c;h=23050778b00c1fb0420a773c1f952b46025d7784;hb=b30059bb72674b9470a6610c4b65704bc39f1ccd;hp=f02132103389142810d593043073349b7369317f;hpb=5ce427b62b7f15c5629fecf5bd948ab89407882f;p=open-adventure.git diff --git a/saveresume.c b/saveresume.c index f021321..2305077 100644 --- a/saveresume.c +++ b/saveresume.c @@ -11,19 +11,25 @@ #include #include -#include #include #include #include "advent.h" #include "dungeon.h" -#define VRSION 28 /* bump on save format change */ +/* + * Bump on save format change. + * + * Note: Verify that the tests run clean before bumping this, then rebuild the check + * files afterwards. Otherwise you will get a spurious failure due to the old version + * having been generated into a check file. + */ +#define VRSION 29 /* * If you change the first three members, the resume function may not properly * reject saves from older versions. Yes, this glues us to a hardware- - * dependent length of long. Later members can change, but bump the version + * dependent length of int. Later members can change, but bump the version * when you do that. */ struct save_t { @@ -67,7 +73,7 @@ int suspend(void) game.saved = game.saved + 5; while (fp == NULL) { - char* name = readline("\nFile name: "); + char* name = myreadline("\nFile name: "); if (name == NULL) return GO_TOP; fp = fopen(name, WRITE_MODE); @@ -100,7 +106,10 @@ int resume(void) } while (fp == NULL) { - char* name = readline("\nFile name: "); + char* name = myreadline("\nFile name: "); + // Autocomplete can leave the input with an extra trailing space. + if (name != NULL && strlen(name) > 0 && name[strlen(name) - 1] == ' ') + name[strlen(name) - 1] = '\0'; if (name == NULL) return GO_TOP; fp = fopen(name, READ_MODE); @@ -146,7 +155,7 @@ bool is_valid(struct game_t valgame) /* Check for RNG overflow. Truncate */ if (valgame.lcg_x >= LCG_M) { - valgame.lcg_x %= LCG_M; + valgame.lcg_x %= LCG_M; // LCOV_EXCL_LINE } /* Check for RNG underflow. Transpose */ @@ -190,7 +199,7 @@ bool is_valid(struct game_t valgame) } /* Recalculate tally, throw the towel if in disagreement */ - long temp_tally = 0; + int temp_tally = 0; for (int treasure = 1; treasure <= NOBJECTS; treasure++) { if (objects[treasure].is_treasure) { if (valgame.prop[treasure] == STATE_NOTFOUND) {