diff options
| author | Denys Vlasenko <vda.linux@googlemail.com> | 2010-01-08 15:44:07 +0100 |
|---|---|---|
| committer | Denys Vlasenko <vda.linux@googlemail.com> | 2010-01-08 15:44:07 +0100 |
| commit | 8cd04d1cb658227d3c6eeb2a377314ca9cdf249d (patch) | |
| tree | 4a0b848cc7981db8bec06f6fa7f6be30f11134c2 /shell | |
| parent | c3c1fb676b900ed39c0cfa984059c1d40197b601 (diff) | |
| download | busybox-w32-8cd04d1cb658227d3c6eeb2a377314ca9cdf249d.tar.gz busybox-w32-8cd04d1cb658227d3c6eeb2a377314ca9cdf249d.tar.bz2 busybox-w32-8cd04d1cb658227d3c6eeb2a377314ca9cdf249d.zip | |
ash: fix for read $IFS splitting. Closes bug 235
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell')
| -rw-r--r-- | shell/ash.c | 2 | ||||
| -rw-r--r-- | shell/ash_test/ash-read/read_ifs.right | 17 | ||||
| -rwxr-xr-x | shell/ash_test/ash-read/read_ifs.tests | 17 |
3 files changed, 21 insertions, 15 deletions
diff --git a/shell/ash.c b/shell/ash.c index 2c1779f32..b47f0e881 100644 --- a/shell/ash.c +++ b/shell/ash.c | |||
| @@ -12615,7 +12615,7 @@ readcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) | |||
| 12615 | #endif | 12615 | #endif |
| 12616 | 12616 | ||
| 12617 | status = 0; | 12617 | status = 0; |
| 12618 | startword = 2; | 12618 | startword = 1; |
| 12619 | backslash = 0; | 12619 | backslash = 0; |
| 12620 | #if ENABLE_ASH_READ_TIMEOUT | 12620 | #if ENABLE_ASH_READ_TIMEOUT |
| 12621 | if (timeout) /* NB: ensuring end_ms is nonzero */ | 12621 | if (timeout) /* NB: ensuring end_ms is nonzero */ |
diff --git a/shell/ash_test/ash-read/read_ifs.right b/shell/ash_test/ash-read/read_ifs.right index 027ecd18f..b52334456 100644 --- a/shell/ash_test/ash-read/read_ifs.right +++ b/shell/ash_test/ash-read/read_ifs.right | |||
| @@ -1,7 +1,10 @@ | |||
| 1 | .a. .b. .c. | 1 | test 1: .a. .b. .c. |
| 2 | .a. .b. .c. | 2 | test 2: .a. .b. .c. |
| 3 | .a. .. .b,c. | 3 | test 3: .a. .. .b,c. |
| 4 | .a. .. .b,c. | 4 | test 4: .a. .. .b,c. |
| 5 | .a. .. .c. | 5 | test 5: .a. .. .c. |
| 6 | .a. .. .c. .d. | 6 | test 6: .a. .. .c. .d. |
| 7 | .a. .. .b,c,d , ,. | 7 | test 7: .a. .. .b,c,d , ,. |
| 8 | test 8: .. .a. .b. .c. | ||
| 9 | test 9: .a. .b. .c. .. | ||
| 10 | test A: .. .a. .. .b. .c. | ||
diff --git a/shell/ash_test/ash-read/read_ifs.tests b/shell/ash_test/ash-read/read_ifs.tests index cf7cd934c..6e8311247 100755 --- a/shell/ash_test/ash-read/read_ifs.tests +++ b/shell/ash_test/ash-read/read_ifs.tests | |||
| @@ -1,7 +1,10 @@ | |||
| 1 | printf 'a\t\tb\tc\n' | ( IFS=$(printf "\t") read a b c; echo ".$a. .$b. .$c." ) | 1 | printf 'a\t\tb\tc\n' | ( IFS=$(printf "\t") read a b c; echo "test 1: .$a. .$b. .$c." ) |
| 2 | printf 'a\t\tb\tc\n' | ( IFS=$(printf " \t") read a b c; echo ".$a. .$b. .$c." ) | 2 | printf 'a\t\tb\tc\n' | ( IFS=$(printf " \t") read a b c; echo "test 2: .$a. .$b. .$c." ) |
| 3 | printf 'a,,b,c\n' | ( IFS="," read a b c; echo ".$a. .$b. .$c." ) | 3 | printf 'a,,b,c\n' | ( IFS="," read a b c; echo "test 3: .$a. .$b. .$c." ) |
| 4 | printf 'a,,b,c\n' | ( IFS=" ," read a b c; echo ".$a. .$b. .$c." ) | 4 | printf 'a,,b,c\n' | ( IFS=" ," read a b c; echo "test 4: .$a. .$b. .$c." ) |
| 5 | printf 'a ,, c\n' | ( IFS=" ," read a b c; echo ".$a. .$b. .$c." ) | 5 | printf 'a ,, c\n' | ( IFS=" ," read a b c; echo "test 5: .$a. .$b. .$c." ) |
| 6 | printf 'a ,, c d\n' | ( IFS=" ," read a b c d; echo ".$a. .$b. .$c. .$d." ) | 6 | printf 'a ,, c d\n' | ( IFS=" ," read a b c d; echo "test 6: .$a. .$b. .$c. .$d." ) |
| 7 | printf ' a,,b,c,d , ,\n' | ( IFS=" ," read a b c; echo ".$a. .$b. .$c." ) | 7 | printf ' a,,b,c,d , ,\n' | ( IFS=" ," read a b c; echo "test 7: .$a. .$b. .$c." ) |
| 8 | printf '\t,\ta\t,\tb\tc' | ( IFS=$(printf " \t,") read a b c d; echo "test 8: .$a. .$b. .$c. .$d." ) | ||
| 9 | printf '\t\ta\t,\tb\tc' | ( IFS=$(printf " \t,") read a b c d; echo "test 9: .$a. .$b. .$c. .$d." ) | ||
| 10 | printf '\t,\ta\t,,\tb\tc' | ( IFS=$(printf " \t,") read a b c d e; echo "test A: .$a. .$b. .$c. .$d. .$e." ) | ||
