Update Gnulib to the latest git version
[deliverable/binutils-gdb.git] / gnulib / import / m4 / locale-fr.m4
1 # locale-fr.m4 serial 19
2 dnl Copyright (C) 2003, 2005-2019 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 french locale with traditional encoding.
10 AC_DEFUN([gt_LOCALE_FR],
11 [
12 AC_REQUIRE([AC_CANONICAL_HOST])
13 AC_REQUIRE([AM_LANGINFO_CODESET])
14 AC_CACHE_CHECK([for a traditional french locale], [gt_cv_locale_fr], [
15 AC_LANG_CONFTEST([AC_LANG_SOURCE([
16 changequote(,)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>
24 struct tm t;
25 char buf[16];
26 int main () {
27 /* On BeOS and Haiku, locales are not implemented in libc. Rather, libintl
28 imitates locale dependent behaviour by looking at the environment
29 variables, and all locales use the UTF-8 encoding. */
30 #if defined __BEOS__ || defined __HAIKU__
31 return 1;
32 #else
33 /* Check whether the given locale name is recognized by the system. */
34 # if defined _WIN32 && !defined __CYGWIN__
35 /* On native Windows, setlocale(category, "") looks at the system settings,
36 not at the environment variables. Also, when an encoding suffix such
37 as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE
38 category of the locale to "C". */
39 if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
40 || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
41 return 1;
42 # else
43 if (setlocale (LC_ALL, "") == NULL) return 1;
44 # endif
45 /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
46 On Mac OS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
47 is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
48 On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
49 succeeds but then nl_langinfo(CODESET) is "646". In this situation,
50 some unit tests fail.
51 On MirBSD 10, when an unsupported locale is specified, setlocale()
52 succeeds but then nl_langinfo(CODESET) is "UTF-8". */
53 # if HAVE_LANGINFO_CODESET
54 {
55 const char *cs = nl_langinfo (CODESET);
56 if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0
57 || strcmp (cs, "UTF-8") == 0)
58 return 1;
59 }
60 # endif
61 # ifdef __CYGWIN__
62 /* On Cygwin, avoid locale names without encoding suffix, because the
63 locale_charset() function relies on the encoding suffix. Note that
64 LC_ALL is set on the command line. */
65 if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
66 # endif
67 /* Check whether in the abbreviation of the second month, the second
68 character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only
69 one byte long. This excludes the UTF-8 encoding. */
70 t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
71 if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
72 # if !defined __BIONIC__ /* Bionic libc's 'struct lconv' is just a dummy. */
73 /* Check whether the decimal separator is a comma.
74 On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
75 are nl_langinfo(RADIXCHAR) are both ".". */
76 if (localeconv () ->decimal_point[0] != ',') return 1;
77 # endif
78 return 0;
79 #endif
80 }
81 changequote([,])dnl
82 ])])
83 if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
84 case "$host_os" in
85 # Handle native Windows specially, because there setlocale() interprets
86 # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
87 # "fr" or "fra" as "French" or "French_France.1252",
88 # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
89 # "ja" as "Japanese" or "Japanese_Japan.932",
90 # and similar.
91 mingw*)
92 # Test for the native Windows locale name.
93 if (LC_ALL=French_France.1252 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
94 gt_cv_locale_fr=French_France.1252
95 else
96 # None found.
97 gt_cv_locale_fr=none
98 fi
99 ;;
100 *)
101 # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
102 # otherwise on Mac OS X 10.3.5 the LC_TIME=C from the beginning of the
103 # configure script would override the LC_ALL setting. Likewise for
104 # LC_CTYPE, which is also set at the beginning of the configure script.
105 # Test for the usual locale name.
106 if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
107 gt_cv_locale_fr=fr_FR
108 else
109 # Test for the locale name with explicit encoding suffix.
110 if (LC_ALL=fr_FR.ISO-8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
111 gt_cv_locale_fr=fr_FR.ISO-8859-1
112 else
113 # Test for the AIX, OSF/1, FreeBSD, NetBSD, OpenBSD locale name.
114 if (LC_ALL=fr_FR.ISO8859-1 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
115 gt_cv_locale_fr=fr_FR.ISO8859-1
116 else
117 # Test for the HP-UX locale name.
118 if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
119 gt_cv_locale_fr=fr_FR.iso88591
120 else
121 # Test for the Solaris 7 locale name.
122 if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
123 gt_cv_locale_fr=fr
124 else
125 # None found.
126 gt_cv_locale_fr=none
127 fi
128 fi
129 fi
130 fi
131 fi
132 ;;
133 esac
134 fi
135 rm -fr conftest*
136 ])
137 LOCALE_FR=$gt_cv_locale_fr
138 AC_SUBST([LOCALE_FR])
139 ])
140
141 dnl Determine the name of a french locale with UTF-8 encoding.
142 AC_DEFUN([gt_LOCALE_FR_UTF8],
143 [
144 AC_REQUIRE([AM_LANGINFO_CODESET])
145 AC_CACHE_CHECK([for a french Unicode locale], [gt_cv_locale_fr_utf8], [
146 AC_LANG_CONFTEST([AC_LANG_SOURCE([
147 changequote(,)dnl
148 #include <locale.h>
149 #include <time.h>
150 #if HAVE_LANGINFO_CODESET
151 # include <langinfo.h>
152 #endif
153 #include <stdlib.h>
154 #include <string.h>
155 struct tm t;
156 char buf[16];
157 int main () {
158 /* On BeOS and Haiku, locales are not implemented in libc. Rather, libintl
159 imitates locale dependent behaviour by looking at the environment
160 variables, and all locales use the UTF-8 encoding. */
161 #if !(defined __BEOS__ || defined __HAIKU__)
162 /* Check whether the given locale name is recognized by the system. */
163 # if defined _WIN32 && !defined __CYGWIN__
164 /* On native Windows, setlocale(category, "") looks at the system settings,
165 not at the environment variables. Also, when an encoding suffix such
166 as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE
167 category of the locale to "C". */
168 if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
169 || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
170 return 1;
171 # else
172 if (setlocale (LC_ALL, "") == NULL) return 1;
173 # endif
174 /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
175 On Mac OS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
176 is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
177 On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
178 succeeds but then nl_langinfo(CODESET) is "646". In this situation,
179 some unit tests fail. */
180 # if HAVE_LANGINFO_CODESET
181 {
182 const char *cs = nl_langinfo (CODESET);
183 if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
184 return 1;
185 }
186 # endif
187 # ifdef __CYGWIN__
188 /* On Cygwin, avoid locale names without encoding suffix, because the
189 locale_charset() function relies on the encoding suffix. Note that
190 LC_ALL is set on the command line. */
191 if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
192 # endif
193 /* Check whether in the abbreviation of the second month, the second
194 character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is
195 two bytes long, with UTF-8 encoding. */
196 t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
197 if (strftime (buf, sizeof (buf), "%b", &t) < 4
198 || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v')
199 return 1;
200 #endif
201 #if !defined __BIONIC__ /* Bionic libc's 'struct lconv' is just a dummy. */
202 /* Check whether the decimal separator is a comma.
203 On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
204 are nl_langinfo(RADIXCHAR) are both ".". */
205 if (localeconv () ->decimal_point[0] != ',') return 1;
206 #endif
207 return 0;
208 }
209 changequote([,])dnl
210 ])])
211 if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
212 case "$host_os" in
213 # Handle native Windows specially, because there setlocale() interprets
214 # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
215 # "fr" or "fra" as "French" or "French_France.1252",
216 # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
217 # "ja" as "Japanese" or "Japanese_Japan.932",
218 # and similar.
219 mingw*)
220 # Test for the hypothetical native Windows locale name.
221 if (LC_ALL=French_France.65001 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
222 gt_cv_locale_fr_utf8=French_France.65001
223 else
224 # None found.
225 gt_cv_locale_fr_utf8=none
226 fi
227 ;;
228 *)
229 # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because
230 # otherwise on Mac OS X 10.3.5 the LC_TIME=C from the beginning of the
231 # configure script would override the LC_ALL setting. Likewise for
232 # LC_CTYPE, which is also set at the beginning of the configure script.
233 # Test for the usual locale name.
234 if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
235 gt_cv_locale_fr_utf8=fr_FR
236 else
237 # Test for the locale name with explicit encoding suffix.
238 if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
239 gt_cv_locale_fr_utf8=fr_FR.UTF-8
240 else
241 # Test for the Solaris 7 locale name.
242 if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
243 gt_cv_locale_fr_utf8=fr.UTF-8
244 else
245 # None found.
246 gt_cv_locale_fr_utf8=none
247 fi
248 fi
249 fi
250 ;;
251 esac
252 fi
253 rm -fr conftest*
254 ])
255 LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8
256 AC_SUBST([LOCALE_FR_UTF8])
257 ])
This page took 0.041141 seconds and 4 git commands to generate.