diff --git a/srcpkgs/dash/patches/fix-incorrect-eating-of-backslash-newlines.patch b/srcpkgs/dash/patches/fix-incorrect-eating-of-backslash-newlines.patch new file mode 100644 index 00000000000..896c861f689 --- /dev/null +++ b/srcpkgs/dash/patches/fix-incorrect-eating-of-backslash-newlines.patch @@ -0,0 +1,65 @@ +From 469c5fd4f57622b1a6571172898ab29430319d4a Mon Sep 17 00:00:00 2001 +From: Herbert Xu +Date: Fri, 11 May 2018 23:41:25 +0800 +Subject: parser: Fix incorrect eating of backslash newlines + +With the introduction of synstack->syntax, a number of references +to the syntax variable was missed during the conversion. This +causes backslash newlines to be incorrectly removed in single +quote context. + +This patch also combines these calls into a new helper function +pgetc_top. + +Fixes: ab1cecb40478 ("parser: Add syntax stack for recursive...") +Reported-by: Leah Neukirchen +Signed-off-by: Herbert Xu +--- + src/parser.c | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +--- src/parser.c ++++ src/parser.c +@@ -853,6 +853,11 @@ static int pgetc_eatbnl(void) + 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 @@ readtoken1(int firstc, char const *syntax, char *eofmark, int striptabs) + attyline(); + if (synstack->syntax == BASESYNTAX) + return readtoken(); +- c = syntax == SQSYNTAX ? pgetc() : pgetc_eatbnl(); ++ c = pgetc_top(synstack); + goto loop; + } + #endif +@@ -929,7 +934,7 @@ readtoken1(int firstc, char const *syntax, char *eofmark, int striptabs) + 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 @@ toggledq: + USTPUTC(c, out); + } + } +- c = syntax == SQSYNTAX ? pgetc() : pgetc_eatbnl(); ++ c = pgetc_top(synstack); + } + } + endword: +-- +cgit v1.1 + + diff --git a/srcpkgs/dash/patches/noblock-sigchld.diff b/srcpkgs/dash/patches/noblock-sigchld.diff deleted file mode 100644 index 7501d0d1028..00000000000 --- a/srcpkgs/dash/patches/noblock-sigchld.diff +++ /dev/null @@ -1,64 +0,0 @@ -Subject: [PATCH v3] jobs - Do not block when waiting on SIGCHLD -Message-ID: <20180506164034.s6y4n7yt2gianh63@gondor.apana.org.au> - -diff --git a/src/eval.c b/src/eval.c -index a27d657..39c4e41 100644 ---- src/eval.c -+++ 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) ---- src/jobs.c -+++ 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) { diff --git a/srcpkgs/dash/template b/srcpkgs/dash/template index 923c0d22291..1a021cd959d 100644 --- a/srcpkgs/dash/template +++ b/srcpkgs/dash/template @@ -1,7 +1,7 @@ # Template file for 'dash' pkgname=dash -version=0.5.10 -revision=3 +version=0.5.10.1 +revision=1 build_style=gnu-configure hostmakedepends="bison" register_shell="/bin/sh /bin/dash" @@ -10,7 +10,7 @@ maintainer="Juan RP " license="BSD-3-Clause" homepage="http://gondor.apana.org.au/~herbert/dash/" distfiles="http://gondor.apana.org.au/~herbert/dash/files/$pkgname-$version.tar.gz" -checksum=ad70e0cc3116b424931c392912b3ebdb8053b21f3fd968c782f0b19fd8ae31ab +checksum=daac92be392ea5d9b03e8879384e437828e636b9f491a275a607f85d7e5e84ae alternatives=" sh:sh:/usr/bin/dash