1# locale-ja.m4 serial 7 2dnl Copyright (C) 2003, 2005-2009 Free Software Foundation, Inc. 3dnl This file is free software; the Free Software Foundation 4dnl gives unlimited permission to copy and/or distribute it, 5dnl with or without modifications, as long as this notice is preserved. 6 7dnl From Bruno Haible. 8 9dnl Determine the name of a japanese locale with EUC-JP encoding. 10AC_DEFUN([gt_LOCALE_JA], 11[ 12 AC_REQUIRE([AC_CANONICAL_HOST]) 13 AC_REQUIRE([AM_LANGINFO_CODESET]) 14 AC_CACHE_CHECK([for a traditional japanese locale], [gt_cv_locale_ja], [ 15 AC_LANG_CONFTEST([AC_LANG_SOURCE([ 16changequote(,)dnl 17#include <locale.h> 18#include <time.h> 19#if HAVE_LANGINFO_CODESET 20# include <langinfo.h> 21#endif 22#include <stdlib.h> 23#include <string.h> 24struct tm t; 25char buf[16]; 26int main () 27{ 28 const char *p; 29 /* Check whether the given locale name is recognized by the system. */ 30 if (setlocale (LC_ALL, "") == NULL) return 1; 31 /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646". 32 On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET) 33 is empty, and the behaviour of Tcl 8.4 in this locale is not useful. 34 On OpenBSD 4.0, when an unsupported locale is specified, setlocale() 35 succeeds but then nl_langinfo(CODESET) is "646". In this situation, 36 some unit tests fail. */ 37#if HAVE_LANGINFO_CODESET 38 { 39 const char *cs = nl_langinfo (CODESET); 40 if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0) 41 return 1; 42 } 43#endif 44#ifdef __CYGWIN__ 45 /* On Cygwin, avoid locale names without encoding suffix, because the 46 locale_charset() function relies on the encoding suffix. Note that 47 LC_ALL is set on the command line. */ 48 if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1; 49#endif 50 /* Check whether MB_CUR_MAX is > 1. This excludes the dysfunctional locales 51 on Cygwin 1.5.x. */ 52 if (MB_CUR_MAX == 1) 53 return 1; 54 /* Check whether in a month name, no byte in the range 0x80..0x9F occurs. 55 This excludes the UTF-8 encoding. */ 56 t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4; 57 if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1; 58 for (p = buf; *p != '\0'; p++) 59 if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0) 60 return 1; 61 return 0; 62} 63changequote([,])dnl 64 ])]) 65 if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then 66 # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because 67 # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the 68 # configure script would override the LC_ALL setting. Likewise for 69 # LC_CTYPE, which is also set at the beginning of the configure script. 70 # Test for the AIX locale name. 71 if (LC_ALL=ja_JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then 72 gt_cv_locale_ja=ja_JP 73 else 74 # Test for the locale name with explicit encoding suffix. 75 if (LC_ALL=ja_JP.EUC-JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then 76 gt_cv_locale_ja=ja_JP.EUC-JP 77 else 78 # Test for the HP-UX, OSF/1, NetBSD locale name. 79 if (LC_ALL=ja_JP.eucJP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then 80 gt_cv_locale_ja=ja_JP.eucJP 81 else 82 # Test for the IRIX, FreeBSD locale name. 83 if (LC_ALL=ja_JP.EUC LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then 84 gt_cv_locale_ja=ja_JP.EUC 85 else 86 # Test for the Solaris 7 locale name. 87 if (LC_ALL=ja LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then 88 gt_cv_locale_ja=ja 89 else 90 # Special test for NetBSD 1.6. 91 if test -f /usr/share/locale/ja_JP.eucJP/LC_CTYPE; then 92 gt_cv_locale_ja=ja_JP.eucJP 93 else 94 # None found. 95 gt_cv_locale_ja=none 96 fi 97 fi 98 fi 99 fi 100 fi 101 fi 102 fi 103 rm -fr conftest* 104 ]) 105 LOCALE_JA=$gt_cv_locale_ja 106 AC_SUBST([LOCALE_JA]) 107]) 108