diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2016-09-29 17:58:58 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2016-09-29 17:58:58 +0200 |
commit | 459293b1c536515fbe7fafbae9932aefadb2fbaf (patch) | |
tree | 949cfa9001df3b0bea827200565eb8f36f028939 /shell | |
parent | 73c3e074df4de03ba1bebce09c130c8950ea5fe4 (diff) |
ash: fix arithmetic closing )) split by backslash-newline
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell')
-rw-r--r-- | shell/ash.c | 3 | ||||
-rw-r--r-- | shell/ash_test/ash-vars/var_unbackslash1.right | 4 | ||||
-rwxr-xr-x | shell/ash_test/ash-vars/var_unbackslash1.tests | 20 | ||||
-rw-r--r-- | shell/hush_test/hush-vars/var_unbackslash1.right | 4 | ||||
-rwxr-xr-x | shell/hush_test/hush-vars/var_unbackslash1.tests | 20 |
5 files changed, 50 insertions, 1 deletions
diff --git a/shell/ash.c b/shell/ash.c index b71fc0299..97f8d9377 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -11437,7 +11437,7 @@ readtoken1(int c, int syntax, char *eofmark, int striptabs) if (parenlevel > 0) { parenlevel--; } else { - if (pgetc() == ')') { + if (pgetc_eatbnl() == ')') { c = CTLENDARI; if (--arinest == 0) { syntax = prevsyntax; @@ -11464,6 +11464,7 @@ readtoken1(int c, int syntax, char *eofmark, int striptabs) if (varnest == 0) { #if ENABLE_ASH_BASH_COMPAT if (c == '&') { +//Can't call pgetc_eatbnl() here, this requires three-deep pungetc() if (pgetc() == '>') c = 0x100 + '>'; /* flag &> */ pungetc(); diff --git a/shell/ash_test/ash-vars/var_unbackslash1.right b/shell/ash_test/ash-vars/var_unbackslash1.right index 8d4eca34e..3e0c0e2af 100644 --- a/shell/ash_test/ash-vars/var_unbackslash1.right +++ b/shell/ash_test/ash-vars/var_unbackslash1.right @@ -1,3 +1,7 @@ Ok Ba d Ok +Ok +Ok +Forty two:42 +Forty two:42 diff --git a/shell/ash_test/ash-vars/var_unbackslash1.tests b/shell/ash_test/ash-vars/var_unbackslash1.tests index 8a9f2e249..cddd8ae5e 100755 --- a/shell/ash_test/ash-vars/var_unbackslash1.tests +++ b/shell/ash_test/ash-vars/var_unbackslash1.tests @@ -13,3 +13,23 @@ d' eval $e # "Ok" eval "$e" + +echo $\ +(echo Ok\ +) +echo "$\ +(echo Ok\ +)" + +echo Forty two:$\ +(\ +(\ +42\ +)\ +) +echo "Forty two:$\ +(\ +(\ +42\ +)\ +)"
\ No newline at end of file diff --git a/shell/hush_test/hush-vars/var_unbackslash1.right b/shell/hush_test/hush-vars/var_unbackslash1.right index 8d4eca34e..3e0c0e2af 100644 --- a/shell/hush_test/hush-vars/var_unbackslash1.right +++ b/shell/hush_test/hush-vars/var_unbackslash1.right @@ -1,3 +1,7 @@ Ok Ba d Ok +Ok +Ok +Forty two:42 +Forty two:42 diff --git a/shell/hush_test/hush-vars/var_unbackslash1.tests b/shell/hush_test/hush-vars/var_unbackslash1.tests index 8a9f2e249..cddd8ae5e 100755 --- a/shell/hush_test/hush-vars/var_unbackslash1.tests +++ b/shell/hush_test/hush-vars/var_unbackslash1.tests @@ -13,3 +13,23 @@ d' eval $e # "Ok" eval "$e" + +echo $\ +(echo Ok\ +) +echo "$\ +(echo Ok\ +)" + +echo Forty two:$\ +(\ +(\ +42\ +)\ +) +echo "Forty two:$\ +(\ +(\ +42\ +)\ +)"
\ No newline at end of file |