aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--coreutils/sort.c4
-rwxr-xr-xtestsuite/sort.tests16
2 files changed, 16 insertions, 4 deletions
diff --git a/coreutils/sort.c b/coreutils/sort.c
index fb58f6279..3354385a4 100644
--- a/coreutils/sort.c
+++ b/coreutils/sort.c
@@ -74,9 +74,7 @@ static char *get_key(char *str, struct sort_key *key, int flags)
for(i=1;i<key->range[2*j]+j;i++) {
/* Skip leading blanks or first separator */
if(str[end]) {
- if(key_separator) {
- if(str[end]==key_separator) end++;
- } else if(isspace(str[end]))
+ if(!key_separator && isspace(str[end]))
while(isspace(str[end])) end++;
}
/* Skip body of key */
diff --git a/testsuite/sort.tests b/testsuite/sort.tests
index d1b42532d..cd2e291b2 100755
--- a/testsuite/sort.tests
+++ b/testsuite/sort.tests
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# SUSv3 compliant sort tests.
# Copyright 2005 by Rob Landley <rob@landley.net>
@@ -66,4 +66,18 @@ testing "sort key range with multiple options" "sort -k2,3rn input" \
egg 1 2 papyrus
" "$data" ""
+testing "sort key doesn't strip leading blanks, disables fallback global sort" \
+"sort -n -k2 -t ' '" " a \n 1 \n 2 \n" "" " 2 \n 1 \n a \n"
+
+testing "sort key edge case with -t" "sort -n -k4 -t/" \
+"/usr/lib/finish-install.d/1
+/usr/lib/finish-install.d/4
+/usr/lib/prebaseconfig.d/2
+/usr/lib/prebaseconfig.d/6
+" "" "/usr/lib/finish-install.d/1
+/usr/lib/prebaseconfig.d/2
+/usr/lib/finish-install.d/4
+/usr/lib/prebaseconfig.d/6
+"
+
exit $FAILCOUNT