summaryrefslogtreecommitdiff
path: root/src/seq.c
diff options
context:
space:
mode:
authorJim Meyering <meyering@redhat.com>2008-04-26 09:28:48 +0200
committerJim Meyering <meyering@redhat.com>2008-05-06 08:21:28 +0200
commit209850fd7e1e89cf8937310878bd22d70e3588a5 (patch)
tree4f124f7243ad25afb4ca6a2f2fab081a927a3016 /src/seq.c
parent4d3bf408b9a308a4702ac93546446927c12cc101 (diff)
downloadcoreutils-209850fd7e1e89cf8937310878bd22d70e3588a5.tar.xz
avoid problems with sign-extended "char" operand to is* functions
* src/cut.c (set_fields): Apply to_uchar to isblank operands. * src/uniq.c (find_field): Likewise. * src/seq.c (scan_arg): Likewise, for isspace. * tests/misc/uniq: New file. Test for the above, but only when isspace(0240). * tests/Makefile.am (TESTS): Add misc/uniq. * configure.ac: Use gt_LOCALE_FR. * tests/check.mk (TESTS_ENVIRONMENT): Propagate LOCALE_FR to scripts. * NEWS: Mention the bug fixes. Before this patch, on FreeBSD 6: $ printf 'x y z\nx \xa0 y z\n' > in $ LC_ALL=fr_FR.UTF-8 uniq -f2 in|tr ' ' . x.y.z x. .y.z With the patch: $ LC_ALL=fr_FR.UTF-8 uniq -f2 in|tr ' ' . x.y.z This also affected many other locales: for i in $(locale -a); do test $(LC_ALL=$i ./uniq -f1 in|wc -l) = $(LC_ALL=$i uniq -f1 in|wc -l) || echo $i ; done ... en_GB.ISO8859-1 en_GB.ISO8859-15 en_GB.UTF-8 en_IE.UTF-8 en_NZ.ISO8859-1 en_NZ.ISO8859-15 en_NZ.UTF-8 en_US.ISO8859-1 en_US.ISO8859-15 en_US.UTF-8 ...
Diffstat (limited to 'src/seq.c')
-rw-r--r--src/seq.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/seq.c b/src/seq.c
index 7fc89ad5d..efc0c7243 100644
--- a/src/seq.c
+++ b/src/seq.c
@@ -145,7 +145,7 @@ scan_arg (const char *arg)
}
/* We don't output spaces or '+' so don't include in width */
- while (isspace (*arg) || *arg == '+')
+ while (isspace (to_uchar (*arg)) || *arg == '+')
arg++;
ret.width = strlen (arg);