Hi Marcel, On 11/16/2012 07:35 AM, Marcel Böhme wrote: > Hi, > The command "echo 12345 | cut -b 0-" prints an empty line while it > should fail with "fields and positions are numbered from 1" according > to this specification "cut: diagnose a range starting with 0 (-f 0-2) > as invalid". > Can you confirm this is an incomplete bugfix made on 2007-05-22?
I'd say yes. Here's a proposed fix. Have a nice day, Berny >From 26c6ab75498c4ec6710828799f5452c8243feda1 Mon Sep 17 00:00:00 2001 From: Bernhard Voelker <[email protected]> Date: Fri, 16 Nov 2012 21:12:16 +0100 Subject: [PATCH] cut: do not accept the range 0- MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * src/cut.c (set_fields): Add a diagnostic for the invalid open range which start with Zero, i.e., the range 0-. * tests/misc/cut.pl: Add a test to ensure the range 0- fails. * Mention the fix. Reported by Marcel Böhme. --- NEWS | 3 +++ src/cut.c | 3 +++ tests/misc/cut.pl | 3 +++ 3 files changed, 9 insertions(+), 0 deletions(-) diff --git a/NEWS b/NEWS index db6a207..9239943 100644 --- a/NEWS +++ b/NEWS @@ -10,6 +10,9 @@ GNU coreutils NEWS -*- outline -*- ** Bug fixes + cut now does not accept the range 0- any longer. + [This bug was present in "the beginning".] + pr -n no longer crashes when passed values >= 32. Also line numbers are consistently padded with spaces, rather than with zeros for certain widths. [bug introduced in TEXTUTILS-1_22i] diff --git a/src/cut.c b/src/cut.c index 87380ac..2a57148 100644 --- a/src/cut.c +++ b/src/cut.c @@ -369,6 +369,9 @@ set_fields (const char *fieldstr) dash_found = true; fieldstr++; + if (lhs_specified && !value) + FATAL_ERROR (_("fields and positions are numbered from 1")); + initial = (lhs_specified ? value : 1); value = 0; } diff --git a/tests/misc/cut.pl b/tests/misc/cut.pl index 0ce051a..43a5108 100755 --- a/tests/misc/cut.pl +++ b/tests/misc/cut.pl @@ -46,6 +46,9 @@ my @Tests = # It was treated just like "-2". ['zero-2', '-f0-2', {ERR=>$from_1}, {EXIT => 1} ], + # Up to coreutils-8.20, specifying a range of 0- was not an error. + ['zero-3', '-b0-', {ERR=>$from_1}, {EXIT => 1} ], + ['1', '-d:', '-f1,3-', {IN=>"a:b:c\n"}, {OUT=>"a:c\n"}], ['2', '-d:', '-f1,3-', {IN=>"a:b:c\n"}, {OUT=>"a:c\n"}], ['3', qw(-d: -f2-), {IN=>"a:b:c\n"}, {OUT=>"b:c\n"}], -- 1.7.7
