summaryrefslogtreecommitdiff
path: root/coreutils
diff options
context:
space:
mode:
authorBartosz Golaszewski2014-01-19 09:10:14 +0100
committerDenys Vlasenko2014-01-19 09:10:14 +0100
commit5c13ab41bb9472b792797a339f93a3a3ca62fd7a (patch)
tree864ee45c1fec26cd160dce0bbbb95e1a95f6e27f /coreutils
parent1a4d9f652169afa08680d3ff2c2cf9efa2a76a1b (diff)
downloadbusybox-5c13ab41bb9472b792797a339f93a3a3ca62fd7a.zip
busybox-5c13ab41bb9472b792797a339f93a3a3ca62fd7a.tar.gz
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>
Diffstat (limited to 'coreutils')
-rw-r--r--coreutils/sort.c8
1 files changed, 6 insertions, 2 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;
}