bug-coreutils
[Top][All Lists]
Advanced

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

bug#13080: [PATHC] improve error reporting


From: Pádraig Brady
Subject: bug#13080: [PATHC] improve error reporting
Date: Wed, 05 Dec 2012 14:29:47 +0000
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120615 Thunderbird/13.0.1

On 12/05/2012 01:55 PM, Pádraig Brady wrote:
On 12/05/2012 01:57 AM, Pádraig Brady wrote:

Keying on 0x80 doesn't seem right.
I'll apply this hunk instead in your name.
Please confirm.

diff --git a/src/cut.c b/src/cut.c
index 4219d24..f2e63dc 100644
--- a/src/cut.c
+++ b/src/cut.c
@@ -846,7 +846,7 @@ main (int argc, char **argv)
    if (operating_mode == undefined_mode)
      FATAL_ERROR (_("you must specify a list of bytes, characters, or 
fields"));

-  if (delim != '\0' && operating_mode != field_mode)
+  if (delim_specified && operating_mode != field_mode)
      FATAL_ERROR (_("an input delimiter may be specified only\
   when operating on fields"));

I got confirmation of the adjustment privately,
so I'm going to push the attached two patches,
which augment/adjust the cut test accordingly.

The previous mail omitted the following patch.

sorry,
Pádraig.

From b95a20224e40dd5e2d9eb3f0611e1db51b6f4e04 Mon Sep 17 00:00:00 2001
From: Cojocaru Alexandru <address@hidden>
Date: Wed, 5 Dec 2012 13:13:51 +0000
Subject: [PATCH 1/2] cut: improve error reporting

* src/cut.c (main): Treat a NUL delimiter (-d '') consistently
with non NUL delimiters, and disallow such a delimiter option,
unless a field is also specified.
(set_fields): Provide a more accurate error message when
a given list is invalid.
* tests/misc/cut.pl: Add a test case.
---
 src/cut.c         |    6 +++---
 tests/misc/cut.pl |    7 +++++++
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/cut.c b/src/cut.c
index 4219d24..dc83072 100644
--- a/src/cut.c
+++ b/src/cut.c
@@ -365,7 +365,7 @@ set_fields (const char *fieldstr)
           in_digits = false;
           /* Starting a range. */
           if (dash_found)
-            FATAL_ERROR (_("invalid byte or field list"));
+            FATAL_ERROR (_("invalid byte, character or field list"));
           dash_found = true;
           fieldstr++;

@@ -491,7 +491,7 @@ set_fields (const char *fieldstr)
           fieldstr++;
         }
       else
-        FATAL_ERROR (_("invalid byte or field list"));
+        FATAL_ERROR (_("invalid byte, character or field list"));
     }

   max_range_endpoint = 0;
@@ -846,7 +846,7 @@ main (int argc, char **argv)
   if (operating_mode == undefined_mode)
     FATAL_ERROR (_("you must specify a list of bytes, characters, or fields"));

-  if (delim != '\0' && operating_mode != field_mode)
+  if (delim_specified && operating_mode != field_mode)
     FATAL_ERROR (_("an input delimiter may be specified only\
  when operating on fields"));

diff --git a/tests/misc/cut.pl b/tests/misc/cut.pl
index 27768ff..aff0cbe 100755
--- a/tests/misc/cut.pl
+++ b/tests/misc/cut.pl
@@ -32,6 +32,8 @@ my $try = "Try '$prog --help' for more information.\n";
 my $from_1 = "$prog: fields and positions are numbered from 1\n$try";
 my $inval = "$prog: invalid byte or field list\n$try";
 my $no_endpoint = "$prog: invalid range with no endpoint: -\n$try";
+my $nofield = "$prog: an input delimiter may be specified only when " .
+              "operating on fields\n$try";

 my @Tests =
  (
@@ -118,6 +120,11 @@ my @Tests =
   ['multichar-od', qw(-d: --out=_._), '-f2,3', {IN=>"a:b:c\n"},
    {OUT=>"b_._c\n"}],

+  # Ensure delim is not allowed without a field
+  # Prior to 8.21, a NUL delim was allowed without a field
+  ['delim-no-field1', qw(-d ''), '-b1', {EXIT=>1}, {ERR=>$nofield}],
+  ['delim-no-field2', qw(-d:), '-b1', {EXIT=>1}, {ERR=>$nofield}],
+
   # Prior to 1.22i, you couldn't use a delimiter that would sign-extend.
   ['8bit-delim', '-d', "\255", '--out=_', '-f2,3', {IN=>"a\255b\255c\n"},
    {OUT=>"b_c\n"}],
--
1.7.6.4





reply via email to

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