#include <stdlib.h>
#include <string.h>
-#include <editline/readline.h>
#include <time.h>
#include <inttypes.h>
#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 {
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);
}
while (fp == NULL) {
- char* name = readline("\nFile name: ");
+ char* name = myreadline("\nFile name: ");
+ // Autocomplete can leave the input with an extra traoling 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);
/* 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 */
}
/* 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) {