sort's -k flag is buggy when M is also passed

2022-06-28 Thread Dennis Chen
All commands were run on both Ubuntu busybox v1.30.1 and Alpine busybox
v1.35.0.

I ran
echo "3 March\n2 April" | busybox sort -k 2,2M
and it returned
2 April
3 March
It should return
3 March
2 April
and indeed, that is what you get with GNU sort. (It doesn't seem to
matter what the numbers "2" and "3" are - I replaced them both with the
string "filler" and got the same result.)

This seems to only happen when the field number is >1. For instance
echo "March\nApril" | busybox sort -k 1,1M
correctly outputs
March
April

It also doesn't happen when M isn't passed into -k. For instance,
echo "a c\nb b" | sort -k 2,2
correctly returns
b b
a c
___
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox


Re: sort's -k flag is buggy when M is also passed

2022-06-29 Thread Dennis Chen
> Had to use -e to have it insert new line. 

FWIW, I was able to get your tests to work without -e. (Alpine, busybox 1.35.0)

> Looking at sort.c in busybox seems that
> static char key_separator; is just defined, but not
> assigned a default value?
> Don't know if this might resolve issue?
> static char key_separator=' ';

Using -t ' ' might work for some cases, but consider
abc March 3
de  April 2
This example is a little contrived, but you might easily see something
like this in the real world (think logfiles).
___
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox


Re: sort's -k flag is buggy when M is also passed

2022-07-29 Thread Denys Vlasenko
Fixed in git. Thank you.

On Wed, Jun 29, 2022 at 7:11 AM Dennis Chen  wrote:
>
> All commands were run on both Ubuntu busybox v1.30.1 and Alpine busybox
> v1.35.0.
>
> I ran
> echo "3 March\n2 April" | busybox sort -k 2,2M
> and it returned
> 2 April
> 3 March
> It should return
> 3 March
> 2 April
> and indeed, that is what you get with GNU sort. (It doesn't seem to
> matter what the numbers "2" and "3" are - I replaced them both with the
> string "filler" and got the same result.)
>
> This seems to only happen when the field number is >1. For instance
> echo "March\nApril" | busybox sort -k 1,1M
> correctly outputs
> March
> April
>
> It also doesn't happen when M isn't passed into -k. For instance,
> echo "a c\nb b" | sort -k 2,2
> correctly returns
> b b
> a c
> ___
> busybox mailing list
> busybox@busybox.net
> http://lists.busybox.net/mailman/listinfo/busybox
___
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox