aboutsummaryrefslogtreecommitdiffstats
path: root/main/busybox/0001-ash-backport-fix-for-here-document-issues.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/busybox/0001-ash-backport-fix-for-here-document-issues.patch')
-rw-r--r--main/busybox/0001-ash-backport-fix-for-here-document-issues.patch165
1 files changed, 0 insertions, 165 deletions
diff --git a/main/busybox/0001-ash-backport-fix-for-here-document-issues.patch b/main/busybox/0001-ash-backport-fix-for-here-document-issues.patch
deleted file mode 100644
index 7c9d8a9835..0000000000
--- a/main/busybox/0001-ash-backport-fix-for-here-document-issues.patch
+++ /dev/null
@@ -1,165 +0,0 @@
-From c0eb20351d14932c5535789bce0251ab8718df77 Mon Sep 17 00:00:00 2001
-From: Ron Yorston <rmy@pobox.com>
-Date: Thu, 29 Oct 2015 11:31:39 +0000
-Subject: [PATCH] ash: backport fix for here document issues
-
-Reported-by: Natanael Copa <ncopa@alpinelinux.org>
-Signed-off-by: Ron Yorston <rmy@pobox.com>
----
- shell/ash.c | 72 +++++++++++++------------------
- shell/ash_test/ash-heredoc/heredoc2.right | 2 +
- shell/ash_test/ash-heredoc/heredoc2.tests | 7 +++
- 3 files changed, 39 insertions(+), 42 deletions(-)
- create mode 100644 shell/ash_test/ash-heredoc/heredoc2.right
- create mode 100644 shell/ash_test/ash-heredoc/heredoc2.tests
-
-diff --git a/shell/ash.c b/shell/ash.c
-index 8a1628e..f13dd2a 100644
---- a/shell/ash.c
-+++ b/shell/ash.c
-@@ -10516,7 +10516,7 @@ static union node *andor(void);
- static union node *pipeline(void);
- static union node *parse_command(void);
- static void parseheredoc(void);
--static char nexttoken_ends_list(void);
-+static int peektoken(void);
- static int readtoken(void);
-
- static union node *
-@@ -10525,11 +10525,27 @@ list(int nlflag)
- union node *n1, *n2, *n3;
- int tok;
-
-- checkkwd = CHKNL | CHKKWD | CHKALIAS;
-- if (nlflag == 2 && nexttoken_ends_list())
-- return NULL;
- n1 = NULL;
- for (;;) {
-+ switch (peektoken()) {
-+ case TNL:
-+ if (!(nlflag & 1))
-+ break;
-+ parseheredoc();
-+ return n1;
-+
-+ case TEOF:
-+ if (!n1 && (nlflag & 1))
-+ n1 = NODE_EOF;
-+ parseheredoc();
-+ return n1;
-+ }
-+
-+ checkkwd = CHKNL | CHKKWD | CHKALIAS;
-+ if (nlflag == 2 && tokname_array[peektoken()][0])
-+ return n1;
-+ nlflag |= 2;
-+
- n2 = andor();
- tok = readtoken();
- if (tok == TBACKGND) {
-@@ -10555,37 +10571,15 @@ list(int nlflag)
- n1 = n3;
- }
- switch (tok) {
-+ case TNL:
-+ case TEOF:
-+ tokpushback = 1;
-+ /* fall through */
- case TBACKGND:
- case TSEMI:
-- tok = readtoken();
-- /* fall through */
-- case TNL:
-- if (tok == TNL) {
-- parseheredoc();
-- if (nlflag == 1)
-- return n1;
-- } else {
-- tokpushback = 1;
-- }
-- checkkwd = CHKNL | CHKKWD | CHKALIAS;
-- if (nexttoken_ends_list()) {
-- /* Testcase: "<<EOF; then <W".
-- * It used to segfault w/o this check:
-- */
-- if (heredoclist) {
-- raise_error_unexpected_syntax(-1);
-- }
-- return n1;
-- }
- break;
-- case TEOF:
-- if (heredoclist)
-- parseheredoc();
-- else
-- pungetc(); /* push back EOF on input */
-- return n1;
- default:
-- if (nlflag == 1)
-+ if ((nlflag & 1))
- raise_error_unexpected_syntax(-1);
- tokpushback = 1;
- return n1;
-@@ -11954,14 +11948,14 @@ readtoken(void)
- return t;
- }
-
--static char
--nexttoken_ends_list(void)
-+static int
-+peektoken(void)
- {
- int t;
-
- t = readtoken();
- tokpushback = 1;
-- return tokname_array[t][0];
-+ return t;
- }
-
- /*
-@@ -11971,18 +11965,12 @@ nexttoken_ends_list(void)
- static union node *
- parsecmd(int interact)
- {
-- int t;
--
- tokpushback = 0;
-+ checkkwd = 0;
-+ heredoclist = 0;
- doprompt = interact;
- setprompt_if(doprompt, doprompt);
- needprompt = 0;
-- t = readtoken();
-- if (t == TEOF)
-- return NODE_EOF;
-- if (t == TNL)
-- return NULL;
-- tokpushback = 1;
- return list(1);
- }
-
-diff --git a/shell/ash_test/ash-heredoc/heredoc2.right b/shell/ash_test/ash-heredoc/heredoc2.right
-new file mode 100644
-index 0000000..a486f1a
---- /dev/null
-+++ b/shell/ash_test/ash-heredoc/heredoc2.right
-@@ -0,0 +1,2 @@
-+bar
-+bar
-diff --git a/shell/ash_test/ash-heredoc/heredoc2.tests b/shell/ash_test/ash-heredoc/heredoc2.tests
-new file mode 100644
-index 0000000..6d9ccb6
---- /dev/null
-+++ b/shell/ash_test/ash-heredoc/heredoc2.tests
-@@ -0,0 +1,7 @@
-+foo () {
-+cat <<EOF && { echo "$1" ; }
-+$1
-+EOF
-+}
-+
-+foo "bar"
---
-2.6.1
-