aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBartosz Golaszewski <bartekgola@gmail.com>2014-01-19 09:10:14 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2014-01-19 09:10:14 +0100
commit5c13ab41bb9472b792797a339f93a3a3ca62fd7a (patch)
tree864ee45c1fec26cd160dce0bbbb95e1a95f6e27f
parent1a4d9f652169afa08680d3ff2c2cf9efa2a76a1b (diff)
downloadbusybox-w32-5c13ab41bb9472b792797a339f93a3a3ca62fd7a.tar.gz
busybox-w32-5c13ab41bb9472b792797a339f93a3a3ca62fd7a.tar.bz2
busybox-w32-5c13ab41bb9472b792797a339f93a3a3ca62fd7a.zip
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>
-rw-r--r--coreutils/sort.c8
-rwxr-xr-xtestsuite/sort.tests3
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)
302 } /* for */ 302 } /* for */
303 303
304 /* Perform fallback sort if necessary */ 304 /* Perform fallback sort if necessary */
305 if (!retval && !(option_mask32 & FLAG_s)) 305 if (!retval && !(option_mask32 & FLAG_s)) {
306 retval = strcmp(*(char **)xarg, *(char **)yarg); 306 retval = strcmp(*(char **)xarg, *(char **)yarg);
307 flags = option_mask32;
308 }
309
310 if (flags & FLAG_r)
311 return -retval;
307 312
308 if (flags & FLAG_r) return -retval;
309 return retval; 313 return retval;
310} 314}
311 315
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
47999 3 0 algebra 47999 3 0 algebra
48" "$data" "" 48" "$data" ""
49 49
50test x"$SKIP_KNOWN_BUGS" = x"" && {
51# Busybox is definitely doing these wrong. FIXME
52testing "sort key range with numeric option and global reverse" \ 50testing "sort key range with numeric option and global reverse" \
53"sort -k2,3n -r input" \ 51"sort -k2,3n -r input" \
54"egg 1 2 papyrus 52"egg 1 2 papyrus
@@ -65,7 +63,6 @@ testing "sort key range with multiple options" "sort -k2,3rn input" \
6542 1 3 woot 6342 1 3 woot
66egg 1 2 papyrus 64egg 1 2 papyrus
67" "$data" "" 65" "$data" ""
68}
69 66
70testing "sort key range with two -k options" "sort -k 2,2n -k 1,1r input" "\ 67testing "sort key range with two -k options" "sort -k 2,2n -k 1,1r input" "\
71d 2 68d 2