X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=main.c;h=d84e4f2ad85a9aa54a1d624162e273b91a401251;hb=67b8d38f5359ddee281289c7c6f3e4267f18985d;hp=881578def7c757011166db7608f75a7735a41e50;hpb=7763e1aa223938cf51a1dcd1f49f220a3f9dcbea;p=open-adventure.git diff --git a/main.c b/main.c index 881578d..d84e4f2 100644 --- a/main.c +++ b/main.c @@ -7,6 +7,7 @@ #include #include #include +#include #include "main.h" #include "misc.h" @@ -48,6 +49,14 @@ extern void initialise(); extern void score(long); extern int action(FILE *, long); +void sig_handler(int signo) +{ + if (signo == SIGINT) + if (logfp != NULL) + fflush(logfp); + exit(0); +} + /* * MAIN PROGRAM */ @@ -75,6 +84,7 @@ int main(int argc, char *argv[]) { fprintf(stderr, "advent: can't open logfile %s for write\n", optarg); + signal(SIGINT, sig_handler); break; case 'o': oldstyle = true; @@ -150,6 +160,8 @@ static bool fallback_handler(signed char *buf) if (sscanf(buf, "seed %ld", &sv) == 1) { set_seed(sv); printf("Seed set to %ld\n", sv); + // here we reconfigure any global game state that uses random numbers + ZZWORD=RNDVOC(3,0)+MESH*2; return true; } return false;