Adds signal(), wrapping sigaction()
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 14 Jul 2014 19:34:37 +0000 (12:34 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 14 Jul 2014 19:34:37 +0000 (12:34 -0700)
Needed for older programs that still use signal().

user/parlib/signal.c

index 473d82d..60623f9 100644 (file)
@@ -290,3 +290,17 @@ int sigaltstack(__const struct sigaltstack *__restrict __ss,
 {
        return 0;
 }
+
+__sighandler_t signal(int sig, __sighandler_t handler)
+{
+       int ret;
+       struct sigaction newsa = {0};
+       struct sigaction oldsa = {0};
+       newsa.sa_handler = handler;
+       ret = sigaction(sig, &newsa, &oldsa);
+       if (ret < 0) {
+               errno = EINVAL;
+               return SIG_ERR;
+       }
+       return oldsa.sa_handler;
+}