Fix bug found by Joey Hess and forwarded by Bastian Bunk. Add Joey Hess's

test case to the testsuite, plus another one that would have been broken by
the first attempt at a fix.
This commit is contained in:
Rob Landley 2006-06-15 20:50:38 +00:00
parent cd82c3c041
commit 39218932b1
2 changed files with 16 additions and 4 deletions

View File

@ -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++) { for(i=1;i<key->range[2*j]+j;i++) {
/* Skip leading blanks or first separator */ /* Skip leading blanks or first separator */
if(str[end]) { if(str[end]) {
if(key_separator) { if(!key_separator && isspace(str[end]))
if(str[end]==key_separator) end++;
} else if(isspace(str[end]))
while(isspace(str[end])) end++; while(isspace(str[end])) end++;
} }
/* Skip body of key */ /* Skip body of key */

View File

@ -1,4 +1,4 @@
#!/bin/sh #!/bin/bash
# SUSv3 compliant sort tests. # SUSv3 compliant sort tests.
# Copyright 2005 by Rob Landley <rob@landley.net> # 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 egg 1 2 papyrus
" "$data" "" " "$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 exit $FAILCOUNT