mirror of
https://github.com/coreutils/coreutils.git
synced 2024-11-24 10:23:31 +08:00
sort: Ignore fields where end position is before the start position
* NEWS: Mention the fix * THANKS: Add Cliff Miller * src/sort.c (keycompare): Ensure lima >= texta * tests/misc/sort: Add 3 corresponding tests Signed-off-by: Pádraig Brady <P@draigBrady.com>
This commit is contained in:
parent
ba1c5239bc
commit
24c727d3c2
5
NEWS
5
NEWS
@ -7,6 +7,11 @@ GNU coreutils NEWS -*- outline -*-
|
||||
truncate -s failed to skip all whitespace in the option argument in
|
||||
some locales.
|
||||
|
||||
sort now correctly ignores fields whose ending position is specified
|
||||
before the start position. Previously in numeric mode the remaining
|
||||
part of the line after the start position was used as the sort key.
|
||||
[This bug appears to have been present in "the beginning".]
|
||||
|
||||
** Changes in behavior
|
||||
|
||||
ls --color: files with multiple hard links are no longer colored differently
|
||||
|
1
THANKS
1
THANKS
@ -112,6 +112,7 @@ Christophe LYON christophe.lyon@st.com
|
||||
Chuck Hedrick hedrick@klinzhai.rutgers.edu
|
||||
Clark Morgan cmorgan@aracnet.com
|
||||
Clement Wang clem.wang@overture.com
|
||||
Cliff Miller cbm@whatexit.org
|
||||
Colin Plumb colin@nyx.net
|
||||
Colin Watson cjw44@riva.ucam.org
|
||||
Collin Rogowski collin@rogowski.de
|
||||
|
@ -1998,9 +1998,13 @@ keycompare (const struct line *a, const struct line *b)
|
||||
char const *translate = key->translate;
|
||||
bool const *ignore = key->ignore;
|
||||
|
||||
/* Treat field ends before field starts as empty fields. */
|
||||
lima = MAX (texta, lima);
|
||||
limb = MAX (textb, limb);
|
||||
|
||||
/* Find the lengths. */
|
||||
size_t lena = lima <= texta ? 0 : lima - texta;
|
||||
size_t lenb = limb <= textb ? 0 : limb - textb;
|
||||
size_t lena = lima - texta;
|
||||
size_t lenb = limb - textb;
|
||||
|
||||
/* Actually compare the fields. */
|
||||
|
||||
|
@ -134,6 +134,10 @@ my @Tests =
|
||||
["07d", '+1 -3', {IN=>"y k b\nz k a\n"}, {OUT=>"z k a\ny k b\n"}],
|
||||
# ensure a character position of 0 includes whole field
|
||||
["07e", '-k 2,3.0', {IN=>"a a b\nz a a\n"}, {OUT=>"z a a\na a b\n"}],
|
||||
# ensure fields with end position before start are ignored
|
||||
["07f", '-n -k1.3,1.1', {IN=>"a 2\nb 1\n"}, {OUT=>"a 2\nb 1\n"}],
|
||||
["07g", '-n -k2.2,1.2', {IN=>"aa 2\nbb 1\n"}, {OUT=>"aa 2\nbb 1\n"}],
|
||||
["07h", '-k1.3nb,1.3', {IN=>" a 2\n b 1\n"}, {OUT=>" a 2\n b 1\n"}],
|
||||
#
|
||||
# report an error for `.' without following char spec
|
||||
["08a", '-k 2.,3', {EXIT=>2},
|
||||
|
Loading…
Reference in New Issue
Block a user