X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=inline;f=m4%2Flocale-fr.m4;h=5bdd2ca57c1a8f547effad033843101a526043f3;hb=dac3bbf96357f7866a1094c228b4e5bea3fcf853;hp=22864cebb6caedd959b3990889e6b1e40cf7f252;hpb=736119c28bcec850f35474aa183633a347b228eb;p=gnulib.git diff --git a/m4/locale-fr.m4 b/m4/locale-fr.m4 index 22864cebb..5bdd2ca57 100644 --- a/m4/locale-fr.m4 +++ b/m4/locale-fr.m4 @@ -1,5 +1,5 @@ -# locale-fr.m4 serial 3 (gettext-0.15) -dnl Copyright (C) 2003, 2005-2006 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. @@ -13,10 +13,12 @@ AC_DEFUN([gt_LOCALE_FR], AC_REQUIRE([AM_LANGINFO_CODESET]) AC_CACHE_CHECK([for a traditional french locale], gt_cv_locale_fr, [ macosx= +changequote(,)dnl case "$host_os" in darwin[56]*) ;; darwin*) macosx=yes;; esac +changequote([,])dnl if test -n "$macosx"; then # On Darwin 7 (MacOS X), the libc supports some locales in non-UTF-8 # encodings, but the kernel does not support them. The documentation @@ -35,22 +37,41 @@ changequote(,)dnl #if HAVE_LANGINFO_CODESET # include #endif +#include +#include struct tm t; 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 situation, + 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 + locale_charset() function relies on the encoding suffix. Note that + LC_ALL is set on the command line. */ + if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1; #endif /* Check whether in the abbreviation of the second month, the second character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only one byte long. This excludes the UTF-8 encoding. */ t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4; if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1; + /* Check whether the decimal separator is a comma. + On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point + are nl_langinfo(RADIXCHAR) are both ".". */ + if (localeconv () ->decimal_point[0] != ',') return 1; return 0; } changequote([,])dnl @@ -80,13 +101,8 @@ changequote([,])dnl if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_fr=fr else - # Special test for NetBSD 1.6. - if test -f /usr/share/locale/fr_FR.ISO8859-1/LC_CTYPE; then - gt_cv_locale_fr=fr_FR.ISO8859-1 - else - # None found. - gt_cv_locale_fr=none - fi + # None found. + gt_cv_locale_fr=none fi fi fi @@ -112,6 +128,8 @@ changequote(,)dnl #if HAVE_LANGINFO_CODESET # include #endif +#include +#include struct tm t; char buf[16]; int main () { @@ -121,11 +139,24 @@ 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 situation, + 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 + locale_charset() function relies on the encoding suffix. Note that + LC_ALL is set on the command line. */ + if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1; # endif /* Check whether in the abbreviation of the second month, the second character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is @@ -135,6 +166,10 @@ int main () { || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v') return 1; #endif + /* Check whether the decimal separator is a comma. + On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point + are nl_langinfo(RADIXCHAR) are both ".". */ + if (localeconv () ->decimal_point[0] != ',') return 1; return 0; } changequote([,])dnl