27
27
/* Check whether the given locale name is recognized by the system. */
28
#if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
29
/* On native Windows, setlocale(category, "") looks at the system settings,
30
not at the environment variables. Also, when an encoding suffix such
31
as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE
32
category of the locale to "C". */
33
if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
34
|| strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
28
37
if (setlocale (LC_ALL, "") == NULL) return 1;
29
39
/* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
30
40
On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
31
41
is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
32
42
On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
33
43
succeeds but then nl_langinfo(CODESET) is "646". In this situation,
34
some unit tests fail. */
45
On MirBSD 10, when an unsupported locale is specified, setlocale()
46
succeeds but then nl_langinfo(CODESET) is "UTF-8". */
35
47
#if HAVE_LANGINFO_CODESET
37
49
const char *cs = nl_langinfo (CODESET);
38
if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
50
if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
51
|| strcmp (cs, "UTF-8") == 0)
50
63
one byte long. This excludes the UTF-8 encoding. */
51
64
t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
52
65
if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
66
#if !defined __BIONIC__ /* Bionic libc's 'struct lconv' is just a dummy. */
53
67
/* Check whether the decimal separator is a comma.
54
68
On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
55
69
are nl_langinfo(RADIXCHAR) are both ".". */
56
70
if (localeconv () ->decimal_point[0] != ',') return 1;
59
74
changequote([,])dnl
61
76
if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
62
# Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
63
# otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
64
# configure script would override the LC_ALL setting. Likewise for
65
# LC_CTYPE, which is also set at the beginning of the configure script.
66
# Test for the usual locale name.
67
if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
70
# Test for the locale name with explicit encoding suffix.
71
if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
72
gt_cv_locale_fr=fr_FR.ISO-8859-1
74
# Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name.
75
if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
76
gt_cv_locale_fr=fr_FR.ISO8859-1
78
# Test for the HP-UX locale name.
79
if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
80
gt_cv_locale_fr=fr_FR.iso88591
78
# Handle native Windows specially, because there setlocale() interprets
79
# "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
80
# "fr" or "fra" as "French" or "French_France.1252",
81
# "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
82
# "ja" as "Japanese" or "Japanese_Japan.932",
85
# Test for the native Windows locale name.
86
if (LC_ALL=French_France.1252 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
87
gt_cv_locale_fr=French_France.1252
94
# Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
95
# otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
96
# configure script would override the LC_ALL setting. Likewise for
97
# LC_CTYPE, which is also set at the beginning of the configure script.
98
# Test for the usual locale name.
99
if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
100
gt_cv_locale_fr=fr_FR
102
# Test for the locale name with explicit encoding suffix.
103
if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
104
gt_cv_locale_fr=fr_FR.ISO-8859-1
82
# Test for the Solaris 7 locale name.
83
if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
106
# Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name.
107
if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
108
gt_cv_locale_fr=fr_FR.ISO8859-1
110
# Test for the HP-UX locale name.
111
if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
112
gt_cv_locale_fr=fr_FR.iso88591
114
# Test for the Solaris 7 locale name.
115
if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
119
153
variables, and all locales use the UTF-8 encoding. */
120
154
#if !(defined __BEOS__ || defined __HAIKU__)
121
155
/* Check whether the given locale name is recognized by the system. */
156
# if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__
157
/* On native Windows, setlocale(category, "") looks at the system settings,
158
not at the environment variables. Also, when an encoding suffix such
159
as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE
160
category of the locale to "C". */
161
if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
162
|| strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
122
165
if (setlocale (LC_ALL, "") == NULL) return 1;
123
167
/* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
124
168
On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
125
169
is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
147
191
|| buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v')
194
#if !defined __BIONIC__ /* Bionic libc's 'struct lconv' is just a dummy. */
150
195
/* Check whether the decimal separator is a comma.
151
196
On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
152
197
are nl_langinfo(RADIXCHAR) are both ".". */
153
198
if (localeconv () ->decimal_point[0] != ',') return 1;
156
202
changequote([,])dnl
158
204
if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
159
# Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
160
# otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
161
# configure script would override the LC_ALL setting. Likewise for
162
# LC_CTYPE, which is also set at the beginning of the configure script.
163
# Test for the usual locale name.
164
if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
165
gt_cv_locale_fr_utf8=fr_FR
167
# Test for the locale name with explicit encoding suffix.
168
if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
169
gt_cv_locale_fr_utf8=fr_FR.UTF-8
171
# Test for the Solaris 7 locale name.
172
if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
173
gt_cv_locale_fr_utf8=fr.UTF-8
206
# Handle native Windows specially, because there setlocale() interprets
207
# "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
208
# "fr" or "fra" as "French" or "French_France.1252",
209
# "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
210
# "ja" as "Japanese" or "Japanese_Japan.932",
213
# Test for the hypothetical native Windows locale name.
214
if (LC_ALL=French_France.65001 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
215
gt_cv_locale_fr_utf8=French_France.65001
176
218
gt_cv_locale_fr_utf8=none
222
# Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
223
# otherwise on MacOS X 10.3.5 the LC_TIME=C from the beginning of the
224
# configure script would override the LC_ALL setting. Likewise for
225
# LC_CTYPE, which is also set at the beginning of the configure script.
226
# Test for the usual locale name.
227
if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
228
gt_cv_locale_fr_utf8=fr_FR
230
# Test for the locale name with explicit encoding suffix.
231
if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
232
gt_cv_locale_fr_utf8=fr_FR.UTF-8
234
# Test for the Solaris 7 locale name.
235
if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
236
gt_cv_locale_fr_utf8=fr.UTF-8
239
gt_cv_locale_fr_utf8=none