Blame m4/locale-ja.m4

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