X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=main.c;h=7834084eac3ed27472688c23bade12ac7475eafc;hb=5c4fdc35ebeb58655c8d6ae7a2f883395f49ca0c;hp=430f763501429f46e3a8c57a841b6623648d0778;hpb=79ef3e38c286e1d3a11655174ae30caf7e771ca1;p=open-adventure.git diff --git a/main.c b/main.c index 430f763..7834084 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; @@ -99,7 +109,8 @@ int main(int argc, char *argv[]) { lcgstate.a = 1093; lcgstate.c = 221587; lcgstate.m = 1048576; - set_seed((long)time(NULL)); + long seedval = (long)time(NULL); + set_seed(seedval); /* Read the database if we have not yet done so */ @@ -132,6 +143,9 @@ L1: SETUP= -1; LIMIT=330; if(NOVICE)LIMIT=1000; + if (logfp) + fprintf(logfp, "seed %ld\n", seedval); + for (;;) { if (!do_command(stdin)) break; @@ -142,7 +156,12 @@ L1: SETUP= -1; static bool fallback_handler(signed char *buf) /* fallback handler for commands not handled by FORTRANish parser */ { - printf("Fallback handler sees: %s\n", buf); + long sv; + if (sscanf(buf, "seed %ld", &sv) == 1) { + set_seed(sv); + printf("Seed set to %ld\n", sv); + return true; + } return false; }