sort: -h now handles comparisons such as 6000K vs 5M and 5MiB vs 5MB
commitabd040180e210e74448c42f094aab1769ca6c636
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 30 Jul 2010 07:52:59 +0000 (30 01:52 -0600)
committerPaul Eggert <eggert@cs.ucla.edu>
Fri, 30 Jul 2010 07:53:46 +0000 (30 01:53 -0600)
tree5d1030fb4b77f7d0363d4a894a8bb0accb705bbb
parent1bf73ebb97b2f20bf3d8b1adba43fc9fbbc335f6
sort: -h now handles comparisons such as 6000K vs 5M and 5MiB vs 5MB

* NEWS: Document changes to sort -h.
* doc/coreutils.texi (sort invocation): Likewise.
* src/sort.c (long_double, strtold): Move to prelude, since they're
now used by multiple functions.
(LD): New macro.
(struct keyfield.iec_present): Remove this member.  All uses removed.
(check_mixed_SI_IEC): Remove.  This code was busted in the presence
of multiple threads, as it had a race condition.
(find_unit_order): Remove arg KEY; add arg THOU_SEP; arg ENDPTR is
now char ** rather than char const **.  Return an integer that
distinguishes decimal from binary powers.  Parse the number
consistently with the intersection of strtold and strnumcmp.
Set *ENDPTR unconditionally.
(compute_human): New static function.
(human_numcompare): Remove arg KEY.  Remove 'const' from other args.
Use strnumcmp if possible, but fall back on floating point if not.
(numcompare, general_numcompare): Arg EA is now char ** rather
than char const **.
(numcompare): Adjust to new find_unit_order signature and behavior.
(keycompare): Adjus to new human_numcompare signature.
* tests/misc/sort (h1, h3, h4, h6): Adjust to new behavior.
* tests/misc/sort-debug-keys: Likewise.
NEWS
doc/coreutils.texi
src/sort.c
tests/misc/sort
tests/misc/sort-debug-keys