df no longer corrupts displayed multibyte characters on macOS.
[bug introduced with coreutils-8.18]
+ seq no longer outputs inconsistent decimal point characters
+ for the last number, when locales are misconfigured.
+ [bug introduced in coreutils-7.0]
+
shred, sort, and split no longer falsely report ftruncate errors
when outputting to less-common file types. For example, the shell
command 'sort /dev/null -o /dev/stdout | cat' no longer fails with
#define AUTHORS proper_name ("Ulrich Drepper")
+/* True if the locale settings were honored. */
+static bool locale_ok;
+
/* If true print all number with equal width. */
static bool equal_width;
long double x_val;
char *x_str;
int x_strlen;
- setlocale (LC_NUMERIC, "C");
+ if (locale_ok)
+ setlocale (LC_NUMERIC, "C");
x_strlen = asprintf (&x_str, fmt, x);
- setlocale (LC_NUMERIC, "");
+ if (locale_ok)
+ setlocale (LC_NUMERIC, "");
if (x_strlen < 0)
xalloc_die ();
x_str[x_strlen - layout.suffix_len] = '\0';
initialize_main (&argc, &argv);
set_program_name (argv[0]);
- setlocale (LC_ALL, "");
+ locale_ok = !!setlocale (LC_ALL, "");
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
tests/misc/seq.pl \
tests/misc/seq-epipe.sh \
tests/misc/seq-io-errors.sh \
+ tests/misc/seq-locale.sh \
tests/misc/seq-long-double.sh \
tests/misc/seq-precision.sh \
tests/misc/head.pl \
--- /dev/null
+#!/bin/sh
+# Test for output with appropriate precision
+
+# Copyright (C) 2019 Free Software Foundation, Inc.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
+print_ver_ seq
+
+# With coreutils-8.30 and earlier, the last decimal point would be ','
+# when setlocale(LC_ALL, "") failed, but setlocale(LC_NUMERIC, "") succeeded.
+LC_ALL= LANG=invalid LC_NUMERIC=$LOCALE_FR_UTF8 seq 0.1 0.2 0.7 > out || fail=1
+uniq -w2 out > out-merge || framework_failure_
+test "$(wc -l < out-merge)" = 1 || { fail=1; cat out; }
+
+Exit $fail