Flush log on interrupt, just for convenience.
authorEric S. Raymond <esr@thyrsus.com>
Fri, 26 May 2017 11:22:24 +0000 (07:22 -0400)
committerEric S. Raymond <esr@thyrsus.com>
Fri, 26 May 2017 11:22:24 +0000 (07:22 -0400)
main.c

diff --git a/main.c b/main.c
index 881578def7c757011166db7608f75a7735a41e50..7834084eac3ed27472688c23bade12ac7475eafc 100644 (file)
--- a/main.c
+++ b/main.c
@@ -7,6 +7,7 @@
 #include <stdio.h>
 #include <stdbool.h>
 #include <getopt.h>
+#include <signal.h>
 #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;