diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-11-30 14:49:45 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-11-30 14:49:45 +0000 |
commit | da42035b09065c3efdb0115e6d30fde08ea5c82c (patch) | |
tree | dbe58bb1f42e5c17e6a2c4d98475b3fa2a255369 /signal.c | |
parent | 29c7c72e09b28e2dd35ac73805b33604c6e4ae09 (diff) | |
download | ruby-da42035b09065c3efdb0115e6d30fde08ea5c82c.tar.gz |
* signal.c (ruby_signal): use SA_SIGINFO if available.
[ ruby-Patches-6418 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14057 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'signal.c')
-rw-r--r-- | signal.c | 10 |
1 files changed, 8 insertions, 2 deletions
@@ -414,9 +414,15 @@ ruby_signal(int signum, sighandler_t handler) rb_trap_accept_nativethreads[signum] = 0; - sigact.sa_handler = handler; sigemptyset(&sigact.sa_mask); +#ifdef SA_SIGINFO + sigact.sa_sigaction = (void (*)(int, siginfo_t*, void*))handler; + sigact.sa_flags = SA_SIGINFO; +#else + sigact.sa_handler = handler; sigact.sa_flags = 0; +#endif + #ifdef SA_NOCLDWAIT if (signum == SIGCHLD && handler == SIG_IGN) sigact.sa_flags |= SA_NOCLDWAIT; @@ -425,7 +431,7 @@ ruby_signal(int signum, sighandler_t handler) return old.sa_handler; } -void +sighandler_t posix_signal(int signum, sighandler_t handler) { ruby_signal(signum, handler); |