sort: check global flags on fallback sort

Sort now performs global reverse on fallback sort if -r is set. Before
only key local flags were checked.

function                                             old     new   delta
compare_keys                                         712     738     +26

Signed-off-by: Bartosz Golaszewski <bartekgola@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Bartosz Golaszewski 2014-01-19 09:10:14 +01:00 committed by Denys Vlasenko
parent 1a4d9f6521
commit 5c13ab41bb
2 changed files with 6 additions and 5 deletions

View File

@ -302,10 +302,14 @@ static int compare_keys(const void *xarg, const void *yarg)
} /* for */
/* Perform fallback sort if necessary */
if (!retval && !(option_mask32 & FLAG_s))
if (!retval && !(option_mask32 & FLAG_s)) {
retval = strcmp(*(char **)xarg, *(char **)yarg);
flags = option_mask32;
}
if (flags & FLAG_r)
return -retval;
if (flags & FLAG_r) return -retval;
return retval;
}

View File

@ -47,8 +47,6 @@ egg 1 2 papyrus
999 3 0 algebra
" "$data" ""
test x"$SKIP_KNOWN_BUGS" = x"" && {
# Busybox is definitely doing these wrong. FIXME
testing "sort key range with numeric option and global reverse" \
"sort -k2,3n -r input" \
"egg 1 2 papyrus
@ -65,7 +63,6 @@ testing "sort key range with multiple options" "sort -k2,3rn input" \
42 1 3 woot
egg 1 2 papyrus
" "$data" ""
}
testing "sort key range with two -k options" "sort -k 2,2n -k 1,1r input" "\
d 2