summaryrefslogtreecommitdiffstats
path: root/gl/m4/locale-zh.m4
diff options
context:
space:
mode:
Diffstat (limited to 'gl/m4/locale-zh.m4')
-rw-r--r--gl/m4/locale-zh.m480
1 files changed, 59 insertions, 21 deletions
diff --git a/gl/m4/locale-zh.m4 b/gl/m4/locale-zh.m4
index 777fd14..4eed73f 100644
--- a/gl/m4/locale-zh.m4
+++ b/gl/m4/locale-zh.m4
@@ -1,5 +1,5 @@
1# locale-zh.m4 serial 6 1# locale-zh.m4 serial 12
2dnl Copyright (C) 2003, 2005-2010 Free Software Foundation, Inc. 2dnl Copyright (C) 2003, 2005-2013 Free Software Foundation, Inc.
3dnl This file is free software; the Free Software Foundation 3dnl This file is free software; the Free Software Foundation
4dnl gives unlimited permission to copy and/or distribute it, 4dnl gives unlimited permission to copy and/or distribute it,
5dnl with or without modifications, as long as this notice is preserved. 5dnl with or without modifications, as long as this notice is preserved.
@@ -28,17 +28,30 @@ int main ()
28{ 28{
29 const char *p; 29 const char *p;
30 /* Check whether the given locale name is recognized by the system. */ 30 /* Check whether the given locale name is recognized by the system. */
31#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
32 /* On native Windows, setlocale(category, "") looks at the system settings,
33 not at the environment variables. Also, when an encoding suffix such
34 as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE
35 category of the locale to "C". */
36 if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
37 || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
38 return 1;
39#else
31 if (setlocale (LC_ALL, "") == NULL) return 1; 40 if (setlocale (LC_ALL, "") == NULL) return 1;
41#endif
32 /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646". 42 /* 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) 43 On Mac OS 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. 44 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() 45 On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
36 succeeds but then nl_langinfo(CODESET) is "646". In this situation, 46 succeeds but then nl_langinfo(CODESET) is "646". In this situation,
37 some unit tests fail. */ 47 some unit tests fail.
48 On MirBSD 10, when an unsupported locale is specified, setlocale()
49 succeeds but then nl_langinfo(CODESET) is "UTF-8". */
38#if HAVE_LANGINFO_CODESET 50#if HAVE_LANGINFO_CODESET
39 { 51 {
40 const char *cs = nl_langinfo (CODESET); 52 const char *cs = nl_langinfo (CODESET);
41 if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0) 53 if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
54 || strcmp (cs, "UTF-8") == 0)
42 return 1; 55 return 1;
43 } 56 }
44#endif 57#endif
@@ -49,7 +62,7 @@ int main ()
49 if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1; 62 if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
50#endif 63#endif
51 /* Check whether in a month name, no byte in the range 0x80..0x9F occurs. 64 /* Check whether in a month name, no byte in the range 0x80..0x9F occurs.
52 This excludes the UTF-8 encoding. */ 65 This excludes the UTF-8 encoding (except on MirBSD). */
53 t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4; 66 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; 67 if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1;
55 for (p = buf; *p != '\0'; p++) 68 for (p = buf; *p != '\0'; p++)
@@ -64,22 +77,47 @@ int main ()
64changequote([,])dnl 77changequote([,])dnl
65 ])]) 78 ])])
66 if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then 79 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 80 case "$host_os" in
68 # otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the 81 # Handle native Windows specially, because there setlocale() interprets
69 # configure script would override the LC_ALL setting. Likewise for 82 # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
70 # LC_CTYPE, which is also set at the beginning of the configure script. 83 # "fr" or "fra" as "French" or "French_France.1252",
71 # Test for the locale name without encoding suffix. 84 # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
72 if (LC_ALL=zh_CN LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then 85 # "ja" as "Japanese" or "Japanese_Japan.932",
73 gt_cv_locale_zh_CN=zh_CN 86 # and similar.
74 else 87 mingw*)
75 # Test for the locale name with explicit encoding suffix. 88 # Test for the hypothetical native Windows locale name.
76 if (LC_ALL=zh_CN.GB18030 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then 89 if (LC_ALL=Chinese_China.54936 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
77 gt_cv_locale_zh_CN=zh_CN.GB18030 90 gt_cv_locale_zh_CN=Chinese_China.54936
78 else 91 else
79 # None found. 92 # None found.
93 gt_cv_locale_zh_CN=none
94 fi
95 ;;
96 solaris2.8)
97 # On Solaris 8, the locales zh_CN.GB18030, zh_CN.GBK, zh.GBK are
98 # broken. One witness is the test case in gl_MBRTOWC_SANITYCHECK.
99 # Another witness is that "LC_ALL=zh_CN.GB18030 bash -c true" dumps core.
80 gt_cv_locale_zh_CN=none 100 gt_cv_locale_zh_CN=none
81 fi 101 ;;
82 fi 102 *)
103 # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
104 # otherwise on Mac OS X 10.3.5 the LC_TIME=C from the beginning of the
105 # configure script would override the LC_ALL setting. Likewise for
106 # LC_CTYPE, which is also set at the beginning of the configure script.
107 # Test for the locale name without encoding suffix.
108 if (LC_ALL=zh_CN LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
109 gt_cv_locale_zh_CN=zh_CN
110 else
111 # Test for the locale name with explicit encoding suffix.
112 if (LC_ALL=zh_CN.GB18030 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
113 gt_cv_locale_zh_CN=zh_CN.GB18030
114 else
115 # None found.
116 gt_cv_locale_zh_CN=none
117 fi
118 fi
119 ;;
120 esac
83 else 121 else
84 # If there was a link error, due to mblen(), the system is so old that 122 # If there was a link error, due to mblen(), the system is so old that
85 # it certainly doesn't have a chinese locale. 123 # it certainly doesn't have a chinese locale.