minor portability enhancements
authorJustin Wind <justin.wind@gmail.com>
Wed, 18 Apr 2012 21:25:27 +0000 (14:25 -0700)
committerJustin Wind <justin.wind@gmail.com>
Wed, 18 Apr 2012 21:25:27 +0000 (14:25 -0700)
missed some headers, use sigaction() instead of signal()

as-dcpu16.c
vm-dcpu16.c

index 063741d51a8698330c3a8af13d12c33a03114d11..820b8376cf2b0f1365fc5212d4a888a050debe72 100644 (file)
@@ -2,6 +2,7 @@
 #include <unistd.h>
 #include <stdio.h>
 #include <string.h>
+#include <strings.h>
 #include <errno.h>
 #include <sysexits.h>
 #include <assert.h>
index d60c340d2eeaa7a6f4eb4e9630127ae1152bd439..537452af9af8f11066f00dd43aa0eb33961eb00d 100644 (file)
@@ -2,6 +2,8 @@
 #include <stdio.h>
 #include <unistd.h>
 #include <string.h>
+#include <strings.h>
+#include <signal.h>
 #include <errno.h>
 #include <assert.h>
 #include <sysexits.h>
@@ -326,14 +328,17 @@ COMMAND_HELP(step) {
 
 
 COMMAND_IMPL(run) {
-    sig_t osig;
+    struct sigaction act;
     (void)arg_count, (void)arg_vector;
 
     running_ = 1;
 
-    /* install our new interrupt signal handler */
-    if ( (osig = signal(SIGINT, sigint_handler_)) == SIG_ERR ) {
-        fprintf(stderr, "%s():%s\n", "signal", strerror(errno));
+    memset(&act, 0, sizeof act);
+    act.sa_handler = sigint_handler_;
+    act.sa_flags = SA_RESETHAND;
+
+    if (sigaction(SIGINT, &act, NULL)) {
+        fprintf(stderr, "%s():%s\n", "sigaction", strerror(errno));
         return -1;
     }
 
@@ -347,12 +352,6 @@ COMMAND_IMPL(run) {
         }
     }
 
-    /* restore the old interrupt signal handler */
-    if (signal(SIGINT, osig) == SIG_ERR) {
-        fprintf(stderr, "%s():%s\n", "signal", strerror(errno));
-        return -1;
-    }
-
     printf("interrupted...\n");
 
     return 0;