From a37e578f6381e4271459d3acd07b3c5870142d74 Mon Sep 17 00:00:00 2001 From: NHOrus Date: Sun, 18 Jun 2017 10:34:44 +0300 Subject: [PATCH] Compile switch to disable save and restore --- Makefile | 2 ++ advent.adoc | 2 +- saveresume.c | 33 ++++++++++++++++++++++++--------- 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index 62a4ee4..b7328e6 100644 --- a/Makefile +++ b/Makefile @@ -21,6 +21,8 @@ # # If you are using MacPorts on OS X: # port install py3{5,6}-yaml as appropriate for your Python 3 version. +# +# To build with save/resume disabled, pass CCFLAGS="-D ADVENT_NOSAVE" VERS=1.0 diff --git a/advent.adoc b/advent.adoc index d0fd29b..2ce8962 100644 --- a/advent.adoc +++ b/advent.adoc @@ -5,7 +5,7 @@ advent - Colossal Cave Adventure == SYNOPSIS == -*advent* [-l logfile] [-o] +*advent* [-l logfile] [-o] [-r savefile] [-s] == DESCRIPTION == The original Colossal Cave Adventure from 1976-77 was the origin of all diff --git a/saveresume.c b/saveresume.c index 015b4be..5cc9726 100644 --- a/saveresume.c +++ b/saveresume.c @@ -31,13 +31,17 @@ struct save_t save; /* Suspend and resume */ int suspend(FILE *input) -{ +{ /* Suspend. Offer to save things in a file, but charging + * some points (so can't win by using saved games to retry + * battles or to start over after learning zzword). + * If ADVENT_NOSAVE is defined, do nothing instead. */ + +#ifdef ADVENT_NOSAVE + return GO_UNKNOWN; +#endif long i, k; FILE *fp = NULL; - /* Suspend. Offer to save things in a file, but charging - * some points (so can't win by using saved games to retry - * battles or to start over after learning zzword). */ RSPEAK(SUSPEND_WARNING); if (!YES(input,THIS_ACCEPTABLE,OK_MAN,OK_MAN)) return GO_CLEAROBJ; game.saved=game.saved+5; @@ -67,10 +71,14 @@ int suspend(FILE *input) } int resume(FILE *input) -{ +{ /* Resume. Read a suspended game back from a file. + * If ADVENT_NOSAVE is defined, do nothing instead. */ + +#ifdef ADVENT_NOSAVE + return GO_UNKNOWN; +#endif FILE *fp = NULL; - - /* Resume. Read a suspended game back from a file. */ + if (game.loc != 1 || game.abbrev[1] != 1) { RSPEAK(RESUME_ABANDON); if (!YES(input,THIS_ACCEPTABLE,OK_MAN,OK_MAN)) return GO_CLEAROBJ; @@ -86,10 +94,17 @@ int resume(FILE *input) linenoiseFree(name); } - return restore(fp); + return restore(fp); } -int restore(FILE* fp){ +int restore(FILE* fp) +{ /* Read and restore game state from file, assuming + * sane initial state. + * If ADVENT_NOSAVE is defined, do nothing instead. */ +#ifdef ADVENT_NOSAVE + return GO_UNKNOWN; +#endif + IGNORE(fread(&save, sizeof(struct save_t), 1, fp)); fclose(fp); if (save.version != VRSION) { -- 2.31.1