diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2018-05-15 13:19:56 +0100 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2018-05-15 13:19:56 +0100 |
commit | d302a5d7fc9caafba5c8a404f2891bb6ccdec311 (patch) | |
tree | 2a3ee43f080d1d0086964de8c29ccf1021fdfda7 /app-shells/dash/files | |
parent | ea31ad0ed5501d0bf92267c35beaf06ac016bad2 (diff) |
gentoo resync : 15.05.2018
Diffstat (limited to 'app-shells/dash/files')
-rw-r--r-- | app-shells/dash/files/dash-0.5.10-dumb-echo.patch | 2 | ||||
-rw-r--r-- | app-shells/dash/files/dash-0.5.10-jobs.patch | 88 | ||||
-rw-r--r-- | app-shells/dash/files/dash-0.5.10-subshells.patch | 16 | ||||
-rw-r--r-- | app-shells/dash/files/dash-0.5.10.1-parser.patch | 43 |
4 files changed, 44 insertions, 105 deletions
diff --git a/app-shells/dash/files/dash-0.5.10-dumb-echo.patch b/app-shells/dash/files/dash-0.5.10-dumb-echo.patch index 6b19b5b59f70..35d324609302 100644 --- a/app-shells/dash/files/dash-0.5.10-dumb-echo.patch +++ b/app-shells/dash/files/dash-0.5.10-dumb-echo.patch @@ -24,7 +24,7 @@ sequence. it also makes dash smaller & faster to disable this logic entirely. - lastfmt = "%s"; + for (i = 1; i < argc; ++i) { + outstr(argv[i], out1); -+ if (1 < argc - 1) ++ if (i < argc - 1) + outc(' ', out1); } - diff --git a/app-shells/dash/files/dash-0.5.10-jobs.patch b/app-shells/dash/files/dash-0.5.10-jobs.patch deleted file mode 100644 index a4c83d88dcb8..000000000000 --- a/app-shells/dash/files/dash-0.5.10-jobs.patch +++ /dev/null @@ -1,88 +0,0 @@ -From 9e5cd41d9605e4caaac3aacdc0482f6ee220a298 Mon Sep 17 00:00:00 2001 -From: Herbert Xu <herbert@gondor.apana.org.au> -Date: Mon, 7 May 2018 00:40:34 +0800 -Subject: jobs - Do not block when waiting on SIGCHLD - -Because of the nature of SIGCHLD, the process may have already been -waited on and therefore we must be prepared for the case that wait -may block. So ensure that it doesn't by using WNOHANG. - -Furthermore, multiple jobs may have exited when gotsigchld is set. -Therefore we need to wait until there are no zombies left. - -Lastly, waitforjob needs to be called with interrupts off and -the original patch broke that. - -Fixes: 03876c0743a5 ("eval: Reap zombies after built-in...") -Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> ---- - src/eval.c | 12 ++++-------- - src/jobs.c | 13 ++++++++++--- - 2 files changed, 14 insertions(+), 11 deletions(-) - -diff --git a/src/eval.c b/src/eval.c -index a27d657..39c4e41 100644 ---- a/src/eval.c -+++ b/src/eval.c -@@ -859,10 +859,8 @@ bail: - if (!(flags & EV_EXIT) || have_traps()) { - INTOFF; - jp = makejob(cmd, 1); -- if (forkshell(jp, cmd, FORK_FG) != 0) { -- INTON; -+ if (forkshell(jp, cmd, FORK_FG) != 0) - break; -- } - FORCEINTON; - } - listsetvar(varlist.list, VEXPORT|VSTACK); -@@ -875,11 +873,8 @@ bail: - if (execcmd && argc > 1) - listsetvar(varlist.list, VEXPORT); - } -- if (evalbltin(cmdentry.u.cmd, argc, argv, flags)) { -- if (exception == EXERROR && spclbltin <= 0) { -- FORCEINTON; -- break; -- } -+ if (evalbltin(cmdentry.u.cmd, argc, argv, flags) && -+ !(exception == EXERROR && spclbltin <= 0)) { - raise: - longjmp(handler->loc, 1); - } -@@ -892,6 +887,7 @@ raise: - } - - status = waitforjob(jp); -+ FORCEINTON; - - out: - if (cmd->ncmd.redirect) -diff --git a/src/jobs.c b/src/jobs.c -index 1a97c54..606d603 100644 ---- a/src/jobs.c -+++ b/src/jobs.c -@@ -975,10 +975,17 @@ waitforjob(struct job *jp) - int st; - - TRACE(("waitforjob(%%%d) called\n", jp ? jobno(jp) : 0)); -- while ((jp && jp->state == JOBRUNNING) || gotsigchld) -- dowait(DOWAIT_BLOCK, jp); -- if (!jp) -+ if (!jp) { -+ int pid = gotsigchld; -+ -+ while (pid > 0) -+ pid = dowait(DOWAIT_NORMAL, NULL); -+ - return exitstatus; -+ } -+ -+ while (jp->state == JOBRUNNING) -+ dowait(DOWAIT_BLOCK, jp); - st = getstatus(jp); - #if JOBS - if (jp->jobctl) { --- -cgit v1.1 - diff --git a/app-shells/dash/files/dash-0.5.10-subshells.patch b/app-shells/dash/files/dash-0.5.10-subshells.patch deleted file mode 100644 index 5943db11e697..000000000000 --- a/app-shells/dash/files/dash-0.5.10-subshells.patch +++ /dev/null @@ -1,16 +0,0 @@ -https://bugs.gentoo.org/655320 -https://patchwork.kernel.org/patch/10382199/ - ---- dash-0.5.10/src/jobs.c -+++ dash-0.5.10/src/jobs.c -@@ -975,8 +975,8 @@ - int st; - - TRACE(("waitforjob(%%%d) called\n", jp ? jobno(jp) : 0)); -- while ((jp && jp->state == JOBRUNNING) || gotsigchld) -- dowait(DOWAIT_BLOCK, jp); -+ while (jp ? jp->state == JOBRUNNING : gotsigchld) -+ dowait(jp ? DOWAIT_BLOCK : DOWAIT_NORMAL, jp); - if (!jp) - return exitstatus; - st = getstatus(jp); diff --git a/app-shells/dash/files/dash-0.5.10.1-parser.patch b/app-shells/dash/files/dash-0.5.10.1-parser.patch new file mode 100644 index 000000000000..485fc7e6772a --- /dev/null +++ b/app-shells/dash/files/dash-0.5.10.1-parser.patch @@ -0,0 +1,43 @@ +https://www.mail-archive.com/dash@vger.kernel.org/msg01620.html + +--- dash-0.5.10.1/src/parser.c ++++ dash-0.5.10.1/src/parser.c +@@ -853,6 +853,11 @@ + return c; + } + ++static int pgetc_top(struct synstack *stack) ++{ ++ return stack->syntax == SQSYNTAX ? pgetc() : pgetc_eatbnl(); ++} ++ + static void synstack_push(struct synstack **stack, struct synstack *next, + const char *syntax) + { +@@ -915,7 +920,7 @@ + attyline(); + if (synstack->syntax == BASESYNTAX) + return readtoken(); +- c = syntax == SQSYNTAX ? pgetc() : pgetc_eatbnl(); ++ c = pgetc_top(synstack); + goto loop; + } + #endif +@@ -929,7 +934,7 @@ + goto endword; /* exit outer loop */ + USTPUTC(c, out); + nlprompt(); +- c = syntax == SQSYNTAX ? pgetc() : pgetc_eatbnl(); ++ c = pgetc_top(synstack); + goto loop; /* continue outer loop */ + case CWORD: + USTPUTC(c, out); +@@ -1056,7 +1061,7 @@ + USTPUTC(c, out); + } + } +- c = syntax == SQSYNTAX ? pgetc() : pgetc_eatbnl(); ++ c = pgetc_top(synstack); + } + } + endword: |