diff options
author | Cojocaru Alexandru <xojoc@gmx.com> | 2012-12-05 13:13:51 +0000 |
---|---|---|
committer | Pádraig Brady <P@draigBrady.com> | 2012-12-06 09:37:16 +0000 |
commit | dd3193cd959684837b50d1aea8931a4c62ce2673 (patch) | |
tree | 4905cdbc69e76b849464b0c3c0592bc804768f0f | |
parent | df9065e552a17ab86b28dd7165678d15592015f8 (diff) | |
download | coreutils-dd3193cd959684837b50d1aea8931a4c62ce2673.tar.xz |
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.
-rw-r--r-- | src/cut.c | 6 | ||||
-rwxr-xr-x | tests/misc/cut.pl | 7 |
2 files changed, 10 insertions, 3 deletions
@@ -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 27768ff29..aff0cbe10 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"}], |