diff options
Diffstat (limited to 'source/ap/ash/patches/ash-jobs.patch')
-rw-r--r-- | source/ap/ash/patches/ash-jobs.patch | 108 |
1 files changed, 0 insertions, 108 deletions
diff --git a/source/ap/ash/patches/ash-jobs.patch b/source/ap/ash/patches/ash-jobs.patch deleted file mode 100644 index 9e89118f5..000000000 --- a/source/ap/ash/patches/ash-jobs.patch +++ /dev/null @@ -1,108 +0,0 @@ -diff -ur netbsd-sh/jobs.c netbsd-sh-/jobs.c ---- netbsd-sh/jobs.c Tue May 23 12:03:19 2000 -+++ netbsd-sh-/jobs.c Mon Apr 23 23:31:47 2001 -@@ -92,6 +92,7 @@ - int initialpgrp; /* pgrp of shell on invocation */ - short curjob; /* current job */ - #endif -+STATIC int intreceived; - - STATIC void restartjob __P((struct job *)); - STATIC void freejob __P((struct job *)); -@@ -101,8 +102,10 @@ - STATIC int waitproc __P((int, int *)); - STATIC void cmdtxt __P((union node *)); - STATIC void cmdputs __P((const char *)); -+STATIC void waitonint(int); - - -+#if JOBS - /* - * Turn job control on and off. - * -@@ -171,6 +174,7 @@ - } - jobctl = on; - } -+#endif - - - #ifdef mkinit -@@ -594,9 +598,6 @@ - TRACE(("Child shell %d\n", getpid())); - wasroot = rootshell; - rootshell = 0; -- for (i = njobs, p = jobtab ; --i >= 0 ; p++) -- if (p->used) -- freejob(p); - closescript(); - INTON; - clear_traps(); -@@ -642,6 +643,9 @@ - } - } - #endif -+ for (i = njobs, p = jobtab ; --i >= 0 ; p++) -+ if (p->used) -+ freejob(p); - if (wasroot && iflag) { - setsignal(SIGINT); - setsignal(SIGQUIT); -@@ -701,13 +705,33 @@ - #endif - int status; - int st; -+ struct sigaction act, oact; - - INTOFF; -+ intreceived = 0; -+#if JOBS -+ if (!jobctl) { -+#else -+ if (!iflag) { -+#endif -+ sigaction(SIGINT, 0, &act); -+ act.sa_handler = waitonint; -+ sigaction(SIGINT, &act, &oact); -+ } - TRACE(("waitforjob(%%%d) called\n", jp - jobtab + 1)); - while (jp->state == 0) { - dowait(1, jp); - } - #if JOBS -+ if (!jobctl) { -+#else -+ if (!iflag) { -+#endif -+ extern char *trap[]; -+ sigaction(SIGINT, &oact, 0); -+ if (intreceived && trap[SIGINT]) kill(getpid(), SIGINT); -+ } -+#if JOBS - if (jp->jobctl) { - #ifdef OLD_TTY_DRIVER - if (ioctl(2, TIOCSPGRP, (char *)&mypgrp) < 0) -@@ -896,10 +920,10 @@ - #ifdef BSD - int flags; - --#if JOBS -- flags = WUNTRACED; --#else - flags = 0; -+#if JOBS -+ if (jobctl) -+ flags |= WUNTRACED; - #endif - if (block == 0) - flags |= WNOHANG; -@@ -1139,4 +1163,9 @@ - } - } - cmdnextc = q; -+} -+ -+STATIC void waitonint(int sig) { -+ intreceived = 1; -+ return; - } |