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 | |
parent | 73c3e074df4de03ba1bebce09c130c8950ea5fe4 (diff) | |
download | busybox-w32-459293b1c536515fbe7fafbae9932aefadb2fbaf.tar.gz busybox-w32-459293b1c536515fbe7fafbae9932aefadb2fbaf.tar.bz2 busybox-w32-459293b1c536515fbe7fafbae9932aefadb2fbaf.zip |
ash: fix arithmetic closing )) split by backslash-newline
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-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) | |||
11437 | if (parenlevel > 0) { | 11437 | if (parenlevel > 0) { |
11438 | parenlevel--; | 11438 | parenlevel--; |
11439 | } else { | 11439 | } else { |
11440 | if (pgetc() == ')') { | 11440 | if (pgetc_eatbnl() == ')') { |
11441 | c = CTLENDARI; | 11441 | c = CTLENDARI; |
11442 | if (--arinest == 0) { | 11442 | if (--arinest == 0) { |
11443 | syntax = prevsyntax; | 11443 | syntax = prevsyntax; |
@@ -11464,6 +11464,7 @@ readtoken1(int c, int syntax, char *eofmark, int striptabs) | |||
11464 | if (varnest == 0) { | 11464 | if (varnest == 0) { |
11465 | #if ENABLE_ASH_BASH_COMPAT | 11465 | #if ENABLE_ASH_BASH_COMPAT |
11466 | if (c == '&') { | 11466 | if (c == '&') { |
11467 | //Can't call pgetc_eatbnl() here, this requires three-deep pungetc() | ||
11467 | if (pgetc() == '>') | 11468 | if (pgetc() == '>') |
11468 | c = 0x100 + '>'; /* flag &> */ | 11469 | c = 0x100 + '>'; /* flag &> */ |
11469 | pungetc(); | 11470 | 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 @@ | |||
1 | Ok | 1 | Ok |
2 | Ba d | 2 | Ba d |
3 | Ok | 3 | Ok |
4 | Ok | ||
5 | Ok | ||
6 | Forty two:42 | ||
7 | 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' | |||
13 | eval $e | 13 | eval $e |
14 | # "Ok" | 14 | # "Ok" |
15 | eval "$e" | 15 | eval "$e" |
16 | |||
17 | echo $\ | ||
18 | (echo Ok\ | ||
19 | ) | ||
20 | echo "$\ | ||
21 | (echo Ok\ | ||
22 | )" | ||
23 | |||
24 | echo Forty two:$\ | ||
25 | (\ | ||
26 | (\ | ||
27 | 42\ | ||
28 | )\ | ||
29 | ) | ||
30 | echo "Forty two:$\ | ||
31 | (\ | ||
32 | (\ | ||
33 | 42\ | ||
34 | )\ | ||
35 | )" \ 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 @@ | |||
1 | Ok | 1 | Ok |
2 | Ba d | 2 | Ba d |
3 | Ok | 3 | Ok |
4 | Ok | ||
5 | Ok | ||
6 | Forty two:42 | ||
7 | 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' | |||
13 | eval $e | 13 | eval $e |
14 | # "Ok" | 14 | # "Ok" |
15 | eval "$e" | 15 | eval "$e" |
16 | |||
17 | echo $\ | ||
18 | (echo Ok\ | ||
19 | ) | ||
20 | echo "$\ | ||
21 | (echo Ok\ | ||
22 | )" | ||
23 | |||
24 | echo Forty two:$\ | ||
25 | (\ | ||
26 | (\ | ||
27 | 42\ | ||
28 | )\ | ||
29 | ) | ||
30 | echo "Forty two:$\ | ||
31 | (\ | ||
32 | (\ | ||
33 | 42\ | ||
34 | )\ | ||
35 | )" \ No newline at end of file | ||