sh: Use sigaction instead of signal/siginterrupt combination.

This commit is contained in:
Jilles Tjoelker 2009-11-11 23:13:24 +00:00
parent 41c8c6e876
commit 3f228d7484
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=199205

View File

@ -244,7 +244,8 @@ void
setsignal(int signo) setsignal(int signo)
{ {
int action; int action;
sig_t sig, sigact = SIG_DFL; sig_t sigact = SIG_DFL;
struct sigaction sa;
char *t; char *t;
if ((t = trap[signo]) == NULL) if ((t = trap[signo]) == NULL)
@ -320,9 +321,10 @@ setsignal(int signo)
case S_IGN: sigact = SIG_IGN; break; case S_IGN: sigact = SIG_IGN; break;
} }
*t = action; *t = action;
sig = signal(signo, sigact); sa.sa_handler = sigact;
if (sig != SIG_ERR && action == S_CATCH) sa.sa_flags = 0;
siginterrupt(signo, 1); sigemptyset(&sa.sa_mask);
sigaction(signo, &sa, NULL);
} }