[prev in list] [next in list] [prev in thread] [next in thread] 

List:       busybox
Subject:    Re: [PATCH] rev: correct output for long input lines
From:       Denys Vlasenko <vda.linux () googlemail ! com>
Date:       2021-08-21 22:08:41
Message-ID: CAK1hOcPqgt_0N8OAoMVVr41_1m_JLwddPNr8Mopz+z=0X981ug () mail ! gmail ! com
[Download RAW message or body]

Applied, thank you

On Sat, Aug 21, 2021 at 10:37 AM Ron Yorston <rmy@pobox.com> wrote:
> 
> The input buffer is initialised to a reasonable size and extended
> if necessary.  When this happened the offset into the buffer wasn't
> reset to zero so subsequent lines were appended to the long line.
> 
> Fix this and add some tests.
> 
> function                                             old     new   delta
> rev_main                                             377     368      -9
> ------------------------------------------------------------------------------
> (add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-9)               Total: -9 bytes
> 
> Signed-off-by: Ron Yorston <rmy@pobox.com>
> ---
> testsuite/rev.tests | 46 +++++++++++++++++++++++++++++++++++++++++++++
> util-linux/rev.c    |  1 +
> 2 files changed, 47 insertions(+)
> create mode 100755 testsuite/rev.tests
> 
> diff --git a/testsuite/rev.tests b/testsuite/rev.tests
> new file mode 100755
> index 000000000..dd65dcd3b
> --- /dev/null
> +++ b/testsuite/rev.tests
> @@ -0,0 +1,46 @@
> +#!/bin/sh
> +# Copyright 2021 by Ron Yorston
> +# Licensed under GPLv2, see file LICENSE in this source tree.
> +
> +. ./testing.sh
> +
> +# testing "test name" "commands" "expected result" "file input" "stdin"
> +
> +testing "rev works" \
> +       "rev input" \
> +"\
> +1 enil
> +
> +3 enil
> +" \
> +       "line 1\n\nline 3\n" \
> +       ""
> +
> +testing "rev file with missing newline" \
> +       "rev input" \
> +"\
> +1 enil
> +
> +3 enil" \
> +       "line 1\n\nline 3" \
> +       ""
> +
> +testing "rev file with NUL character" \
> +       "rev input" \
> +"\
> +nil
> +3 enil
> +" \
> +       "lin\000e 1\n\nline 3\n" \
> +       ""
> +
> +testing "rev file with long line" \
> +       "rev input" \
> +"\
> ++--------------+---------------+---------------+---------------+---------------+--- \
> ------------+---------------+---------------+---------------+---------------+------- \
> --------+---------------+---------------+---------------+---------------+---------------
>  +cba
> +" \
> +       "---------------+---------------+---------------+---------------+----------- \
> ----+---------------+---------------+---------------+---------------+--------------- \
> +---------------+---------------+---------------+---------------+---------------+--------------+\nabc\n" \
> \ +       ""
> +
> +exit $FAILCOUNT
> diff --git a/util-linux/rev.c b/util-linux/rev.c
> index d439b4da8..63b005c67 100644
> --- a/util-linux/rev.c
> +++ b/util-linux/rev.c
> @@ -109,6 +109,7 @@ int rev_main(int argc UNUSED_PARAM, char **argv)
> strrev(buf, strlen(buf));
> #endif
> fputs_stdout(buf);
> +                       pos = 0;
> }
> fclose(fp);
> } while (*argv);
> --
> 2.31.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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic