diff options
author | Jim Meyering <jim@meyering.net> | 2012-11-23 23:09:10 -0800 |
---|---|---|
committer | Jim Meyering <jim@meyering.net> | 2012-11-24 15:23:28 -0800 |
commit | 1b874511b60252a5c71c7a29046afdc99e5391bb (patch) | |
tree | 0479d0d9ae8111f1007e94b5c62679d4bb5658ab /src | |
parent | 6f374d7c4285d23eb09b5386a5feb94aa25126bb (diff) | |
download | coreutils-1b874511b60252a5c71c7a29046afdc99e5391bb.tar.xz |
cut: treat -b2-,3- like -b2-, not like -b3-
* src/cut.c (set_fields): When two right-open-ended ranges are
specified, don't blindly let the latter one take precedence over
the former. Instead, use the union of the ranges.
* tests/misc/cut.pl: Add tests to exercise this.
* NEWS (Bug fixes): Mention it.
Reported by Marcel Böhme in http://bugs.gnu.org/12966
Thanks to Berhard Voelker for catching log and NEWS typos.
Diffstat (limited to 'src')
-rw-r--r-- | src/cut.c | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -391,8 +391,10 @@ set_fields (const char *fieldstr) In any case, 'initial' contains the start of the range. */ if (!rhs_specified) { - /* 'n-'. From 'initial' to end of line. */ - eol_range_start = initial; + /* 'n-'. From 'initial' to end of line. If we've already + seen an M- range, ignore subsequent N- unless N < M. */ + if (eol_range_start == 0 || initial < eol_range_start) + eol_range_start = initial; field_found = true; } else |