release
dev builds
extras
themes manual
wiki
device status forums
mailing lists
IRC bugs
patches
dev guide

# Rockbox mail archive

Subject: Re: how is strnatcmp aka "Interpret numbers while sorting" supposed to sort?

# Re: how is strnatcmp aka "Interpret numbers while sorting" supposed to sort?

From: Thomas Martitz <thomas.martitz_at_fhtw-berlin.de>
Date: Thu, 19 Mar 2009 16:07:03 +0100

Thomas Martitz wrote:
> Mike Holden wrote:
>> Thomas Martitz wrote:
>>
>>> After this discussion and the ones in IRC, it seems to me that the
>>> majority is in favor of ignoring leading zeros. This would also match
>>> with Nautilus' and Windows Explorer's sorting.
>>>
>>> And we can do that. Give that the usual browsers do it that way, it's
>>> also what the user expects, so it can't be bad. FS#10031 needs changing
>>> the algorithm anyway.
>>>
>>> So, should we do that? It at least seems to be the opinion of most
>>> people.
>>>
>>>
>>
>> Just had a quick look in My Computer on an XP box to see how this
>> does it.
>>
>> 1. 001 sorts before 01 and 01 sorts before 1, giving the conclusion that
>> underlying
>> number is the same (i.e. 000x < 00x for any number x).
>>
>> 2. 1 sorts before 2, 2 before 10, 10 befoer 11 etc, as expected giving
>> numeric sorting.
>>
>> 3. 001 sorts before 10 and 010, again giving expected sorting for the
>> numeric part.
>>
>> 4. Introducing letters into the equation, we can see that 00A sorts
>> before
>> 00aa, 001 and 1. This satisfies my expectation that leading zeroes
>> before
>> letters should sort first in the list, and not be sorted among the
>> letter
>> part only.
>>
>> All of these individual items line up to give a file listing that
>> doesn't
>> produce any surpries for me, so I would be happy with this set of rules.
>>
> This is what we'll be doing too. comparing 001 and 1, will yield 001 <
> 1, because if strnatcmp sorts the same, strcmp is asked.
Err, I guess point 4) isn't covered with my modification.