]> git.saurik.com Git - apple/libc.git/blobdiff - gen/FreeBSD/signal.c.patch
Libc-320.tar.gz
[apple/libc.git] / gen / FreeBSD / signal.c.patch
diff --git a/gen/FreeBSD/signal.c.patch b/gen/FreeBSD/signal.c.patch
new file mode 100644 (file)
index 0000000..c4169f4
--- /dev/null
@@ -0,0 +1,53 @@
+--- signal.c.orig      Thu Jan 31 16:57:29 2002
++++ signal.c   Fri May 16 14:16:12 2003
+@@ -47,10 +47,13 @@
+ sigset_t _sigintr;            /* shared with siginterrupt */
+-sig_t
+-signal(s, a)
++extern int _sigaction_nobind (int sig, const struct sigaction *nsv, struct sigaction *osv);
++
++static sig_t
++signal__(s, a, bind)
+       int s;
+       sig_t a;
++      int bind;
+ {
+       struct sigaction sa, osa;
+@@ -59,7 +62,34 @@
+       sa.sa_flags = 0;
+       if (!sigismember(&_sigintr, s))
+               sa.sa_flags |= SA_RESTART;
++#if defined(__DYNAMIC__)
++      if (bind) {
++#endif /* __DYNAMIC__ */
+       if (_sigaction(s, &sa, &osa) < 0)
+               return (SIG_ERR);
++#if defined(__DYNAMIC__)
++      } else {
++          if (_sigaction_nobind(s, &sa, &osa) < 0)
++              return (SIG_ERR);
++      }
++#endif /* __DYNAMIC__ */
+       return (osa.sa_handler);
+ }
++
++sig_t
++signal(s, a)
++        int s;
++        sig_t a;
++{
++    return signal__(s, a, 1);
++}
++
++#if defined(__DYNAMIC__)
++sig_t
++_signal_nobind(s, a)
++        int s;
++        sig_t a;
++{
++    return signal__(s, a, 0);
++}
++#endif /* __DYNAMIC__ */