Mercurial > hg > octave-kai > gnulib-hg
changeset 9585:1487c59e896d
Detect wcwidth bug on OpenBSD 4.0.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Tue, 08 Jan 2008 17:40:59 +0100 |
parents | f490fd6e4955 |
children | f513e07afcaa |
files | ChangeLog doc/functions/wcwidth.texi m4/wcwidth.m4 |
diffstat | 3 files changed, 14 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-01-08 Bruno Haible <bruno@clisp.org> + + * m4/wcwidth.m4 (gl_FUNC_WCWIDTH): Test also U+3000. Needed to + detect bug on OpenBSD 4.0. + * doc/functions/wcwidth.texi: Document the OpenBSD bug. + 2008-01-08 Eric Blake <ebb9@byu.net> Rewrite memmem to guarantee linear complexity without malloc.
--- a/doc/functions/wcwidth.texi +++ b/doc/functions/wcwidth.texi @@ -15,6 +15,10 @@ This function handles combining characters in UTF-8 locales incorrectly on some platforms: MacOS X 10.3. +@item +This function handles double-width CJK characters in UTF-8 locales incorrectly +on some platforms: +OpenBSD 4.0. @end itemize Portability problems not fixed by Gnulib:
--- a/m4/wcwidth.m4 +++ b/m4/wcwidth.m4 @@ -1,5 +1,5 @@ -# wcwidth.m4 serial 13 -dnl Copyright (C) 2006, 2007 Free Software Foundation, Inc. +# wcwidth.m4 serial 14 +dnl Copyright (C) 2006-2008 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -38,6 +38,7 @@ else dnl On MacOS X 10.3, wcwidth(0x0301) (COMBINING ACUTE ACCENT) returns 1. dnl On OSF/1 5.1, wcwidth(0x200B) (ZERO WIDTH SPACE) returns 1. + dnl On OpenBSD 4.0, wcwidth(0x3000) (IDEOGRAPHIC SPACE) returns 0. dnl This leads to bugs in 'ls' (coreutils). AC_CACHE_CHECK([whether wcwidth works reasonably in UTF-8 locales], [gl_cv_func_wcwidth_works], @@ -64,7 +65,7 @@ int main () { if (setlocale (LC_ALL, "fr_FR.UTF-8") != NULL) - if (wcwidth (0x0301) > 0 || wcwidth (0x200B) > 0) + if (wcwidth (0x0301) > 0 || wcwidth (0x200B) > 0 || wcwidth (0x3000) <= 1) return 1; return 0; }], [gl_cv_func_wcwidth_works=yes], [gl_cv_func_wcwidth_works=no],