diff options
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | src/sort.c | 3 | ||||
-rwxr-xr-x | tests/misc/sort-debug-keys.sh | 7 |
3 files changed, 13 insertions, 1 deletions
@@ -15,6 +15,10 @@ GNU coreutils NEWS -*- outline -*- shred again uses defined patterns for all iteration counts. [bug introduced in coreutils-5.93] + sort --debug -b now correctly marks the matching extents for keys + that specify an offset for the first field. + [bug introduced with the --debug feature in coreutils-8.6] + ** New commands base32 is added to complement the existing base64 command, diff --git a/src/sort.c b/src/sort.c index cf29727de..37b3b8b8f 100644 --- a/src/sort.c +++ b/src/sort.c @@ -2274,7 +2274,8 @@ debug_key (struct line const *line, struct keyfield const *key) if (key->eword != SIZE_MAX) lim = limfield (line, key); - if (key->skipsblanks || key->month || key_numeric (key)) + if ((key->skipsblanks && key->sword == SIZE_MAX) + || key->month || key_numeric (key)) { char saved = *lim; *lim = '\0'; diff --git a/tests/misc/sort-debug-keys.sh b/tests/misc/sort-debug-keys.sh index a0a287401..fadd19c6a 100755 --- a/tests/misc/sort-debug-keys.sh +++ b/tests/misc/sort-debug-keys.sh @@ -238,6 +238,10 @@ A>chr10 ^ no match for key B>chr1 ^ no match for key +1 2 + __ +1 3 + __ EOF ( @@ -282,6 +286,9 @@ printf '\0\ta\n' | sort -s -k2b,2 --debug | tr -d '\0' # Check that key end before key start is not underlined printf 'A\tchr10\nB\tchr1\n' | sort -s -k2.4b,2.3n --debug + +# Ensure that -b applied before -k offsets +printf '1 2\n1 3\n' | sort -s -k1.2b --debug ) > out compare exp out || fail=1 |