From cd51eb58a57dafbf90455dd3d4f66ff0e1942829 Mon Sep 17 00:00:00 2001 From: Kamil Dudka Date: Thu, 14 Jul 2016 16:50:51 +0200 Subject: [PATCH] make 'sort -h' work for arbitrary column ... even when using UTF-8 locales --- coreutils-i18n-sort-human.patch | 35 +++++++++++++++++++++++++++++++++ coreutils.spec | 4 ++++ 2 files changed, 39 insertions(+) create mode 100644 coreutils-i18n-sort-human.patch diff --git a/coreutils-i18n-sort-human.patch b/coreutils-i18n-sort-human.patch new file mode 100644 index 0000000..2469189 --- /dev/null +++ b/coreutils-i18n-sort-human.patch @@ -0,0 +1,35 @@ +From 3976ef5a20369d8b490907ab2cba2d617305a5e0 Mon Sep 17 00:00:00 2001 +From: Kamil Dudka +Date: Mon, 30 May 2016 16:19:20 +0200 +Subject: [PATCH] sort: do not use static array 'blanks' in human_numcompare() + +... because the array is not initialized with MB locales. Note this is +rather a conservative fix. I plan to do more cleanup of the i18n patch +in Fedora to prevent mistakes like this in future updates of coreutils. +--- + src/sort.c | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +diff --git a/src/sort.c b/src/sort.c +index 9e07ad8..e47b039 100644 +--- a/src/sort.c ++++ b/src/sort.c +@@ -2274,12 +2274,10 @@ find_unit_order (char const *number) + < K/k < M < G < T < P < E < Z < Y */ + + static int +-human_numcompare (char const *a, char const *b) ++human_numcompare (char *a, char *b) + { +- while (blanks[to_uchar (*a)]) +- a++; +- while (blanks[to_uchar (*b)]) +- b++; ++ skipblanks(&a, a + strlen(a)); ++ skipblanks(&b, b + strlen(b)); + + int diff = find_unit_order (a) - find_unit_order (b); + return (diff ? diff : strnumcmp (a, b, decimal_point, thousands_sep)); +-- +2.5.5 + diff --git a/coreutils.spec b/coreutils.spec index 425ab97..3cbe487 100644 --- a/coreutils.spec +++ b/coreutils.spec @@ -54,6 +54,8 @@ Patch803: coreutils-i18n-fix-unexpand.patch Patch805: coreutils-i18n-fix2-expand-unexpand.patch #(un)expand - test BOM headers Patch806: coreutils-i18n-un-expand-BOM.patch +# make 'sort -h' work for arbitrary column even when using UTF-8 locales +Patch807: coreutils-i18n-sort-human.patch #getgrouplist() patch from Ulrich Drepper. Patch908: coreutils-getgrouplist.patch @@ -188,6 +190,7 @@ including documentation and translations. %patch804 -p1 -b .i18n-cutold %patch805 -p1 -b .i18n-fix2-expand-unexpand %patch806 -p1 -b .i18n-BOM-expand-unexpand +%patch807 -p1 # Coreutils %patch908 -p1 -b .getgrouplist @@ -365,6 +368,7 @@ fi %changelog * Mon Oct 31 2016 Kamil Dudka - 8.25-7 +- make 'sort -h' work for arbitrary column even when using UTF-8 locales - install -Z now sets default SELinux context for created directories (#1339135) - switch to UTF8 locale when (un)expand input contains BOM header (#1158494)