Bash doesn't expand its $'...' construct in double quotes:

   $ echo "$'a\tb'"
   $'a\tb'

Change BusyBox ash to do the same.  This also fixes a problem with
here documents where BusyBox ash gave an incorrect result for:

   $ cat <<EOF
   > '$'
   > EOF
   '$'

Reported-by: Timo Teras <[email protected]>
Signed-off-by: Ron Yorston <[email protected]>
---
 shell/ash.c                                          | 2 +-
 shell/ash_test/ash-heredoc/heredoc4.right            | 1 +
 shell/ash_test/ash-heredoc/heredoc4.tests            | 3 +++
 shell/ash_test/ash-quoting/dollar_squote_bash1.right | 1 +
 shell/ash_test/ash-quoting/dollar_squote_bash1.tests | 1 +
 5 files changed, 7 insertions(+), 1 deletion(-)
 create mode 100644 shell/ash_test/ash-heredoc/heredoc4.right
 create mode 100755 shell/ash_test/ash-heredoc/heredoc4.tests

diff --git a/shell/ash.c b/shell/ash.c
index 5613e1f..6ac0f15 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -11500,7 +11500,7 @@ parsesub: {
         || (c != '(' && c != '{' && !is_name(c) && !is_special(c))
        ) {
 #if ENABLE_ASH_BASH_COMPAT
-               if (c == '\'')
+               if (syntax != DQSYNTAX && c == '\'')
                        bash_dollar_squote = 1;
                else
 #endif
diff --git a/shell/ash_test/ash-heredoc/heredoc4.right 
b/shell/ash_test/ash-heredoc/heredoc4.right
new file mode 100644
index 0000000..371b092
--- /dev/null
+++ b/shell/ash_test/ash-heredoc/heredoc4.right
@@ -0,0 +1 @@
+'$'
diff --git a/shell/ash_test/ash-heredoc/heredoc4.tests 
b/shell/ash_test/ash-heredoc/heredoc4.tests
new file mode 100755
index 0000000..642ddb3
--- /dev/null
+++ b/shell/ash_test/ash-heredoc/heredoc4.tests
@@ -0,0 +1,3 @@
+cat <<EOF
+'$'
+EOF
diff --git a/shell/ash_test/ash-quoting/dollar_squote_bash1.right 
b/shell/ash_test/ash-quoting/dollar_squote_bash1.right
index 57536b1..9f4e25e 100644
--- a/shell/ash_test/ash-quoting/dollar_squote_bash1.right
+++ b/shell/ash_test/ash-quoting/dollar_squote_bash1.right
@@ -1,4 +1,5 @@
 a      b
+$'a\tb'
 a
 b c
 def
diff --git a/shell/ash_test/ash-quoting/dollar_squote_bash1.tests 
b/shell/ash_test/ash-quoting/dollar_squote_bash1.tests
index 93a56ca..6fc411b 100755
--- a/shell/ash_test/ash-quoting/dollar_squote_bash1.tests
+++ b/shell/ash_test/ash-quoting/dollar_squote_bash1.tests
@@ -1,4 +1,5 @@
 echo $'a\tb'
+echo "$'a\tb'"
 echo $'a\nb' $'c\nd''ef'
 echo $'a\'b' $'c\"d' $'e\\f'
 echo $'a\63b' $'c\063b' $'e\0633f'
-- 
2.5.5

_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to