diff options
author | Kamil Dudka <kdudka@redhat.com> | 2016-07-18 19:04:44 +0200 |
---|---|---|
committer | Pádraig Brady <P@draigBrady.com> | 2016-07-18 22:12:32 +0100 |
commit | dfbc945a562f870f6647672374c00d4f1ffb6097 (patch) | |
tree | ffcfa583d444b054b01e07487307b84460872191 /src | |
parent | 5cc804337b06d46a2fe34f018e26e8bb8148b117 (diff) | |
download | coreutils-dfbc945a562f870f6647672374c00d4f1ffb6097.tar.xz |
sort: make -h work with -k and blank used as thousands separator
* src/sort.c (traverse_raw_number): Allow to skip only one occurrence
of thousands_sep to avoid finding the unit in the next column in case
thousands_sep matches as blank and is used as column delimiter.
* tests/misc/sort-h-thousands-sep.sh: Add regression test for this bug.
* tests/local.mk: Reference the test.
* NEWS: Mention the bug fix.
Reported at https://bugzilla.redhat.com/1355780
Fixes http://bugs.gnu.org/24015
Diffstat (limited to 'src')
-rw-r--r-- | src/sort.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/sort.c b/src/sort.c index 58c116747..038f6aee3 100644 --- a/src/sort.c +++ b/src/sort.c @@ -1902,13 +1902,17 @@ traverse_raw_number (char const **number) to be lacking in units. FIXME: add support for multibyte thousands_sep and decimal_point. */ - do + while (ISDIGIT (ch = *p++)) { - while (ISDIGIT (ch = *p++)) - if (max_digit < ch) - max_digit = ch; + if (max_digit < ch) + max_digit = ch; + + /* Allow to skip only one occurrence of thousands_sep to avoid finding + the unit in the next column in case thousands_sep matches as blank + and is used as column delimiter. */ + if (*p == thousands_sep) + ++p; } - while (ch == thousands_sep); if (ch == decimal_point) while (ISDIGIT (ch = *p++)) |