aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2022-01-04 23:53:21 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2022-01-04 23:53:21 +0100
commitcc7d2e21780c28608b00a4faf0fed297527bcbf4 (patch)
treee3fbe3c8461299d14687e490d1b70ea1b80879fd
parentdfd8aafcf59c88662516a534a4334b3f08f58c88 (diff)
downloadbusybox-w32-cc7d2e21780c28608b00a4faf0fed297527bcbf4.tar.gz
busybox-w32-cc7d2e21780c28608b00a4faf0fed297527bcbf4.tar.bz2
busybox-w32-cc7d2e21780c28608b00a4faf0fed297527bcbf4.zip
sort: fix -s -r interaction: 'stable' order is not affected by -r
function old new delta compare_keys 818 820 +2 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--coreutils/sort.c4
-rwxr-xr-xtestsuite/sort.tests13
2 files changed, 16 insertions, 1 deletions
diff --git a/coreutils/sort.c b/coreutils/sort.c
index 0cbb6f597..9ff777851 100644
--- a/coreutils/sort.c
+++ b/coreutils/sort.c
@@ -380,7 +380,9 @@ static int compare_keys(const void *xarg, const void *yarg)
380 380
381 /* If x > y, 1, else -1 */ 381 /* If x > y, 1, else -1 */
382 retval = (x32 > y32) * 2 - 1; 382 retval = (x32 > y32) * 2 - 1;
383 } else 383 /* Here, -r has no effect! */
384 return retval;
385 }
384 if (!(option_mask32 & FLAG_no_tie_break)) { 386 if (!(option_mask32 & FLAG_no_tie_break)) {
385 /* fallback sort */ 387 /* fallback sort */
386 flags = option_mask32; 388 flags = option_mask32;
diff --git a/testsuite/sort.tests b/testsuite/sort.tests
index c51a8e475..5375f93de 100755
--- a/testsuite/sort.tests
+++ b/testsuite/sort.tests
@@ -175,6 +175,19 @@ testing "sort file in place" \
175111 175111
176" "" 176" ""
177 177
178testing "sort -sr (stable and reverse) does NOT reverse 'stable' ordering" \
179"sort -k2 -r -s input" "\
180b 2
181d 2
182a 1
183c 1
184" "\
185a 1
186b 2
187c 1
188d 2
189" ""
190
178# testing "description" "command(s)" "result" "infile" "stdin" 191# testing "description" "command(s)" "result" "infile" "stdin"
179 192
180exit $FAILCOUNT 193exit $FAILCOUNT