changeset 16333:04de064f29e0

wcwidth: Work around bug in UTF-8 locale on OpenBSD 5.0. * m4/wcwidth.m4 (gl_FUNC_WCWIDTH): Test also wcwidth of U+05B0. * doc/posix-functions/wcwidth.texi: Mention the OpenBSD 5.0 bug.
author Bruno Haible <bruno@clisp.org>
date Mon, 30 Jan 2012 21:31:57 +0100
parents 1f8299e68189
children 1ec7f32bf1ef
files ChangeLog doc/posix-functions/wcwidth.texi m4/wcwidth.m4
diffstat 3 files changed, 12 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2012-01-29  Bruno Haible  <bruno@clisp.org>
+
+	wcwidth: Work around bug in UTF-8 locale on OpenBSD 5.0.
+	* m4/wcwidth.m4 (gl_FUNC_WCWIDTH): Test also wcwidth of U+05B0.
+	* doc/posix-functions/wcwidth.texi: Mention the OpenBSD 5.0 bug.
+
 2012-01-29  Bruno Haible  <bruno@clisp.org>
 
 	quotearg: Fix test failure on MacOS X 10.5.
--- a/doc/posix-functions/wcwidth.texi
+++ b/doc/posix-functions/wcwidth.texi
@@ -17,7 +17,7 @@
 @item
 This function handles combining characters in UTF-8 locales incorrectly on some
 platforms:
-MacOS X 10.3.
+MacOS X 10.3, OpenBSD 5.0.
 @end itemize
 
 Portability problems not fixed by Gnulib:
--- a/m4/wcwidth.m4
+++ b/m4/wcwidth.m4
@@ -1,4 +1,4 @@
-# wcwidth.m4 serial 21
+# wcwidth.m4 serial 22
 dnl Copyright (C) 2006-2012 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -37,6 +37,7 @@
   if test $ac_cv_func_wcwidth = yes; then
     HAVE_WCWIDTH=1
     dnl On MacOS X 10.3, wcwidth(0x0301) (COMBINING ACUTE ACCENT) returns 1.
+    dnl On OpenBSD 5.0, wcwidth(0x05B0) (HEBREW POINT SHEVA) returns 1.
     dnl On OSF/1 5.1, wcwidth(0x200B) (ZERO WIDTH SPACE) returns 1.
     dnl This leads to bugs in 'ls' (coreutils).
     AC_CACHE_CHECK([whether wcwidth works reasonably in UTF-8 locales],
@@ -69,8 +70,10 @@
     {
       if (wcwidth (0x0301) > 0)
         result |= 1;
+      if (wcwidth (0x05B0) > 0)
+        result |= 2;
       if (wcwidth (0x200B) > 0)
-        result |= 2;
+        result |= 4;
     }
   return result;
 }]])],