ruby-changes:2566
From: ko1@a...
Date: 30 Nov 2007 23:50:08 +0900
Subject: [ruby-changes:2566] matz - Ruby:r14057 (trunk): * signal.c (ruby_signal): use SA_SIGINFO if available.
matz 2007-11-30 23:49:45 +0900 (Fri, 30 Nov 2007)
New Revision: 14057
Modified files:
trunk/ChangeLog
trunk/include/ruby/intern.h
trunk/process.c
trunk/signal.c
Log:
* signal.c (ruby_signal): use SA_SIGINFO if available.
[ ruby-Patches-6418 ]
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=14057&r2=14056
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/signal.c?r1=14057&r2=14056
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/process.c?r1=14057&r2=14056
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/include/ruby/intern.h?r1=14057&r2=14056
Index: include/ruby/intern.h
===================================================================
--- include/ruby/intern.h (revision 14056)
+++ include/ruby/intern.h (revision 14057)
@@ -472,7 +472,7 @@
void rb_gc_mark_trap_list(void);
#ifdef POSIX_SIGNAL
#define posix_signal ruby_posix_signal
-void posix_signal(int, RETSIGTYPE (*)(int));
+RETSIGTYPE (*posix_signal(int, RETSIGTYPE (*)(int)))(int);
#endif
void ruby_sig_finalize(void);
void rb_trap_exit(void);
Index: ChangeLog
===================================================================
--- ChangeLog (revision 14056)
+++ ChangeLog (revision 14057)
@@ -1,3 +1,8 @@
+Fri Nov 30 23:48:07 2007 Yukihiro Matsumoto <matz@r...>
+
+ * signal.c (ruby_signal): use SA_SIGINFO if available.
+ [ ruby-Patches-6418 ]
+
Fri Nov 30 22:52:54 2007 Yukihiro Matsumoto <matz@r...>
* signal.c (trap_signm): SIGVTALRM no longer used for green
Index: process.c
===================================================================
--- process.c (revision 14056)
+++ process.c (revision 14057)
@@ -1668,6 +1668,10 @@
#if defined(sun)
#define signal(a,b) sigset(a,b)
+#else
+# if defined(POSIX_SIGNAL)
+# define signal(a,b) posix_signal(a,b)
+# endif
#endif
void
Index: signal.c
===================================================================
--- signal.c (revision 14056)
+++ signal.c (revision 14057)
@@ -414,9 +414,15 @@
rb_trap_accept_nativethreads[signum] = 0;
+ 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;
- sigemptyset(&sigact.sa_mask);
sigact.sa_flags = 0;
+#endif
+
#ifdef SA_NOCLDWAIT
if (signum == SIGCHLD && handler == SIG_IGN)
sigact.sa_flags |= SA_NOCLDWAIT;
@@ -425,7 +431,7 @@
return old.sa_handler;
}
-void
+sighandler_t
posix_signal(int signum, sighandler_t handler)
{
ruby_signal(signum, handler);
--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml