GNU bug report logs -
#16855
report a bug about shuf
Previous Next
Reported by: valiant xiao <s2exqx <at> gmail.com>
Date: Sun, 23 Feb 2014 18:59:03 UTC
Severity: normal
Done: Paul Eggert <eggert <at> cs.ucla.edu>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
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 <eggert <at> cs.ucla.edu>
> 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.
This bug report was last modified 11 years and 87 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.