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;irange[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 @@ -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