Blame m4/locale-ja.m4

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