Blame gettext-runtime/gnulib-m4/locale-ja.m4

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