]> git.ipfire.org Git - thirdparty/gettext.git/commitdiff
New macro gt_LOCALE_JA.
authorBruno Haible <bruno@clisp.org>
Tue, 12 Dec 2006 14:12:18 +0000 (14:12 +0000)
committerBruno Haible <bruno@clisp.org>
Tue, 23 Jun 2009 10:14:27 +0000 (12:14 +0200)
gettext-tools/ChangeLog
gettext-tools/configure.ac
gettext-tools/m4/ChangeLog
gettext-tools/m4/Makefile.am
gettext-tools/m4/locale-ja.m4 [new file with mode: 0644]
gettext-tools/tests/ChangeLog
gettext-tools/tests/Makefile.am
gettext-tools/tests/recode-sr-latin-2

index 78e9b833af6e17caf68a20bd9654d9f4c33f3804..c6083f1a999c46e8a38aa6610f7284184e037790 100644 (file)
@@ -1,3 +1,7 @@
+2006-12-10  Bruno Haible  <bruno@clisp.org>
+
+       * configure.ac: Invoke gt_LOCALE_JA.
+
 2006-10-27  Bruno Haible  <bruno@clisp.org>
 
        Work around automake-1.10 annoyance.
index 638c32ea9040f54efb16ec52fa544fee6e740879..6ca0f61d65a91359b326783e5ea3bb3b3a96e17d 100644 (file)
@@ -289,10 +289,11 @@ dnl Check for tools needed for formatting man pages.
 CROSS_COMPILING=$cross_compiling
 AC_SUBST(CROSS_COMPILING)
 
-dnl Checks for optional programs for the tests/lang-* tests.
+dnl Checks for optional programs for the tests/lang-*, tests/recode-* tests.
 gt_PROG_ANSI_CXX
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
+gt_LOCALE_JA
 
 dnl Check whether to execute tests that rely on libasprintf.
 dnl This test must be consistent with gettext-runtime/configure.ac.
index 7f0f3d615c8763bb98290c83e7e6f40494705df4..eb53dccc7f4889e39cdbf330ef1057966f73a783 100644 (file)
@@ -1,3 +1,8 @@
+2006-12-10  Bruno Haible  <bruno@clisp.org>
+
+       * locale-ja.m4: New file.
+       * Makefile.am (EXTRA_DIST): Add it.
+
 2006-11-27  Bruno Haible  <bruno@clisp.org>
 
        * gettext-0.16.1 released.
index 21a4fbb88d77cbb1db73c407c680852dc36723df..68c631a17e0a66cbb49a0ddbd78824ad05115096 100644 (file)
@@ -48,6 +48,7 @@ EXTRA_DIST = README csharpexec-test.exe \
 hostname.m4 \
 libgrep.m4 \
 locale-fr.m4 \
+locale-ja.m4 \
 openmp.m4 \
 regex.m4 \
 setlocale.m4 \
diff --git a/gettext-tools/m4/locale-ja.m4 b/gettext-tools/m4/locale-ja.m4
new file mode 100644 (file)
index 0000000..cf065dd
--- /dev/null
@@ -0,0 +1,105 @@
+# locale-ja.m4 serial 1 (gettext-0.16.2)
+dnl Copyright (C) 2003, 2005-2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+dnl Determine the name of a japanese locale with EUC-JP encoding.
+AC_DEFUN([gt_LOCALE_JA],
+[
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_REQUIRE([AM_LANGINFO_CODESET])
+  AC_CACHE_CHECK([for a traditional japanese locale], gt_cv_locale_ja, [
+    macosx=
+    case "$host_os" in
+      darwin[56]*) ;;
+      darwin*) macosx=yes;;
+    esac
+    if test -n "$macosx"; then
+      # On Darwin 7 (MacOS X), the libc supports some locales in non-UTF-8
+      # encodings, but the kernel does not support them. The documentation
+      # says:
+      #   "... all code that calls BSD system routines should ensure
+      #    that the const *char parameters of these routines are in UTF-8
+      #    encoding. All BSD system functions expect their string
+      #    parameters to be in UTF-8 encoding and nothing else."
+      # See the comments in config.charset. Therefore we bypass the test.
+      gt_cv_locale_ja=none
+    else
+      AC_LANG_CONFTEST([AC_LANG_SOURCE([
+changequote(,)dnl
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+struct tm t;
+char buf[16];
+int main ()
+{
+  const char *p;
+  /* Check whether the given locale name is recognized by the system.  */
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+  /* Check whether nl_langinfo(CODESET) is nonempty.
+     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
+     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.  */
+#if HAVE_LANGINFO_CODESET
+  if (nl_langinfo (CODESET) [0] == '\0') return 1;
+#endif
+  /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
+     This excludes the UTF-8 encoding.  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
+  if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
+  for (p = buf; *p != '\0'; p++)
+    if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0)
+      return 1;
+  return 0;
+}
+changequote([,])dnl
+        ])])
+      if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
+        # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
+        # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
+        # configure script would override the LC_ALL setting. Likewise for
+        # LC_CTYPE, which is also set at the beginning of the configure script.
+        # Test for the AIX locale name.
+        if (LC_ALL=ja_JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+          gt_cv_locale_ja=ja_JP
+        else
+          # Test for the locale name with explicit encoding suffix.
+          if (LC_ALL=ja_JP.EUC-JP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+            gt_cv_locale_ja=ja_JP.EUC-JP
+          else
+            # Test for the HP-UX, OSF/1, NetBSD locale name.
+            if (LC_ALL=ja_JP.eucJP LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+              gt_cv_locale_ja=ja_JP.eucJP
+            else
+              # Test for the IRIX, FreeBSD locale name.
+              if (LC_ALL=ja_JP.EUC LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_ja=ja_JP.EUC
+              else
+                # Test for the Solaris 7 locale name.
+                if (LC_ALL=ja LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+                  gt_cv_locale_ja=ja
+                else
+                  # Special test for NetBSD 1.6.
+                  if test -f /usr/share/locale/ja_JP.eucJP/LC_CTYPE; then
+                    gt_cv_locale_ja=ja_JP.eucJP
+                  else
+                    # None found.
+                    gt_cv_locale_ja=none
+                  fi
+                fi
+              fi
+            fi
+          fi
+        fi
+      fi
+      rm -fr conftest*
+    fi
+  ])
+  LOCALE_JA=$gt_cv_locale_ja
+  AC_SUBST([LOCALE_JA])
+])
index d4edb695e77f3bf7a04e57b95f47a86015dcca2e..fc82de3bca4fc06c42bfb4eac9df716851aa44c8 100644 (file)
@@ -1,3 +1,10 @@
+2006-12-10  Bruno Haible  <bruno@clisp.org>
+
+       Fix a test failure on Solaris.
+       * Makefile.am (TESTS_ENVIRONMENT): Also set LOCALE_JA.
+       * recode-sr-latin-2: Use the LOCALE_JA value from the Makefile,
+       instead of using the 'testlocale' program.
+
 2006-11-12  Bruno Haible  <bruno@clisp.org>
 
        * msgcat-15: Update expected test output.
index 72dd48f5ac387d6db382bb6d9ca310fa8c09b363..caa779944adaaf6125deefbcc58e48359de6f31a 100644 (file)
@@ -173,6 +173,7 @@ TESTS_ENVIRONMENT = top_srcdir=$(top_srcdir) \
                    TESTLIBASPRINTF='@TESTLIBASPRINTF@' \
                    LOCALE_FR='@LOCALE_FR@' \
                    LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+                   LOCALE_JA='@LOCALE_JA@' \
                    host_os='@host_os@' \
                    CONFIG_SHELL='$(SHELL)' \
                    $(SHELL)
index 84cc84e5ac3923c924a4ed8863df1286aac45e4a..5393284789e47662b15259cc1cd68b6bba0a3603 100755 (executable)
@@ -8,25 +8,16 @@ tmpfiles=""
 trap 'rm -fr $tmpfiles' 1 2 3 15
 
 # Test whether a specific EUC-JP locale is installed.
-case "$host_os" in
-  aix*)
-    LOCALE_JA_EUCJP=ja_JP ;;
-  hpux* | osf* | netbsd*)
-    LOCALE_JA_EUCJP=ja_JP.eucJP ;;
-  irix* | freebsd* | darwin*)
-    LOCALE_JA_EUCJP=ja_JP.EUC ;;
-  *)
-    LOCALE_JA_EUCJP=ja_JP.EUC-JP ;;
-esac
-if test $LOCALE_JA_EUCJP != none; then
-  LC_ALL=$LOCALE_JA_EUCJP ./testlocale 2>/dev/null
-  case $? in
-    0) ;;
-    77) LOCALE_JA_EUCJP=none;;
-    *) exit 1;;
-  esac
-fi
-if test $LOCALE_JA_EUCJP = none; then
+: ${LOCALE_JA=ja_JP}
+#if test $LOCALE_JA != none; then
+#  LC_ALL=$LOCALE_JA ./testlocale 2>/dev/null
+#  case $? in
+#    0) ;;
+#    77) LOCALE_JA=none;;
+#    *) exit 1;;
+#  esac
+#fi
+if test $LOCALE_JA = none; then
   if test -f /usr/bin/localedef; then
     echo "Skipping test: no japanese EUC-JP locale is installed"
   else
@@ -37,13 +28,13 @@ fi
 
 # Test whether locale_charset() in this locale really returns EUC-JP.
 # (On some systems, config.charset supports only UTF-8 locales.)
-case "$host_os" in
-  darwin[56]*) ;;
-  darwin* | beos*)
-    echo "Skipping test: no EUC-JP locale is supported"
-    rm -fr $tmpfiles; exit 77
-    ;;
-esac
+#case "$host_os" in
+#  darwin[56]*) ;;
+#  darwin* | beos*)
+#    echo "Skipping test: no EUC-JP locale is supported"
+#    rm -fr $tmpfiles; exit 77
+#    ;;
+#esac
 
 tmpfiles="$tmpfiles rec-srl-2.in"
 cat <<\EOF > rec-srl-2.in
@@ -53,7 +44,7 @@ EOF
 
 tmpfiles="$tmpfiles rec-srl-2.out"
 : ${RECODE=recode}
-LC_ALL=$LOCALE_JA_EUCJP \
+LC_ALL=$LOCALE_JA \
 ${RECODE}-sr-latin < rec-srl-2.in > rec-srl-2.out \
   || { rm -fr $tmpfiles; exit 1; }