2009-08-28 17:45:57 +02:00
|
|
|
Index: jobs.c
|
|
|
|
===================================================================
|
|
|
|
--- jobs.c.orig
|
|
|
|
+++ jobs.c
|
|
|
|
@@ -2417,7 +2417,11 @@ wait_for (pid)
|
2008-01-12 02:40:35 +01:00
|
|
|
act.sa_handler = SIG_DFL;
|
|
|
|
sigemptyset (&act.sa_mask);
|
|
|
|
sigemptyset (&oact.sa_mask);
|
|
|
|
+# if defined(MUST_REINSTALL_SIGHANDLERS)
|
|
|
|
act.sa_flags = 0;
|
|
|
|
+# else
|
|
|
|
+ act.sa_flags = SA_RESTART;
|
|
|
|
+# endif
|
|
|
|
sigaction (SIGCHLD, &act, &oact);
|
|
|
|
# endif
|
|
|
|
queue_sigchld = 1;
|
2009-08-28 17:45:57 +02:00
|
|
|
Index: sig.c
|
|
|
|
===================================================================
|
|
|
|
--- sig.c.orig
|
|
|
|
+++ sig.c
|
|
|
|
@@ -654,6 +654,17 @@ set_signal_handler (sig, handler)
|
2008-01-12 02:40:35 +01:00
|
|
|
act.sa_flags |= SA_INTERRUPT; /* XXX */
|
|
|
|
else
|
|
|
|
act.sa_flags |= SA_RESTART; /* XXX */
|
|
|
|
+#else
|
|
|
|
+# if !defined(MUST_REINSTALL_SIGHANDLERS)
|
2008-04-02 19:12:06 +02:00
|
|
|
+ if (sig != SIGALRM)
|
2008-01-12 02:40:35 +01:00
|
|
|
+ act.sa_flags |= SA_RESTART; /* XXX */
|
2008-04-02 19:12:06 +02:00
|
|
|
+ if (handler == (trap_handler))
|
|
|
|
+ act.sa_flags |= SA_NODEFER; /* XXX */
|
|
|
|
+ if (handler == (termsig_sighandler))
|
|
|
|
+ act.sa_flags |= SA_NODEFER; /* XXX */
|
|
|
|
+ if (sig == SIGTSTP || sig == SIGTTOU || sig == SIGTTIN || sig == SIGCONT)
|
|
|
|
+ act.sa_flags |= SA_NODEFER; /* XXX */
|
2008-01-12 02:40:35 +01:00
|
|
|
+# endif
|
|
|
|
#endif
|
|
|
|
sigemptyset (&act.sa_mask);
|
|
|
|
sigemptyset (&oact.sa_mask);
|