diff options
-rw-r--r-- | Src/jobs.c | 4 | ||||
-rw-r--r-- | Src/signals.c | 30 | ||||
-rw-r--r-- | Src/system.h | 5 |
3 files changed, 11 insertions, 28 deletions
diff --git a/Src/jobs.c b/Src/jobs.c index 4b9d66986..fdf69a960 100644 --- a/Src/jobs.c +++ b/Src/jobs.c @@ -835,11 +835,7 @@ waitforpid(pid_t pid) /* child_block() around this loop in case #ifndef WNOHANG */ child_block(); /* unblocked in child_suspend() */ -#ifdef BROKEN_KILL_ESRCH - while (!errflag && (kill(pid, 0) >= 0 || (errno != ESRCH && errno != EINVAL))) { -#else /* not BROKEN_KILL_ESRCH */ while (!errflag && (kill(pid, 0) >= 0 || errno != ESRCH)) { -#endif /* BROKEN_KILL_ESRCH */ if (first) first = 0; else diff --git a/Src/signals.c b/Src/signals.c index 94cf1099f..e5ee5dded 100644 --- a/Src/signals.c +++ b/Src/signals.c @@ -593,38 +593,23 @@ killjb(Job jn, int sig) for (pn = jobtab[jn->other].procs; pn; pn = pn->next) if (killpg(pn->pid, sig) == -1) if (kill(pn->pid, sig) == -1 && errno != ESRCH) -#ifdef BROKEN_KILL_ESRCH - if(errno != EINVAL || sig != 0) -#endif /* BROKEN_KILL_ESRCH */ - err = -1; + err |= -1; for (pn = jn->procs; pn->next; pn = pn->next) if (kill(pn->pid, sig) == -1 && errno != ESRCH) -#ifdef BROKEN_KILL_ESRCH - if(errno != EINVAL || sig != 0) -#endif /* BROKEN_KILL_ESRCH */ - err = -1; + err |= -1; if (!jobtab[jn->other].procs && pn) if (kill(pn->pid, sig) == -1 && errno != ESRCH) -#ifdef BROKEN_KILL_ESRCH - if(errno != EINVAL || sig != 0) -#endif /* BROKEN_KILL_ESRCH */ - err = -1; + err |= -1; return err; } if (killpg(jobtab[jn->other].gleader, sig) == -1 && errno != ESRCH) -#ifdef BROKEN_KILL_ESRCH - if(errno != EINVAL || sig != 0) -#endif /* BROKEN_KILL_ESRCH */ - err = -1; + err = -1; if (killpg(jn->gleader, sig) == -1 && errno != ESRCH) -#ifdef BROKEN_KILL_ESRCH - if(errno != EINVAL || sig != 0) -#endif /* BROKEN_KILL_ESRCH */ - err = -1; + err |= -1; return err; } @@ -632,10 +617,7 @@ killjb(Job jn, int sig) return killpg(jn->gleader, sig); } for (pn = jn->procs; pn; pn = pn->next) - if ((err = kill(pn->pid, sig)) == -1 && errno != ESRCH) -#ifdef BROKEN_KILL_ESRCH - if(errno != EINVAL || sig != 0) -#endif /* BROKEN_KILL_ESRCH */ + if ((err = kill(pn->pid, sig)) == -1 && errno != ESRCH && sig != 0) return -1; return err; } diff --git a/Src/system.h b/Src/system.h index 60f0dfe05..a3edf0fc4 100644 --- a/Src/system.h +++ b/Src/system.h @@ -620,3 +620,8 @@ extern short ospeed; #ifdef BROKEN_TCSETPGRP #undef JOB_CONTROL #endif /* BROKEN_TCSETPGRP */ + +#ifdef BROKEN_KILL_ESRCH +#undef ESRCH +#define ESRCH EINVAL +#endif /* BROKEN_KILL_ESRCH */ |