Blame m4/locale-tr.m4

Packit 709fb3
# locale-tr.m4 serial 10
Packit 709fb3
dnl Copyright (C) 2003, 2005-2017 Free Software Foundation, Inc.
Packit 709fb3
dnl This file is free software; the Free Software Foundation
Packit 709fb3
dnl gives unlimited permission to copy and/or distribute it,
Packit 709fb3
dnl with or without modifications, as long as this notice is preserved.
Packit 709fb3
Packit 709fb3
dnl From Bruno Haible.
Packit 709fb3
Packit 709fb3
dnl Determine the name of a turkish locale with UTF-8 encoding.
Packit 709fb3
AC_DEFUN([gt_LOCALE_TR_UTF8],
Packit 709fb3
[
Packit 709fb3
  AC_REQUIRE([AC_CANONICAL_HOST])
Packit 709fb3
  AC_REQUIRE([AM_LANGINFO_CODESET])
Packit 709fb3
  AC_CACHE_CHECK([for a turkish Unicode locale], [gt_cv_locale_tr_utf8], [
Packit 709fb3
    AC_LANG_CONFTEST([AC_LANG_SOURCE([
Packit 709fb3
changequote(,)dnl
Packit 709fb3
#include <locale.h>
Packit 709fb3
#include <time.h>
Packit 709fb3
#if HAVE_LANGINFO_CODESET
Packit 709fb3
# include <langinfo.h>
Packit 709fb3
#endif
Packit 709fb3
#include <stdlib.h>
Packit 709fb3
#include <string.h>
Packit 709fb3
struct tm t;
Packit 709fb3
char buf[16];
Packit 709fb3
int main () {
Packit 709fb3
  /* On BeOS, locales are not implemented in libc.  Rather, libintl
Packit 709fb3
     imitates locale dependent behaviour by looking at the environment
Packit 709fb3
     variables, and all locales use the UTF-8 encoding.  But BeOS does not
Packit 709fb3
     implement the Turkish upper-/lowercase mappings.  Therefore, let this
Packit 709fb3
     program return 1 on BeOS.  */
Packit 709fb3
  /* Check whether the given locale name is recognized by the system.  */
Packit 709fb3
#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
Packit 709fb3
  /* On native Windows, setlocale(category, "") looks at the system settings,
Packit 709fb3
     not at the environment variables.  Also, when an encoding suffix such
Packit 709fb3
     as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE
Packit 709fb3
     category of the locale to "C".  */
Packit 709fb3
  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
Packit 709fb3
      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
Packit 709fb3
    return 1;
Packit 709fb3
#else
Packit 709fb3
  if (setlocale (LC_ALL, "") == NULL) return 1;
Packit 709fb3
#endif
Packit 709fb3
  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
Packit 709fb3
     On Mac OS X 10.3.5 (Darwin 7.5) in the tr_TR locale, nl_langinfo(CODESET)
Packit 709fb3
     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
Packit 709fb3
     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
Packit 709fb3
     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
Packit 709fb3
     some unit tests fail.  */
Packit 709fb3
#if HAVE_LANGINFO_CODESET
Packit 709fb3
  {
Packit 709fb3
    const char *cs = nl_langinfo (CODESET);
Packit 709fb3
    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
Packit 709fb3
      return 1;
Packit 709fb3
  }
Packit 709fb3
#endif
Packit 709fb3
#ifdef __CYGWIN__
Packit 709fb3
  /* On Cygwin, avoid locale names without encoding suffix, because the
Packit 709fb3
     locale_charset() function relies on the encoding suffix.  Note that
Packit 709fb3
     LC_ALL is set on the command line.  */
Packit 709fb3
  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
Packit 709fb3
#endif
Packit 709fb3
  /* Check whether in the abbreviation of the eighth month, the second
Packit 709fb3
     character (should be U+011F: LATIN SMALL LETTER G WITH BREVE) is
Packit 709fb3
     two bytes long, with UTF-8 encoding.  */
Packit 709fb3
  t.tm_year = 1992 - 1900; t.tm_mon = 8 - 1; t.tm_mday = 19;
Packit 709fb3
  if (strftime (buf, sizeof (buf), "%b", &t) < 4
Packit 709fb3
      || buf[1] != (char) 0xc4 || buf[2] != (char) 0x9f)
Packit 709fb3
    return 1;
Packit 709fb3
  /* Check whether the upper-/lowercase mappings are as expected for
Packit 709fb3
     Turkish.  */
Packit 709fb3
  if (towupper ('i') != 0x0130 || towlower (0x0130) != 'i'
Packit 709fb3
      || towupper(0x0131) != 'I' || towlower ('I') != 0x0131)
Packit 709fb3
    return 1;
Packit 709fb3
  return 0;
Packit 709fb3
}
Packit 709fb3
changequote([,])dnl
Packit 709fb3
      ])])
Packit 709fb3
    if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
Packit 709fb3
      case "$host_os" in
Packit 709fb3
        # Handle native Windows specially, because there setlocale() interprets
Packit 709fb3
        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
Packit 709fb3
        # "fr" or "fra" as "French" or "French_France.1252",
Packit 709fb3
        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
Packit 709fb3
        # "ja" as "Japanese" or "Japanese_Japan.932",
Packit 709fb3
        # and similar.
Packit 709fb3
        mingw*)
Packit 709fb3
          # Test for the hypothetical native Windows locale name.
Packit 709fb3
          if (LC_ALL=Turkish_Turkey.65001 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
Packit 709fb3
            gt_cv_locale_tr_utf8=Turkish_Turkey.65001
Packit 709fb3
          else
Packit 709fb3
            # None found.
Packit 709fb3
            gt_cv_locale_tr_utf8=none
Packit 709fb3
          fi
Packit 709fb3
          ;;
Packit 709fb3
        *)
Packit 709fb3
          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
Packit 709fb3
          # otherwise on Mac OS X 10.3.5 the LC_TIME=C from the beginning of the
Packit 709fb3
          # configure script would override the LC_ALL setting. Likewise for
Packit 709fb3
          # LC_CTYPE, which is also set at the beginning of the configure script.
Packit 709fb3
          # Test for the usual locale name.
Packit 709fb3
          if (LC_ALL=tr_TR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
Packit 709fb3
            gt_cv_locale_tr_utf8=tr_TR
Packit 709fb3
          else
Packit 709fb3
            # Test for the locale name with explicit encoding suffix.
Packit 709fb3
            if (LC_ALL=tr_TR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
Packit 709fb3
              gt_cv_locale_tr_utf8=tr_TR.UTF-8
Packit 709fb3
            else
Packit 709fb3
              # Test for the Solaris 7 locale name.
Packit 709fb3
              if (LC_ALL=tr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
Packit 709fb3
                gt_cv_locale_tr_utf8=tr.UTF-8
Packit 709fb3
              else
Packit 709fb3
                # None found.
Packit 709fb3
                gt_cv_locale_tr_utf8=none
Packit 709fb3
              fi
Packit 709fb3
            fi
Packit 709fb3
          fi
Packit 709fb3
          ;;
Packit 709fb3
      esac
Packit 709fb3
    else
Packit 709fb3
      gt_cv_locale_tr_utf8=none
Packit 709fb3
    fi
Packit 709fb3
    rm -fr conftest*
Packit 709fb3
  ])
Packit 709fb3
  LOCALE_TR_UTF8=$gt_cv_locale_tr_utf8
Packit 709fb3
  AC_SUBST([LOCALE_TR_UTF8])
Packit 709fb3
])