util: make sure reset_all_signal_handlers() continues with all other signal handlers when one sigaction() fails
After all, we usually don't check for failures here, and it is better to do as much as we can...
This commit is contained in:
parent
f2322f0b64
commit
24a5d6b04e
|
@ -937,7 +937,7 @@ int readlink_and_canonicalize(const char *p, char **r) {
|
|||
}
|
||||
|
||||
int reset_all_signal_handlers(void) {
|
||||
int sig;
|
||||
int sig, r = 0;
|
||||
|
||||
for (sig = 1; sig < _NSIG; sig++) {
|
||||
struct sigaction sa = {
|
||||
|
@ -945,17 +945,18 @@ int reset_all_signal_handlers(void) {
|
|||
.sa_flags = SA_RESTART,
|
||||
};
|
||||
|
||||
/* These two cannot be caught... */
|
||||
if (sig == SIGKILL || sig == SIGSTOP)
|
||||
continue;
|
||||
|
||||
/* On Linux the first two RT signals are reserved by
|
||||
* glibc, and sigaction() will return EINVAL for them. */
|
||||
if ((sigaction(sig, &sa, NULL) < 0))
|
||||
if (errno != EINVAL)
|
||||
return -errno;
|
||||
if (errno != EINVAL && r == 0)
|
||||
r = -errno;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return r;
|
||||
}
|
||||
|
||||
char *strstrip(char *s) {
|
||||
|
|
Loading…
Reference in a new issue