From 95229319a01f836fadeb0d7dc4645a1abb044dd0 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sun, 13 Jan 2008 17:46:31 +0100 Subject: [PATCH] Avoid unsupported locales on OpenBSD. --- ChangeLog | 7 +++++++ m4/locale-fr.m4 | 30 ++++++++++++++++++++++-------- m4/locale-tr.m4 | 17 ++++++++++++----- m4/locale-zh.m4 | 17 ++++++++++++----- 4 files changed, 53 insertions(+), 18 deletions(-) diff --git a/ChangeLog b/ChangeLog index 28118d645..90a3cadd4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2008-01-13 Bruno Haible + * m4/locale-fr.m4 (gt_LOCALE_FR, gt_LOCALE_FR_UTF8): Check that the + locale encoding is not ASCII. Needed for OpenBSD 4.0. + * m4/locale-tr.m4 (gt_LOCALE_TR_UTF8): Likewise. + * m4/locale-zh.m4 (gt_LOCALE_ZH_CN): Likewise. + +2008-01-13 Bruno Haible + * lib/argp-fmtstream.h (__attribute__): Don't redefine if __STRICT_ANSI__ is set: it's not needed by any version of gcc. * lib/argp.h (__attribute__): Likewise. diff --git a/m4/locale-fr.m4 b/m4/locale-fr.m4 index 1130ebec3..28f342ca3 100644 --- a/m4/locale-fr.m4 +++ b/m4/locale-fr.m4 @@ -1,5 +1,5 @@ -# locale-fr.m4 serial 7 -dnl Copyright (C) 2003, 2005-2007 Free Software Foundation, Inc. +# locale-fr.m4 serial 8 +dnl Copyright (C) 2003, 2005-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. @@ -44,11 +44,18 @@ char buf[16]; int main () { /* Check whether the given locale name is recognized by the system. */ if (setlocale (LC_ALL, "") == NULL) return 1; - /* Check whether nl_langinfo(CODESET) is nonempty. + /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646". On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET) - is empty, and the behaviour of Tcl 8.4 in this locale is not useful. */ + is empty, and the behaviour of Tcl 8.4 in this locale is not useful. + On OpenBSD 4.0, when an unsupported locale is specified, setlocale() + succeeds but then nl_langinfo(CODESET) is "646". In this situations, + some unit tests fail. */ #if HAVE_LANGINFO_CODESET - if (nl_langinfo (CODESET) [0] == '\0') return 1; + { + const char *cs = nl_langinfo (CODESET); + if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0) + return 1; + } #endif #ifdef __CYGWIN__ /* On Cygwin, avoid locale names without encoding suffix, because the @@ -132,11 +139,18 @@ int main () { #if !defined(__BEOS__) /* Check whether the given locale name is recognized by the system. */ if (setlocale (LC_ALL, "") == NULL) return 1; - /* Check whether nl_langinfo(CODESET) is nonempty. + /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646". On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET) - is empty, and the behaviour of Tcl 8.4 in this locale is not useful. */ + is empty, and the behaviour of Tcl 8.4 in this locale is not useful. + On OpenBSD 4.0, when an unsupported locale is specified, setlocale() + succeeds but then nl_langinfo(CODESET) is "646". In this situations, + some unit tests fail. */ # if HAVE_LANGINFO_CODESET - if (nl_langinfo (CODESET) [0] == '\0') return 1; + { + const char *cs = nl_langinfo (CODESET); + if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0) + return 1; + } # endif # ifdef __CYGWIN__ /* On Cygwin, avoid locale names without encoding suffix, because the diff --git a/m4/locale-tr.m4 b/m4/locale-tr.m4 index 6bb7847f9..c7065d9bb 100644 --- a/m4/locale-tr.m4 +++ b/m4/locale-tr.m4 @@ -1,5 +1,5 @@ -# locale-tr.m4 serial 4 -dnl Copyright (C) 2003, 2005-2007 Free Software Foundation, Inc. +# locale-tr.m4 serial 5 +dnl Copyright (C) 2003, 2005-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. @@ -30,11 +30,18 @@ int main () { program return 1 on BeOS. */ /* Check whether the given locale name is recognized by the system. */ if (setlocale (LC_ALL, "") == NULL) return 1; - /* Check whether nl_langinfo(CODESET) is nonempty. + /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646". On MacOS X 10.3.5 (Darwin 7.5) in the tr_TR locale, nl_langinfo(CODESET) - is empty, and the behaviour of Tcl 8.4 in this locale is not useful. */ + is empty, and the behaviour of Tcl 8.4 in this locale is not useful. + On OpenBSD 4.0, when an unsupported locale is specified, setlocale() + succeeds but then nl_langinfo(CODESET) is "646". In this situations, + some unit tests fail. */ #if HAVE_LANGINFO_CODESET - if (nl_langinfo (CODESET) [0] == '\0') return 1; + { + const char *cs = nl_langinfo (CODESET); + if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0) + return 1; + } #endif #ifdef __CYGWIN__ /* On Cygwin, avoid locale names without encoding suffix, because the diff --git a/m4/locale-zh.m4 b/m4/locale-zh.m4 index 5e7c004af..f072a4346 100644 --- a/m4/locale-zh.m4 +++ b/m4/locale-zh.m4 @@ -1,5 +1,5 @@ -# locale-zh.m4 serial 3 -dnl Copyright (C) 2003, 2005-2007 Free Software Foundation, Inc. +# locale-zh.m4 serial 4 +dnl Copyright (C) 2003, 2005-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. @@ -47,11 +47,18 @@ int main () const char *p; /* Check whether the given locale name is recognized by the system. */ if (setlocale (LC_ALL, "") == NULL) return 1; - /* Check whether nl_langinfo(CODESET) is nonempty. + /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646". On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET) - is empty, and the behaviour of Tcl 8.4 in this locale is not useful. */ + is empty, and the behaviour of Tcl 8.4 in this locale is not useful. + On OpenBSD 4.0, when an unsupported locale is specified, setlocale() + succeeds but then nl_langinfo(CODESET) is "646". In this situations, + some unit tests fail. */ #if HAVE_LANGINFO_CODESET - if (nl_langinfo (CODESET) [0] == '\0') return 1; + { + const char *cs = nl_langinfo (CODESET); + if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0) + return 1; + } #endif #ifdef __CYGWIN__ /* On Cygwin, avoid locale names without encoding suffix, because the -- 2.11.0