From: Bruno Haible Date: Fri, 9 Jun 2006 20:27:41 +0000 (+0000) Subject: Don't choose locales for which nl_langinfo(CODESET) is "". X-Git-Tag: v0.15~112 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=532a68e8c2d06a35db9fa4888765c2b799bb156e;p=thirdparty%2Fgettext.git Don't choose locales for which nl_langinfo(CODESET) is "". --- diff --git a/gettext-tools/m4/ChangeLog b/gettext-tools/m4/ChangeLog index 732c2a96b..6d4cdb431 100644 --- a/gettext-tools/m4/ChangeLog +++ b/gettext-tools/m4/ChangeLog @@ -1,3 +1,11 @@ +2006-06-04 Bruno Haible + + * locale-fr.m4 (gt_LOCALE_FR): Require AM_LANGINFO_CODESET. Verify + that nl_langinfo(CODESET) is nonempty. Set LC_CTYPE to empty for the + test. + (gt_LOCALE_FR_UTF8): Likewise. + Needed for MacOS X 10.3.x, to make the lang-tcl test work. + 2006-05-30 Ralf Wildenhues * regex.m4 (gl_INCLUDED_REGEX): Fix M4 underquoting. diff --git a/gettext-tools/m4/locale-fr.m4 b/gettext-tools/m4/locale-fr.m4 index 6c83f9eed..84c6dd5c3 100644 --- a/gettext-tools/m4/locale-fr.m4 +++ b/gettext-tools/m4/locale-fr.m4 @@ -1,5 +1,5 @@ -# locale-fr.m4 serial 2 (gettext-0.14.2) -dnl Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# locale-fr.m4 serial 3 (gettext-0.15) +dnl Copyright (C) 2003, 2005-2006 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. @@ -10,6 +10,7 @@ dnl Determine the name of a french locale with traditional encoding. AC_DEFUN([gt_LOCALE_FR], [ AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([AM_LANGINFO_CODESET]) AC_CACHE_CHECK([for a traditional french locale], gt_cv_locale_fr, [ macosx= case "$host_os" in @@ -27,15 +28,24 @@ AC_DEFUN([gt_LOCALE_FR], # See the comments in config.charset. Therefore we bypass the test. gt_cv_locale_fr=none else + AC_LANG_CONFTEST([AC_LANG_SOURCE([ changequote(,)dnl - cat < conftest.$ac_ext #include #include +#if HAVE_LANGINFO_CODESET +# include +#endif 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. + 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. */ +#if HAVE_LANGINFO_CODESET + if (nl_langinfo (CODESET) [0] == '\0') 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. */ @@ -43,30 +53,31 @@ int main () { if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1; return 0; } -EOF changequote([,])dnl + ])]) if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the - # configure script would override the LC_ALL setting. + # configure script would override the LC_ALL setting. Likewise for + # LC_CTYPE, which is also set at the beginning of the configure script. # Test for the usual locale name. - if (LC_ALL=fr_FR LC_TIME= ./conftest; exit) 2>/dev/null; then + if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_fr=fr_FR else # Test for the locale name with explicit encoding suffix. - if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= ./conftest; exit) 2>/dev/null; then + if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_fr=fr_FR.ISO-8859-1 else # Test for the AIX, OSF/1, FreeBSD, NetBSD locale name. - if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= ./conftest; exit) 2>/dev/null; then + if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_fr=fr_FR.ISO8859-1 else # Test for the HP-UX locale name. - if (LC_ALL=fr_FR.iso88591 LC_TIME= ./conftest; exit) 2>/dev/null; then + if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_fr=fr_FR.iso88591 else # Test for the Solaris 7 locale name. - if (LC_ALL=fr LC_TIME= ./conftest; exit) 2>/dev/null; then + 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. @@ -92,11 +103,15 @@ changequote([,])dnl dnl Determine the name of a french locale with UTF-8 encoding. AC_DEFUN([gt_LOCALE_FR_UTF8], [ + AC_REQUIRE([AM_LANGINFO_CODESET]) AC_CACHE_CHECK([for a french Unicode locale], gt_cv_locale_fr_utf8, [ + AC_LANG_CONFTEST([AC_LANG_SOURCE([ changequote(,)dnl - cat < conftest.$ac_ext #include #include +#if HAVE_LANGINFO_CODESET +# include +#endif struct tm t; char buf[16]; int main () { @@ -106,6 +121,12 @@ 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. + 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. */ +# if HAVE_LANGINFO_CODESET + if (nl_langinfo (CODESET) [0] == '\0') 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 two bytes long, with UTF-8 encoding. */ @@ -116,22 +137,23 @@ int main () { #endif return 0; } -EOF changequote([,])dnl + ])]) if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the - # configure script would override the LC_ALL setting. + # configure script would override the LC_ALL setting. Likewise for + # LC_CTYPE, which is also set at the beginning of the configure script. # Test for the usual locale name. - if (LC_ALL=fr_FR LC_TIME= ./conftest; exit) 2>/dev/null; then + if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_fr_utf8=fr_FR else # Test for the locale name with explicit encoding suffix. - if (LC_ALL=fr_FR.UTF-8 LC_TIME= ./conftest; exit) 2>/dev/null; then + if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_fr_utf8=fr_FR.UTF-8 else # Test for the Solaris 7 locale name. - if (LC_ALL=fr.UTF-8 LC_TIME= ./conftest; exit) 2>/dev/null; then + if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_fr_utf8=fr.UTF-8 else # None found.