aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--shell/ash_test/ash-quoting/bkslash_case2.right3
-rwxr-xr-xshell/ash_test/ash-quoting/bkslash_case2.tests13
-rw-r--r--shell/hush.c8
-rw-r--r--shell/hush_test/hush-quoting/bkslash_case2.right3
-rwxr-xr-xshell/hush_test/hush-quoting/bkslash_case2.tests13
5 files changed, 37 insertions, 3 deletions
diff --git a/shell/ash_test/ash-quoting/bkslash_case2.right b/shell/ash_test/ash-quoting/bkslash_case2.right
new file mode 100644
index 000000000..8d2038bff
--- /dev/null
+++ b/shell/ash_test/ash-quoting/bkslash_case2.right
@@ -0,0 +1,3 @@
1ok1
2ok2
3Ok:0
diff --git a/shell/ash_test/ash-quoting/bkslash_case2.tests b/shell/ash_test/ash-quoting/bkslash_case2.tests
new file mode 100755
index 000000000..348ddc236
--- /dev/null
+++ b/shell/ash_test/ash-quoting/bkslash_case2.tests
@@ -0,0 +1,13 @@
1x='\abc'
2
3case "$x" in
4\\*) echo ok1;;
5*) echo BUG1;;
6esac
7
8case $x in
9\\*) echo ok2;;
10*) echo BUG2;;
11esac
12
13echo Ok:$?
diff --git a/shell/hush.c b/shell/hush.c
index 1779009e0..867a921ec 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -6347,7 +6347,7 @@ static char *expand_string_to_string(const char *str, int do_unbackslash)
6347 return (char*)list; 6347 return (char*)list;
6348} 6348}
6349 6349
6350#if ENABLE_HUSH_CASE 6350#if 0
6351static char* expand_strvec_to_string(char **argv) 6351static char* expand_strvec_to_string(char **argv)
6352{ 6352{
6353 char **list; 6353 char **list;
@@ -8731,8 +8731,10 @@ static int run_list(struct pipe *pi)
8731#if ENABLE_HUSH_CASE 8731#if ENABLE_HUSH_CASE
8732 if (rword == RES_CASE) { 8732 if (rword == RES_CASE) {
8733 debug_printf_exec("CASE cond_code:%d\n", cond_code); 8733 debug_printf_exec("CASE cond_code:%d\n", cond_code);
8734 case_word = expand_strvec_to_string(pi->cmds->argv); 8734 case_word = expand_string_to_string(pi->cmds->argv[0], 1);
8735 unbackslash(case_word); 8735 debug_printf_exec("CASE word1:'%s'\n", case_word);
8736 //unbackslash(case_word);
8737 //debug_printf_exec("CASE word2:'%s'\n", case_word);
8736 continue; 8738 continue;
8737 } 8739 }
8738 if (rword == RES_MATCH) { 8740 if (rword == RES_MATCH) {
diff --git a/shell/hush_test/hush-quoting/bkslash_case2.right b/shell/hush_test/hush-quoting/bkslash_case2.right
new file mode 100644
index 000000000..8d2038bff
--- /dev/null
+++ b/shell/hush_test/hush-quoting/bkslash_case2.right
@@ -0,0 +1,3 @@
1ok1
2ok2
3Ok:0
diff --git a/shell/hush_test/hush-quoting/bkslash_case2.tests b/shell/hush_test/hush-quoting/bkslash_case2.tests
new file mode 100755
index 000000000..348ddc236
--- /dev/null
+++ b/shell/hush_test/hush-quoting/bkslash_case2.tests
@@ -0,0 +1,13 @@
1x='\abc'
2
3case "$x" in
4\\*) echo ok1;;
5*) echo BUG1;;
6esac
7
8case $x in
9\\*) echo ok2;;
10*) echo BUG2;;
11esac
12
13echo Ok:$?