From e994ac70a4d85cd933e674e0df70301dd86637ee Mon Sep 17 00:00:00 2001 From: herbert Date: Fri, 25 Feb 2005 20:49:13 +1100 Subject: Changed boolean rootshell into shlvl counter. --- src/jobs.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/jobs.c') diff --git a/src/jobs.c b/src/jobs.c index 132c47a..b82bf50 100644 --- a/src/jobs.c +++ b/src/jobs.c @@ -838,19 +838,19 @@ growjobtab(void) STATIC inline void forkchild(struct job *jp, union node *n, int mode) { - int wasroot; + int oldlvl; pid_t pgrp; TRACE(("Child shell %d\n", getpid())); - wasroot = rootshell; - rootshell = 0; + oldlvl = shlvl; + shlvl++; closescript(); clear_traps(); #if JOBS /* do job control only in root shell */ jobctl = 0; - if (mode != FORK_NOJOB && jp->jobctl && wasroot) { + if (mode != FORK_NOJOB && jp->jobctl && !oldlvl) { if (jp->nprocs == 0) pgrp = getpid(); else @@ -872,7 +872,7 @@ forkchild(struct job *jp, union node *n, int mode) error("Can't open %s", _PATH_DEVNULL); } } - if (wasroot && iflag) { + if (!oldlvl && iflag) { setsignal(SIGINT); setsignal(SIGQUIT); setsignal(SIGTERM); -- cgit 1.4.1