~ubuntu-branches/ubuntu/utopic/gettext/utopic

« back to all changes in this revision

Viewing changes to gettext-runtime/gnulib-m4/locale-zh.m4

  • Committer: Colin Watson
  • Date: 2010-08-01 21:36:08 UTC
  • mfrom: (2.1.10 sid)
  • Revision ID: cjwatson@canonical.com-20100801213608-yy7vkm8lpatep3ci
merge from Debian 0.18.1.1-1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# locale-zh.m4 serial 6
 
2
dnl Copyright (C) 2003, 2005-2010 Free Software Foundation, Inc.
 
3
dnl This file is free software; the Free Software Foundation
 
4
dnl gives unlimited permission to copy and/or distribute it,
 
5
dnl with or without modifications, as long as this notice is preserved.
 
6
 
 
7
dnl From Bruno Haible.
 
8
 
 
9
dnl Determine the name of a chinese locale with GB18030 encoding.
 
10
AC_DEFUN([gt_LOCALE_ZH_CN],
 
11
[
 
12
  AC_REQUIRE([AC_CANONICAL_HOST])
 
13
  AC_REQUIRE([AM_LANGINFO_CODESET])
 
14
  AC_CACHE_CHECK([for a transitional chinese locale], [gt_cv_locale_zh_CN], [
 
15
    AC_LANG_CONFTEST([AC_LANG_SOURCE([
 
16
changequote(,)dnl
 
17
#include <locale.h>
 
18
#include <stdlib.h>
 
19
#include <time.h>
 
20
#if HAVE_LANGINFO_CODESET
 
21
# include <langinfo.h>
 
22
#endif
 
23
#include <stdlib.h>
 
24
#include <string.h>
 
25
struct tm t;
 
26
char buf[16];
 
27
int main ()
 
28
{
 
29
  const char *p;
 
30
  /* Check whether the given locale name is recognized by the system.  */
 
31
  if (setlocale (LC_ALL, "") == NULL) return 1;
 
32
  /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
 
33
     On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
 
34
     is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
 
35
     On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
 
36
     succeeds but then nl_langinfo(CODESET) is "646". In this situation,
 
37
     some unit tests fail.  */
 
38
#if HAVE_LANGINFO_CODESET
 
39
  {
 
40
    const char *cs = nl_langinfo (CODESET);
 
41
    if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
 
42
      return 1;
 
43
  }
 
44
#endif
 
45
#ifdef __CYGWIN__
 
46
  /* On Cygwin, avoid locale names without encoding suffix, because the
 
47
     locale_charset() function relies on the encoding suffix.  Note that
 
48
     LC_ALL is set on the command line.  */
 
49
  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
 
50
#endif
 
51
  /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
 
52
     This excludes the UTF-8 encoding.  */
 
53
  t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
 
54
  if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
 
55
  for (p = buf; *p != '\0'; p++)
 
56
    if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0)
 
57
      return 1;
 
58
  /* Check whether a typical GB18030 multibyte sequence is recognized as a
 
59
     single wide character.  This excludes the GB2312 and GBK encodings.  */
 
60
  if (mblen ("\203\062\332\066", 5) != 4)
 
61
    return 1;
 
62
  return 0;
 
63
}
 
64
changequote([,])dnl
 
65
      ])])
 
66
    if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
 
67
      # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
 
68
      # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
 
69
      # configure script would override the LC_ALL setting. Likewise for
 
70
      # LC_CTYPE, which is also set at the beginning of the configure script.
 
71
      # Test for the locale name without encoding suffix.
 
72
      if (LC_ALL=zh_CN LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
 
73
        gt_cv_locale_zh_CN=zh_CN
 
74
      else
 
75
        # Test for the locale name with explicit encoding suffix.
 
76
        if (LC_ALL=zh_CN.GB18030 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
 
77
          gt_cv_locale_zh_CN=zh_CN.GB18030
 
78
        else
 
79
          # None found.
 
80
          gt_cv_locale_zh_CN=none
 
81
        fi
 
82
      fi
 
83
    else
 
84
      # If there was a link error, due to mblen(), the system is so old that
 
85
      # it certainly doesn't have a chinese locale.
 
86
      gt_cv_locale_zh_CN=none
 
87
    fi
 
88
    rm -fr conftest*
 
89
  ])
 
90
  LOCALE_ZH_CN=$gt_cv_locale_zh_CN
 
91
  AC_SUBST([LOCALE_ZH_CN])
 
92
])