bug-coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#12903: "cut -b 0-" is supposed to be invalid


From: Bernhard Voelker
Subject: bug#12903: "cut -b 0-" is supposed to be invalid
Date: Fri, 16 Nov 2012 21:20:32 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:16.0) Gecko/20121025 Thunderbird/16.0.2

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 <address@hidden>
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






reply via email to

[Prev in Thread] Current Thread [Next in Thread]