diff options
-rw-r--r-- | shell/ash_test/ash-quoting/bkslash_case2.right | 3 | ||||
-rwxr-xr-x | shell/ash_test/ash-quoting/bkslash_case2.tests | 13 | ||||
-rw-r--r-- | shell/hush.c | 8 | ||||
-rw-r--r-- | shell/hush_test/hush-quoting/bkslash_case2.right | 3 | ||||
-rwxr-xr-x | shell/hush_test/hush-quoting/bkslash_case2.tests | 13 |
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 0000000..8d2038b --- /dev/null +++ b/shell/ash_test/ash-quoting/bkslash_case2.right @@ -0,0 +1,3 @@ +ok1 +ok2 +Ok: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 0000000..348ddc2 --- /dev/null +++ b/shell/ash_test/ash-quoting/bkslash_case2.tests @@ -0,0 +1,13 @@ +x='\abc' + +case "$x" in +\\*) echo ok1;; +*) echo BUG1;; +esac + +case $x in +\\*) echo ok2;; +*) echo BUG2;; +esac + +echo Ok:$? diff --git a/shell/hush.c b/shell/hush.c index 1779009..867a921 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) return (char*)list; } -#if ENABLE_HUSH_CASE +#if 0 static char* expand_strvec_to_string(char **argv) { char **list; @@ -8731,8 +8731,10 @@ static int run_list(struct pipe *pi) #if ENABLE_HUSH_CASE if (rword == RES_CASE) { debug_printf_exec("CASE cond_code:%d\n", cond_code); - case_word = expand_strvec_to_string(pi->cmds->argv); - unbackslash(case_word); + case_word = expand_string_to_string(pi->cmds->argv[0], 1); + debug_printf_exec("CASE word1:'%s'\n", case_word); + //unbackslash(case_word); + //debug_printf_exec("CASE word2:'%s'\n", case_word); continue; } 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 0000000..8d2038b --- /dev/null +++ b/shell/hush_test/hush-quoting/bkslash_case2.right @@ -0,0 +1,3 @@ +ok1 +ok2 +Ok: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 0000000..348ddc2 --- /dev/null +++ b/shell/hush_test/hush-quoting/bkslash_case2.tests @@ -0,0 +1,13 @@ +x='\abc' + +case "$x" in +\\*) echo ok1;; +*) echo BUG1;; +esac + +case $x in +\\*) echo ok2;; +*) echo BUG2;; +esac + +echo Ok:$? |