[git commit] sort: check global flags on fallback sort
Denys Vlasenko
vda.linux at googlemail.com
Sun Jan 19 08:10:14 UTC 2014
commit: http://git.busybox.net/busybox/commit/?id=5c13ab41bb9472b792797a339f93a3a3ca62fd7a
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master
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 at gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
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 0b3b650..1cb4c3e 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 91b282e..68fa3e4 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
More information about the busybox-cvs
mailing list