bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: wcwidth on OpenBSD 4.0


From: Bruno Haible
Subject: Re: wcwidth on OpenBSD 4.0
Date: Thu, 10 Jan 2008 02:37:04 +0100
User-agent: KMail/1.5.4

I wrote:
> This should detect this bug:
> 
> 
> 2008-01-08  Bruno Haible  <address@hidden>
> 
>       * 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.

Well, it did not fix the testsuite failure. So I undid this commit and
instead applied this:

2008-01-09  Bruno Haible  <address@hidden>

        * tests/test-wcwidth.c: Include <string.h> and localcharset.h.
        (main): Don't perform the tests if setlocale did not install a UTF-8
        locale. Needed on OpenBSD 4.0.
        * modules/wcwidth-tests (Depends-on): Add localcharset.

*** tests/test-wcwidth.c.orig   2008-01-10 02:32:49.000000000 +0100
--- tests/test-wcwidth.c        2008-01-10 02:32:19.000000000 +0100
***************
*** 23,28 ****
--- 23,31 ----
  #include <locale.h>
  #include <stdio.h>
  #include <stdlib.h>
+ #include <string.h>
+ 
+ #include "localcharset.h"
  
  #define ASSERT(expr) \
    do                                                                       \
***************
*** 45,51 ****
      ASSERT (wcwidth (wc) == 1);
  
    /* Switch to an UTF-8 locale.  */
!   if (setlocale (LC_ALL, "fr_FR.UTF-8") != NULL)
      {
        /* Test width of ASCII characters.  */
        for (wc = 0x20; wc < 0x7F; wc++)
--- 48,60 ----
      ASSERT (wcwidth (wc) == 1);
  
    /* Switch to an UTF-8 locale.  */
!   if (setlocale (LC_ALL, "fr_FR.UTF-8") != NULL
!       /* Check whether it's really an UTF-8 locale.
!        On OpenBSD 4.0, the setlocale call succeeds only for the LC_CTYPE
!        category and therefore returns "C/fr_FR.UTF-8/C/C/C/C", but the
!        LC_CTYPE category is effectively set to an ASCII LC_CTYPE category;
!        in particular, locale_charset() returns "ASCII".  */
!       && strcmp (locale_charset (), "UTF-8") == 0)
      {
        /* Test width of ASCII characters.  */
        for (wc = 0x20; wc < 0x7F; wc++)
*** modules/wcwidth-tests.orig  2008-01-10 02:32:49.000000000 +0100
--- modules/wcwidth-tests       2008-01-10 02:25:32.000000000 +0100
***************
*** 2,7 ****
--- 2,8 ----
  tests/test-wcwidth.c
  
  Depends-on:
+ localcharset
  
  configure.ac:
  





reply via email to

[Prev in Thread] Current Thread [Next in Thread]