Blame gnulib/m4/locale-ja.m4

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