summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS3
-rw-r--r--src/seq.c2
-rw-r--r--tests/check.mk1
-rwxr-xr-xtests/misc/seq15
4 files changed, 20 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index 2549d41d0..77458d652 100644
--- a/NEWS
+++ b/NEWS
@@ -55,6 +55,9 @@ GNU coreutils NEWS -*- outline -*-
od no longer suffers from platform bugs in printf(3). This is
probably most noticeable when using 'od -tfL' to print long doubles.
+ seq -0.1 0.1 2 now prints 2,0 when locale's decimal point is ",".
+ Before, it would mistakenly omit the final number in that example.
+
shuf honors the --zero-terminated (-z) option, even with --input-range=LO-HI
shuf --head-count is now correctly documented. The documentation
diff --git a/src/seq.c b/src/seq.c
index 55518dfab..b5f0651d1 100644
--- a/src/seq.c
+++ b/src/seq.c
@@ -306,7 +306,7 @@ print_numbers (char const *fmt, struct layout layout,
xalloc_die ();
x_str[x_strlen - layout.suffix_len] = '\0';
- if (xstrtold (x_str + layout.prefix_len, NULL, &x_val, c_strtold)
+ if (xstrtold (x_str + layout.prefix_len, NULL, &x_val, strtold)
&& abs_rel_diff (x_val, last) < DBL_EPSILON)
{
char *x0_str = NULL;
diff --git a/tests/check.mk b/tests/check.mk
index 03b89dc3f..9263c67d1 100644
--- a/tests/check.mk
+++ b/tests/check.mk
@@ -69,6 +69,7 @@ TESTS_ENVIRONMENT = \
}; \
export \
LOCALE_FR='$(LOCALE_FR)' \
+ LOCALE_FR_UTF8='$(LOCALE_FR_UTF8)' \
abs_top_builddir='$(abs_top_builddir)' \
abs_top_srcdir='$(abs_top_srcdir)' \
abs_srcdir='$(abs_srcdir)' \
diff --git a/tests/misc/seq b/tests/misc/seq
index f68d74cf5..8e76f42da 100755
--- a/tests/misc/seq
+++ b/tests/misc/seq
@@ -26,6 +26,10 @@ use strict;
my $prog = 'seq';
my $try_help = "Try `$prog --help' for more information.\n";
+my $locale = $ENV{LOCALE_FR_UTF8};
+! defined $locale || $locale eq 'none'
+ and $locale = 'C';
+
my @Tests =
(
['onearg-1', qw(10), {OUT => [(1..10)]}],
@@ -88,6 +92,17 @@ my @Tests =
{ERR => "seq: no % directive in format string `'\n" . $try_help }],
['fmt-e', qw(-f %g%g 1), {EXIT => 1},
{ERR => "seq: too many % directives in format string `%g%g'\n"}],
+
+ # With coreutils-6.12 and earlier, with a UTF8 numeric locale that uses
+ # something other than "." as the decimal point, this use of seq would
+ # fail to print the "2,0" endpoint.
+ ['locale-dec-pt', qw(-0.1 0.1 2),
+ {OUT => [qw(-0.1 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
+ 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0)]},
+
+ {ENV => "LC_ALL=$locale"},
+ {OUT_SUBST => 's/,/./g'},
+ ],
);
# Append a newline to each entry in the OUT array.