summaryrefslogtreecommitdiffstats
path: root/source/ap/ash/patches/ash-jobs.patch
diff options
context:
space:
mode:
Diffstat (limited to 'source/ap/ash/patches/ash-jobs.patch')
-rw-r--r--source/ap/ash/patches/ash-jobs.patch108
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;
- }