[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#16855: report a bug about shuf
From: |
Pádraig Brady |
Subject: |
bug#16855: report a bug about shuf |
Date: |
Mon, 24 Feb 2014 01:03:55 +0000 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130110 Thunderbird/17.0.2 |
On 02/23/2014 11:37 PM, Paul Eggert wrote:
> Thanks for the bug report. I've committed the attached patch.
>
> shuf.diff
>
>
> From 24eb395471176e24762b08bfcef7562911537504 Mon Sep 17 00:00:00 2001
> From: Paul Eggert <address@hidden>
> Date: Sun, 23 Feb 2014 15:34:48 -0800
> Subject: [PATCH] shuf: with -r, don't dump core if the input is empty
>
> Problem reported by valiant xiao in <http://bugs.gnu.org/16855>.
> * NEWS: Document this.
> * src/shuf.c (main): With -r, report an error if the input is empty.
> * tests/misc/shuf.sh: Test for the bug.
> ---
> NEWS | 3 +++
> src/shuf.c | 15 +++++++++++----
> tests/misc/shuf.sh | 4 ++++
> 3 files changed, 18 insertions(+), 4 deletions(-)
>
> diff --git a/NEWS b/NEWS
> index e72942b..2df246d 100644
> --- a/NEWS
> +++ b/NEWS
> @@ -22,6 +22,9 @@ GNU coreutils NEWS -*-
> outline -*-
> it would display an error, requiring --no-dereference to avoid the issue.
> [bug introduced in coreutils-5.3.0]
>
> + shuf -r no longer dumps core if the input is empty.
> + [bug introduced in coreutils-8.22]
> +
> ** New features
>
> od accepts a new option: --endian=TYPE to handle inputs with different byte
> diff --git a/src/shuf.c b/src/shuf.c
> index d4641fe..2a91072 100644
> --- a/src/shuf.c
> +++ b/src/shuf.c
> @@ -576,11 +576,18 @@ main (int argc, char **argv)
> /* Generate output according to requested method */
> if (repeat)
> {
> - if (input_range)
> - i = write_random_numbers (randint_source, head_lines,
> - lo_input, hi_input, eolbyte);
> + if (head_lines == 0)
> + i = 0;
> else
> - i = write_random_lines (randint_source, head_lines, line, n_lines);
> + {
> + if (n_lines == 0)
> + error (EXIT_FAILURE, 0, _("No lines to repeat"));
Thanks for the quick fix.
I was wondering if we do want to error if there is no input,
rather than silently exit(0)?
$ shuf -r -n1 /dev/null
shuf: No lines to repeat
I guess that makes sense since we can't fulfil the request
to repeat forever, or with -n; at least up to n.
I.E. rather than this being a transformation of the input,
the input in insufficient to generate the requested output.
thanks,
Pádraig.