From 1b30c63dfdd4f31faa6deda69345bf07f23aa334 Mon Sep 17 00:00:00 2001 From: Eicke Herbertz Date: Sat, 5 Jun 2021 11:42:06 +0000 Subject: 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 Signed-off-by: Denys Vlasenko --- shell/shell_common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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) { -- cgit v1.1