Applied, thanks!

On Wed, Feb 19, 2020 at 12:02 PM Ron Yorston <r...@pobox.com> wrote:
>
> Since commit 1ff7002b1 (xargs: fix handling of quoted arguments, closes
> 11441) the -n option hasn't worked properly:
>
>    $ echo 1 2 3 | xargs -n 1 echo
>    1
>    2
>
>    3
>
>    $
>
> Because state is now remembered between calls to process_stdin() it's
> necessary to update the state before any premature return.
>
> Signed-off-by: Ron Yorston <r...@pobox.com>
> ---
>  findutils/xargs.c     |  2 +-
>  testsuite/xargs.tests | 11 +++++++++++
>  2 files changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/findutils/xargs.c b/findutils/xargs.c
> index 4fb306bb8..ff04bfe7c 100644
> --- a/findutils/xargs.c
> +++ b/findutils/xargs.c
> @@ -315,6 +315,7 @@ static char* FAST_FUNC process_stdin(int n_max_chars, int 
> n_max_arg, char *buf)
>                         }
>                 }
>                 if (state == SPACE) {   /* word's delimiter or EOF detected */
> +                       state = NORM;
>                         if (q) {
>                                 bb_error_msg_and_die("unmatched %s quote",
>                                         q == '\'' ? "single" : "double");
> @@ -335,7 +336,6 @@ static char* FAST_FUNC process_stdin(int n_max_chars, int 
> n_max_arg, char *buf)
>                         if (n_max_arg == 0) {
>                                 goto ret;
>                         }
> -                       state = NORM;
>                 }
>                 if (p == buf) {
>                         goto ret;
> diff --git a/testsuite/xargs.tests b/testsuite/xargs.tests
> index 855b33bc2..159f1ff69 100755
> --- a/testsuite/xargs.tests
> +++ b/testsuite/xargs.tests
> @@ -48,6 +48,17 @@ testing "xargs argument line too long" \
>         "seq 10000 99999 | sed -e 's/^/\"/' -e 's/$/\"/' | xargs echo | grep 
> -o 99999; echo \$?" \
>         "99999\n0\n" \
>         "" ""
> +
> +testing "xargs -n1" \
> +       "xargs -n1 echo" \
> +       "1\n2\n3\n4\n5\n" \
> +       "" "1 2 3 4 5\n"
> +
> +testing "xargs -n2" \
> +       "xargs -n2 echo" \
> +       "1 2\n3 4\n5\n" \
> +       "" "1 2 3 4 5\n"
> +
>  SKIP=
>
>  exit $FAILCOUNT
> --
> 2.24.1
>
> _______________________________________________
> busybox mailing list
> busybox@busybox.net
> http://lists.busybox.net/mailman/listinfo/busybox
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to