[Top][All Lists]
[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: