Blame config/gnulib/locale-fr.m4

Packit Service 392537
# locale-fr.m4 serial 17
Packit Service 392537
dnl Copyright (C) 2003, 2005-2016 Free Software Foundation, Inc.
Packit Service 392537
dnl This file is free software; the Free Software Foundation
Packit Service 392537
dnl gives unlimited permission to copy and/or distribute it,
Packit Service 392537
dnl with or without modifications, as long as this notice is preserved.
Packit Service 392537
Packit Service 392537
dnl From Bruno Haible.
Packit Service 392537
Packit Service 392537
dnl Determine the name of a french locale with traditional encoding.
Packit Service 392537
AC_DEFUN([gt_LOCALE_FR],
Packit Service 392537
[
Packit Service 392537
  AC_REQUIRE([AC_CANONICAL_HOST])
Packit Service 392537
  AC_REQUIRE([AM_LANGINFO_CODESET])
Packit Service 392537
  AC_CACHE_CHECK([for a traditional french locale], [gt_cv_locale_fr], [
Packit Service 392537
    AC_LANG_CONFTEST([AC_LANG_SOURCE([
Packit Service 392537
changequote(,)dnl
Packit Service 392537
#include <locale.h>
Packit Service 392537
#include <time.h>
Packit Service 392537
#if HAVE_LANGINFO_CODESET
Packit Service 392537
# include <langinfo.h>
Packit Service 392537
#endif
Packit Service 392537
#include <stdlib.h>
Packit Service 392537
#include <string.h>
Packit Service 392537
struct tm t;
Packit Service 392537
char buf[16];
Packit Service 392537
int main () {
Packit Service 392537
  /* Check whether the given locale name is recognized by the system.  */
Packit Service 392537
#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
Packit Service 392537
  /* On native Windows, setlocale(category, "") looks at the system settings,
Packit Service 392537
     not at the environment variables.  Also, when an encoding suffix such
Packit Service 392537
     as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE
Packit Service 392537
     category of the locale to "C".  */
Packit Service 392537
  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
Packit Service 392537
      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
Packit Service 392537
    return 1;
Packit Service 392537
#else
Packit Service 392537
  if (setlocale (LC_ALL, "") == NULL) return 1;
Packit Service 392537
#endif
Packit Service 392537
  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
Packit Service 392537
     On Mac OS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
Packit Service 392537
     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
Packit Service 392537
     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
Packit Service 392537
     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
Packit Service 392537
     some unit tests fail.
Packit Service 392537
     On MirBSD 10, when an unsupported locale is specified, setlocale()
Packit Service 392537
     succeeds but then nl_langinfo(CODESET) is "UTF-8".  */
Packit Service 392537
#if HAVE_LANGINFO_CODESET
Packit Service 392537
  {
Packit Service 392537
    const char *cs = nl_langinfo (CODESET);
Packit Service 392537
    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
Packit Service 392537
        || strcmp (cs, "UTF-8") == 0)
Packit Service 392537
      return 1;
Packit Service 392537
  }
Packit Service 392537
#endif
Packit Service 392537
#ifdef __CYGWIN__
Packit Service 392537
  /* On Cygwin, avoid locale names without encoding suffix, because the
Packit Service 392537
     locale_charset() function relies on the encoding suffix.  Note that
Packit Service 392537
     LC_ALL is set on the command line.  */
Packit Service 392537
  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
Packit Service 392537
#endif
Packit Service 392537
  /* Check whether in the abbreviation of the second month, the second
Packit Service 392537
     character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only
Packit Service 392537
     one byte long. This excludes the UTF-8 encoding.  */
Packit Service 392537
  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
Packit Service 392537
  if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
Packit Service 392537
#if !defined __BIONIC__ /* Bionic libc's 'struct lconv' is just a dummy.  */
Packit Service 392537
  /* Check whether the decimal separator is a comma.
Packit Service 392537
     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
Packit Service 392537
     are nl_langinfo(RADIXCHAR) are both ".".  */
Packit Service 392537
  if (localeconv () ->decimal_point[0] != ',') return 1;
Packit Service 392537
#endif
Packit Service 392537
  return 0;
Packit Service 392537
}
Packit Service 392537
changequote([,])dnl
Packit Service 392537
      ])])
Packit Service 392537
    if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
Packit Service 392537
      case "$host_os" in
Packit Service 392537
        # Handle native Windows specially, because there setlocale() interprets
Packit Service 392537
        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
Packit Service 392537
        # "fr" or "fra" as "French" or "French_France.1252",
Packit Service 392537
        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
Packit Service 392537
        # "ja" as "Japanese" or "Japanese_Japan.932",
Packit Service 392537
        # and similar.
Packit Service 392537
        mingw*)
Packit Service 392537
          # Test for the native Windows locale name.
Packit Service 392537
          if (LC_ALL=French_France.1252 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
Packit Service 392537
            gt_cv_locale_fr=French_France.1252
Packit Service 392537
          else
Packit Service 392537
            # None found.
Packit Service 392537
            gt_cv_locale_fr=none
Packit Service 392537
          fi
Packit Service 392537
          ;;
Packit Service 392537
        *)
Packit Service 392537
          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
Packit Service 392537
          # otherwise on Mac OS X 10.3.5 the LC_TIME=C from the beginning of the
Packit Service 392537
          # configure script would override the LC_ALL setting. Likewise for
Packit Service 392537
          # LC_CTYPE, which is also set at the beginning of the configure script.
Packit Service 392537
          # Test for the usual locale name.
Packit Service 392537
          if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
Packit Service 392537
            gt_cv_locale_fr=fr_FR
Packit Service 392537
          else
Packit Service 392537
            # Test for the locale name with explicit encoding suffix.
Packit Service 392537
            if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
Packit Service 392537
              gt_cv_locale_fr=fr_FR.ISO-8859-1
Packit Service 392537
            else
Packit Service 392537
              # Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name.
Packit Service 392537
              if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
Packit Service 392537
                gt_cv_locale_fr=fr_FR.ISO8859-1
Packit Service 392537
              else
Packit Service 392537
                # Test for the HP-UX locale name.
Packit Service 392537
                if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
Packit Service 392537
                  gt_cv_locale_fr=fr_FR.iso88591
Packit Service 392537
                else
Packit Service 392537
                  # Test for the Solaris 7 locale name.
Packit Service 392537
                  if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
Packit Service 392537
                    gt_cv_locale_fr=fr
Packit Service 392537
                  else
Packit Service 392537
                    # None found.
Packit Service 392537
                    gt_cv_locale_fr=none
Packit Service 392537
                  fi
Packit Service 392537
                fi
Packit Service 392537
              fi
Packit Service 392537
            fi
Packit Service 392537
          fi
Packit Service 392537
          ;;
Packit Service 392537
      esac
Packit Service 392537
    fi
Packit Service 392537
    rm -fr conftest*
Packit Service 392537
  ])
Packit Service 392537
  LOCALE_FR=$gt_cv_locale_fr
Packit Service 392537
  AC_SUBST([LOCALE_FR])
Packit Service 392537
])
Packit Service 392537
Packit Service 392537
dnl Determine the name of a french locale with UTF-8 encoding.
Packit Service 392537
AC_DEFUN([gt_LOCALE_FR_UTF8],
Packit Service 392537
[
Packit Service 392537
  AC_REQUIRE([AM_LANGINFO_CODESET])
Packit Service 392537
  AC_CACHE_CHECK([for a french Unicode locale], [gt_cv_locale_fr_utf8], [
Packit Service 392537
    AC_LANG_CONFTEST([AC_LANG_SOURCE([
Packit Service 392537
changequote(,)dnl
Packit Service 392537
#include <locale.h>
Packit Service 392537
#include <time.h>
Packit Service 392537
#if HAVE_LANGINFO_CODESET
Packit Service 392537
# include <langinfo.h>
Packit Service 392537
#endif
Packit Service 392537
#include <stdlib.h>
Packit Service 392537
#include <string.h>
Packit Service 392537
struct tm t;
Packit Service 392537
char buf[16];
Packit Service 392537
int main () {
Packit Service 392537
  /* On BeOS and Haiku, locales are not implemented in libc.  Rather, libintl
Packit Service 392537
     imitates locale dependent behaviour by looking at the environment
Packit Service 392537
     variables, and all locales use the UTF-8 encoding.  */
Packit Service 392537
#if !(defined __BEOS__ || defined __HAIKU__)
Packit Service 392537
  /* Check whether the given locale name is recognized by the system.  */
Packit Service 392537
# if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
Packit Service 392537
  /* On native Windows, setlocale(category, "") looks at the system settings,
Packit Service 392537
     not at the environment variables.  Also, when an encoding suffix such
Packit Service 392537
     as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE
Packit Service 392537
     category of the locale to "C".  */
Packit Service 392537
  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
Packit Service 392537
      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
Packit Service 392537
    return 1;
Packit Service 392537
# else
Packit Service 392537
  if (setlocale (LC_ALL, "") == NULL) return 1;
Packit Service 392537
# endif
Packit Service 392537
  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
Packit Service 392537
     On Mac OS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
Packit Service 392537
     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
Packit Service 392537
     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
Packit Service 392537
     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
Packit Service 392537
     some unit tests fail.  */
Packit Service 392537
# if HAVE_LANGINFO_CODESET
Packit Service 392537
  {
Packit Service 392537
    const char *cs = nl_langinfo (CODESET);
Packit Service 392537
    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
Packit Service 392537
      return 1;
Packit Service 392537
  }
Packit Service 392537
# endif
Packit Service 392537
# ifdef __CYGWIN__
Packit Service 392537
  /* On Cygwin, avoid locale names without encoding suffix, because the
Packit Service 392537
     locale_charset() function relies on the encoding suffix.  Note that
Packit Service 392537
     LC_ALL is set on the command line.  */
Packit Service 392537
  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
Packit Service 392537
# endif
Packit Service 392537
  /* Check whether in the abbreviation of the second month, the second
Packit Service 392537
     character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is
Packit Service 392537
     two bytes long, with UTF-8 encoding.  */
Packit Service 392537
  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
Packit Service 392537
  if (strftime (buf, sizeof (buf), "%b", &t) < 4
Packit Service 392537
      || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v')
Packit Service 392537
    return 1;
Packit Service 392537
#endif
Packit Service 392537
#if !defined __BIONIC__ /* Bionic libc's 'struct lconv' is just a dummy.  */
Packit Service 392537
  /* Check whether the decimal separator is a comma.
Packit Service 392537
     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
Packit Service 392537
     are nl_langinfo(RADIXCHAR) are both ".".  */
Packit Service 392537
  if (localeconv () ->decimal_point[0] != ',') return 1;
Packit Service 392537
#endif
Packit Service 392537
  return 0;
Packit Service 392537
}
Packit Service 392537
changequote([,])dnl
Packit Service 392537
      ])])
Packit Service 392537
    if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
Packit Service 392537
      case "$host_os" in
Packit Service 392537
        # Handle native Windows specially, because there setlocale() interprets
Packit Service 392537
        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
Packit Service 392537
        # "fr" or "fra" as "French" or "French_France.1252",
Packit Service 392537
        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
Packit Service 392537
        # "ja" as "Japanese" or "Japanese_Japan.932",
Packit Service 392537
        # and similar.
Packit Service 392537
        mingw*)
Packit Service 392537
          # Test for the hypothetical native Windows locale name.
Packit Service 392537
          if (LC_ALL=French_France.65001 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
Packit Service 392537
            gt_cv_locale_fr_utf8=French_France.65001
Packit Service 392537
          else
Packit Service 392537
            # None found.
Packit Service 392537
            gt_cv_locale_fr_utf8=none
Packit Service 392537
          fi
Packit Service 392537
          ;;
Packit Service 392537
        *)
Packit Service 392537
          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
Packit Service 392537
          # otherwise on Mac OS X 10.3.5 the LC_TIME=C from the beginning of the
Packit Service 392537
          # configure script would override the LC_ALL setting. Likewise for
Packit Service 392537
          # LC_CTYPE, which is also set at the beginning of the configure script.
Packit Service 392537
          # Test for the usual locale name.
Packit Service 392537
          if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
Packit Service 392537
            gt_cv_locale_fr_utf8=fr_FR
Packit Service 392537
          else
Packit Service 392537
            # Test for the locale name with explicit encoding suffix.
Packit Service 392537
            if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
Packit Service 392537
              gt_cv_locale_fr_utf8=fr_FR.UTF-8
Packit Service 392537
            else
Packit Service 392537
              # Test for the Solaris 7 locale name.
Packit Service 392537
              if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
Packit Service 392537
                gt_cv_locale_fr_utf8=fr.UTF-8
Packit Service 392537
              else
Packit Service 392537
                # None found.
Packit Service 392537
                gt_cv_locale_fr_utf8=none
Packit Service 392537
              fi
Packit Service 392537
            fi
Packit Service 392537
          fi
Packit Service 392537
          ;;
Packit Service 392537
      esac
Packit Service 392537
    fi
Packit Service 392537
    rm -fr conftest*
Packit Service 392537
  ])
Packit Service 392537
  LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8
Packit Service 392537
  AC_SUBST([LOCALE_FR_UTF8])
Packit Service 392537
])