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 <[email protected]> > 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.
