#include <stdio.h>
#include <stdbool.h>
#include <getopt.h>
+#include <signal.h>
#include "main.h"
#include "misc.h"
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
*/
fprintf(stderr,
"advent: can't open logfile %s for write\n",
optarg);
+ signal(SIGINT, sig_handler);
break;
case 'o':
oldstyle = true;
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 */
LIMIT=330;
if(NOVICE)LIMIT=1000;
+ if (logfp)
+ fprintf(logfp, "seed %ld\n", seedval);
+
for (;;) {
if (!do_command(stdin))
break;
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;
}