[git commit] hush: add a comment where we differ from bash wrt heredoc EOF mark handling

Denys Vlasenko vda.linux at googlemail.com
Sun Apr 1 16:55:00 UTC 2018


commit: https://git.busybox.net/busybox/commit/?id=bb6f573ad204887e2447a40628efd98f334fb520
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 shell/hush.c                                          |  8 ++++++++
 shell/hush_test/hush-heredoc/heredoc_backquote1.right |  5 -----
 shell/hush_test/hush-heredoc/heredoc_backquote1.tests | 10 ----------
 3 files changed, 8 insertions(+), 15 deletions(-)

diff --git a/shell/hush.c b/shell/hush.c
index 4b8641d19..1921932d1 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -3861,6 +3861,13 @@ static int done_word(o_string *word, struct parse_context *ctx)
 		 * shell may perform it, but shall do so only when
 		 * the expansion would result in one word."
 		 */
+//bash does not do parameter/command substitution or arithmetic expansion
+//for _heredoc_ redirection word: these constructs look for exact eof marker
+// as written:
+// <<EOF$t
+// <<EOF$((1))
+// <<EOF`true`  [this case also makes heredoc "quoted", a-la <<"EOF"]
+//This contradicts the above docs.
 		ctx->pending_redirect->rd_filename = xstrdup(word->data);
 		/* Cater for >\file case:
 		 * >\a creates file a; >\\a, >"\a", >"\\a" create file \a
@@ -4228,6 +4235,7 @@ static int fetch_heredocs(int heredoc_cnt, struct parse_context *ctx, struct in_
 
 					redir->rd_type = REDIRECT_HEREDOC2;
 					/* redir->rd_dup is (ab)used to indicate <<- */
+bb_error_msg("redir->rd_filename:'%s'",  redir->rd_filename);
 					p = fetch_till_str(&ctx->as_string, input,
 							redir->rd_filename, redir->rd_dup);
 					if (!p) {
diff --git a/shell/hush_test/hush-heredoc/heredoc_backquote1.right b/shell/hush_test/hush-heredoc/heredoc_backquote1.right
deleted file mode 100644
index 0be2a3296..000000000
--- a/shell/hush_test/hush-heredoc/heredoc_backquote1.right
+++ /dev/null
@@ -1,5 +0,0 @@
-heredoc1
-Ok1:0
-heredoc2
-EO`false`F
-Ok2:0
diff --git a/shell/hush_test/hush-heredoc/heredoc_backquote1.tests b/shell/hush_test/hush-heredoc/heredoc_backquote1.tests
deleted file mode 100755
index ec3d8fe1d..000000000
--- a/shell/hush_test/hush-heredoc/heredoc_backquote1.tests
+++ /dev/null
@@ -1,10 +0,0 @@
-cat <<EO`true`F
-heredoc1
-EO`true`F
-echo Ok1:$?
-
-cat <<EO`true`F
-heredoc2
-EO`false`F
-EO`true`F
-echo Ok2:$?


More information about the busybox-cvs mailing list