[PATCH 1/3] shell: Fix "read -d ''" behavior
Denys Vlasenko
vda.linux at googlemail.com
Fri Jul 31 16:43:27 UTC 2020
Applied, thanks!
On Mon, Jun 29, 2020 at 6:28 PM Christian Eggers <ceggers at arri.de> wrote:
>
> With bash's read builtin it is possible to read from a file (e.g.
> device-tree) until the first '\0' character:
>
> IFS= read -r -d '' VARIABLE < file
>
> In busybox ash the -d extension is also implemented, but checking the
> read character for '\0' has to be performed after comparing with the
> delimiter.
>
> Signed-off-by: Christian Eggers <ceggers at arri.de>
> ---
> shell/shell_common.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/shell/shell_common.c b/shell/shell_common.c
> index 12c4a073c..42c4c9c97 100644
> --- a/shell/shell_common.c
> +++ b/shell/shell_common.c
> @@ -209,8 +209,6 @@ shell_builtin_read(struct builtin_read_params *params)
> }
>
> c = buffer[bufpos];
> - if (c == '\0')
> - continue;
> if (!(read_flags & BUILTIN_READ_RAW)) {
> if (backslash) {
> backslash = 0;
> @@ -225,6 +223,8 @@ shell_builtin_read(struct builtin_read_params *params)
> }
> if (c == delim) /* '\n' or -d CHAR */
> break;
> + if (c == '\0')
> + continue;
>
> /* $IFS splitting. NOT done if we run "read"
> * without variable names (bash compat).
> --
> Christian Eggers
> Embedded software developer
>
> Arnold & Richter Cine Technik GmbH & Co. Betriebs KG
> Sitz: Muenchen - Registergericht: Amtsgericht Muenchen - Handelsregisternummer: HRA 57918
> Persoenlich haftender Gesellschafter: Arnold & Richter Cine Technik GmbH
> Sitz: Muenchen - Registergericht: Amtsgericht Muenchen - Handelsregisternummer: HRB 54477
> Geschaeftsfuehrer: Dr. Michael Neuhaeuser; Stephan Schenk; Walter Trauninger; Markus Zeiler
>
> _______________________________________________
> busybox mailing list
> busybox at busybox.net
> http://lists.busybox.net/mailman/listinfo/busybox
More information about the busybox
mailing list