From 5c13ab41bb9472b792797a339f93a3a3ca62fd7a Mon Sep 17 00:00:00 2001 From: Bartosz Golaszewski Date: Sun, 19 Jan 2014 09:10:14 +0100 Subject: [PATCH] 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 Signed-off-by: Denys Vlasenko --- coreutils/sort.c | 8 ++++++-- testsuite/sort.tests | 3 --- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/coreutils/sort.c b/coreutils/sort.c index 0b3b650c9..1cb4c3e3f 100644 --- a/coreutils/sort.c +++ b/coreutils/sort.c @@ -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; } diff --git a/testsuite/sort.tests b/testsuite/sort.tests index 91b282ea0..68fa3e405 100755 --- a/testsuite/sort.tests +++ b/testsuite/sort.tests @@ -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