diff options
author | Eicke Herbertz | 2021-06-05 11:42:06 +0000 |
---|---|---|
committer | Denys Vlasenko | 2021-06-05 18:06:47 +0200 |
commit | 1b30c63dfdd4f31faa6deda69345bf07f23aa334 (patch) | |
tree | 42f9ff40c089d97d3fd1fbb3df76cb717a3b175c /shell/shell_common.c | |
parent | c0f8113f86871f40daee690d7dd944bd5a31d95b (diff) | |
download | busybox-1b30c63dfdd4f31faa6deda69345bf07f23aa334.zip busybox-1b30c63dfdd4f31faa6deda69345bf07f23aa334.tar.gz |
shell: also do word splitting when -d DELIM is used
The original commit 3bef5d89b0 introduced an additional check
for an unset `opt_d` before doing word splitting. I'm unsure
why it's there in the first place, but the commit message also
describes a different behaviour than what -d actually does in
bash, while the code mostly does the right thing.
`opt_d` sets the line delimiter for read to stop reading and
should not affect word splitting.
Testcase:
$ echo qwe rty | { read -d Z a b; echo a:$a b:$b; }
a:qwe b:rty
function old new delta
shell_builtin_read 1314 1304 -10
Signed-off-by: Eicke Herbertz <wolletd@posteo.de>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell/shell_common.c')
-rw-r--r-- | shell/shell_common.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/shell/shell_common.c b/shell/shell_common.c index f95a35e..e3d6783 100644 --- a/shell/shell_common.c +++ b/shell/shell_common.c @@ -230,7 +230,7 @@ shell_builtin_read(struct builtin_read_params *params) * without variable names (bash compat). * Thus, "read" and "read REPLY" are not the same. */ - if (!params->opt_d && argv[0]) { + if (argv[0]) { /* http://www.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_05 */ const char *is_ifs = strchr(ifs, c); if (startword && is_ifs) { |