From ced33358fcbeb9e469927a63c33d73acc1db5c32 Mon Sep 17 00:00:00 2001 From: Tanaka Akira Date: Tue, 31 Aug 1999 13:55:45 +0000 Subject: zsh-workers/7573 --- Src/signals.c | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) (limited to 'Src/signals.c') diff --git a/Src/signals.c b/Src/signals.c index 71fac245d..94cf1099f 100644 --- a/Src/signals.c +++ b/Src/signals.c @@ -592,22 +592,44 @@ killjb(Job jn, int sig) if (sig == SIGCONT) { for (pn = jobtab[jn->other].procs; pn; pn = pn->next) if (killpg(pn->pid, sig) == -1) - kill(pn->pid, sig); + if (kill(pn->pid, sig) == -1 && errno != ESRCH) +#ifdef BROKEN_KILL_ESRCH + if(errno != EINVAL || sig != 0) +#endif /* BROKEN_KILL_ESRCH */ + err = -1; for (pn = jn->procs; pn->next; pn = pn->next) - err = kill(pn->pid, sig); + if (kill(pn->pid, sig) == -1 && errno != ESRCH) +#ifdef BROKEN_KILL_ESRCH + if(errno != EINVAL || sig != 0) +#endif /* BROKEN_KILL_ESRCH */ + err = -1; if (!jobtab[jn->other].procs && pn) - err = kill(pn->pid, sig); + if (kill(pn->pid, sig) == -1 && errno != ESRCH) +#ifdef BROKEN_KILL_ESRCH + if(errno != EINVAL || sig != 0) +#endif /* BROKEN_KILL_ESRCH */ + err = -1; return err; } - - killpg(jobtab[jn->other].gleader, sig); - return killpg(jn->gleader, sig); + 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; + + if (killpg(jn->gleader, sig) == -1 && errno != ESRCH) +#ifdef BROKEN_KILL_ESRCH + if(errno != EINVAL || sig != 0) +#endif /* BROKEN_KILL_ESRCH */ + err = -1; + + return err; } else - return (killpg(jn->gleader, sig)); + return killpg(jn->gleader, sig); } for (pn = jn->procs; pn; pn = pn->next) if ((err = kill(pn->pid, sig)) == -1 && errno != ESRCH) -- cgit 1.4.1