Blame gl/m4/locale-ja.m4

Packit a4aae4
# locale-ja.m4 serial 12
Packit a4aae4
dnl Copyright (C) 2003, 2005-2017 Free Software Foundation, Inc.
Packit a4aae4
dnl This file is free software; the Free Software Foundation
Packit a4aae4
dnl gives unlimited permission to copy and/or distribute it,
Packit a4aae4
dnl with or without modifications, as long as this notice is preserved.
Packit a4aae4
Packit a4aae4
dnl From Bruno Haible.
Packit a4aae4
Packit a4aae4
dnl Determine the name of a japanese locale with EUC-JP encoding.
Packit a4aae4
AC_DEFUN([gt_LOCALE_JA],
Packit a4aae4
[
Packit a4aae4
  AC_REQUIRE([AC_CANONICAL_HOST])
Packit a4aae4
  AC_REQUIRE([AM_LANGINFO_CODESET])
Packit a4aae4
  AC_CACHE_CHECK([for a traditional japanese locale], [gt_cv_locale_ja], [
Packit a4aae4
    AC_LANG_CONFTEST([AC_LANG_SOURCE([
Packit a4aae4
changequote(,)dnl
Packit a4aae4
#include <locale.h>
Packit a4aae4
#include <time.h>
Packit a4aae4
#if HAVE_LANGINFO_CODESET
Packit a4aae4
# include <langinfo.h>
Packit a4aae4
#endif
Packit a4aae4
#include <stdlib.h>
Packit a4aae4
#include <string.h>
Packit a4aae4
struct tm t;
Packit a4aae4
char buf[16];
Packit a4aae4
int main ()
Packit a4aae4
{
Packit a4aae4
  const char *p;
Packit a4aae4
  /* Check whether the given locale name is recognized by the system.  */
Packit a4aae4
#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
Packit a4aae4
  /* On native Windows, setlocale(category, "") looks at the system settings,
Packit a4aae4
     not at the environment variables.  Also, when an encoding suffix such
Packit a4aae4
     as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE
Packit a4aae4
     category of the locale to "C".  */
Packit a4aae4
  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
Packit a4aae4
      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
Packit a4aae4
    return 1;
Packit a4aae4
#else
Packit a4aae4
  if (setlocale (LC_ALL, "") == NULL) return 1;
Packit a4aae4
#endif
Packit a4aae4
  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
Packit a4aae4
     On Mac OS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
Packit a4aae4
     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
Packit a4aae4
     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
Packit a4aae4
     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
Packit a4aae4
     some unit tests fail.
Packit a4aae4
     On MirBSD 10, when an unsupported locale is specified, setlocale()
Packit a4aae4
     succeeds but then nl_langinfo(CODESET) is "UTF-8".  */
Packit a4aae4
#if HAVE_LANGINFO_CODESET
Packit a4aae4
  {
Packit a4aae4
    const char *cs = nl_langinfo (CODESET);
Packit a4aae4
    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
Packit a4aae4
        || strcmp (cs, "UTF-8") == 0)
Packit a4aae4
      return 1;
Packit a4aae4
  }
Packit a4aae4
#endif
Packit a4aae4
#ifdef __CYGWIN__
Packit a4aae4
  /* On Cygwin, avoid locale names without encoding suffix, because the
Packit a4aae4
     locale_charset() function relies on the encoding suffix.  Note that
Packit a4aae4
     LC_ALL is set on the command line.  */
Packit a4aae4
  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
Packit a4aae4
#endif
Packit a4aae4
  /* Check whether MB_CUR_MAX is > 1.  This excludes the dysfunctional locales
Packit a4aae4
     on Cygwin 1.5.x.  */
Packit a4aae4
  if (MB_CUR_MAX == 1)
Packit a4aae4
    return 1;
Packit a4aae4
  /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
Packit a4aae4
     This excludes the UTF-8 encoding (except on MirBSD).  */
Packit a4aae4
  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
Packit a4aae4
  if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
Packit a4aae4
  for (p = buf; *p != '\0'; p++)
Packit a4aae4
    if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0)
Packit a4aae4
      return 1;
Packit a4aae4
  return 0;
Packit a4aae4
}
Packit a4aae4
changequote([,])dnl
Packit a4aae4
      ])])
Packit a4aae4
    if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
Packit a4aae4
      case "$host_os" in
Packit a4aae4
        # Handle native Windows specially, because there setlocale() interprets
Packit a4aae4
        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
Packit a4aae4
        # "fr" or "fra" as "French" or "French_France.1252",
Packit a4aae4
        # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
Packit a4aae4
        # "ja" as "Japanese" or "Japanese_Japan.932",
Packit a4aae4
        # and similar.
Packit a4aae4
        mingw*)
Packit a4aae4
          # Note that on native Windows, the Japanese locale is
Packit a4aae4
          # Japanese_Japan.932, and CP932 is very different from EUC-JP, so we
Packit a4aae4
          # cannot use it here.
Packit a4aae4
          gt_cv_locale_ja=none
Packit a4aae4
          ;;
Packit a4aae4
        *)
Packit a4aae4
          # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
Packit a4aae4
          # otherwise on Mac OS X 10.3.5 the LC_TIME=C from the beginning of the
Packit a4aae4
          # configure script would override the LC_ALL setting. Likewise for
Packit a4aae4
          # LC_CTYPE, which is also set at the beginning of the configure script.
Packit a4aae4
          # Test for the AIX locale name.
Packit a4aae4
          if (LC_ALL=ja_JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
Packit a4aae4
            gt_cv_locale_ja=ja_JP
Packit a4aae4
          else
Packit a4aae4
            # Test for the locale name with explicit encoding suffix.
Packit a4aae4
            if (LC_ALL=ja_JP.EUC-JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
Packit a4aae4
              gt_cv_locale_ja=ja_JP.EUC-JP
Packit a4aae4
            else
Packit a4aae4
              # Test for the HP-UX, OSF/1, NetBSD locale name.
Packit a4aae4
              if (LC_ALL=ja_JP.eucJP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
Packit a4aae4
                gt_cv_locale_ja=ja_JP.eucJP
Packit a4aae4
              else
Packit a4aae4
                # Test for the IRIX, FreeBSD locale name.
Packit a4aae4
                if (LC_ALL=ja_JP.EUC LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
Packit a4aae4
                  gt_cv_locale_ja=ja_JP.EUC
Packit a4aae4
                else
Packit a4aae4
                  # Test for the Solaris 7 locale name.
Packit a4aae4
                  if (LC_ALL=ja LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
Packit a4aae4
                    gt_cv_locale_ja=ja
Packit a4aae4
                  else
Packit a4aae4
                    # Special test for NetBSD 1.6.
Packit a4aae4
                    if test -f /usr/share/locale/ja_JP.eucJP/LC_CTYPE; then
Packit a4aae4
                      gt_cv_locale_ja=ja_JP.eucJP
Packit a4aae4
                    else
Packit a4aae4
                      # None found.
Packit a4aae4
                      gt_cv_locale_ja=none
Packit a4aae4
                    fi
Packit a4aae4
                  fi
Packit a4aae4
                fi
Packit a4aae4
              fi
Packit a4aae4
            fi
Packit a4aae4
          fi
Packit a4aae4
          ;;
Packit a4aae4
      esac
Packit a4aae4
    fi
Packit a4aae4
    rm -fr conftest*
Packit a4aae4
  ])
Packit a4aae4
  LOCALE_JA=$gt_cv_locale_ja
Packit a4aae4
  AC_SUBST([LOCALE_JA])
Packit a4aae4
])