Use Gnulib's `stat-time' module; update Gnulib.
[bpt/guile.git] / m4 / locale-fr.m4
1 # locale-fr.m4 serial 11
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 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 /* Check whether the given locale name is recognized by the system. */
28 if (setlocale (LC_ALL, "") == NULL) return 1;
29 /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
30 On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
31 is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
32 On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
33 succeeds but then nl_langinfo(CODESET) is "646". In this situation,
34 some unit tests fail. */
35 #if HAVE_LANGINFO_CODESET
36 {
37 const char *cs = nl_langinfo (CODESET);
38 if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
39 return 1;
40 }
41 #endif
42 #ifdef __CYGWIN__
43 /* On Cygwin, avoid locale names without encoding suffix, because the
44 locale_charset() function relies on the encoding suffix. Note that
45 LC_ALL is set on the command line. */
46 if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
47 #endif
48 /* Check whether in the abbreviation of the second month, the second
49 character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only
50 one byte long. This excludes the UTF-8 encoding. */
51 t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
52 if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
53 /* Check whether the decimal separator is a comma.
54 On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
55 are nl_langinfo(RADIXCHAR) are both ".". */
56 if (localeconv () ->decimal_point[0] != ',') return 1;
57 return 0;
58 }
59 changequote([,])dnl
60 ])])
61 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
68 gt_cv_locale_fr=fr_FR
69 else
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
73 else
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
77 else
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
81 else
82 # Test for the Solaris 7 locale name.
83 if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
84 gt_cv_locale_fr=fr
85 else
86 # None found.
87 gt_cv_locale_fr=none
88 fi
89 fi
90 fi
91 fi
92 fi
93 fi
94 rm -fr conftest*
95 ])
96 LOCALE_FR=$gt_cv_locale_fr
97 AC_SUBST([LOCALE_FR])
98 ])
99
100 dnl Determine the name of a french locale with UTF-8 encoding.
101 AC_DEFUN([gt_LOCALE_FR_UTF8],
102 [
103 AC_REQUIRE([AM_LANGINFO_CODESET])
104 AC_CACHE_CHECK([for a french Unicode locale], [gt_cv_locale_fr_utf8], [
105 AC_LANG_CONFTEST([AC_LANG_SOURCE([
106 changequote(,)dnl
107 #include <locale.h>
108 #include <time.h>
109 #if HAVE_LANGINFO_CODESET
110 # include <langinfo.h>
111 #endif
112 #include <stdlib.h>
113 #include <string.h>
114 struct tm t;
115 char buf[16];
116 int main () {
117 /* On BeOS and Haiku, locales are not implemented in libc. Rather, libintl
118 imitates locale dependent behaviour by looking at the environment
119 variables, and all locales use the UTF-8 encoding. */
120 #if !(defined __BEOS__ || defined __HAIKU__)
121 /* Check whether the given locale name is recognized by the system. */
122 if (setlocale (LC_ALL, "") == NULL) return 1;
123 /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646".
124 On MacOS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET)
125 is empty, and the behaviour of Tcl 8.4 in this locale is not useful.
126 On OpenBSD 4.0, when an unsupported locale is specified, setlocale()
127 succeeds but then nl_langinfo(CODESET) is "646". In this situation,
128 some unit tests fail. */
129 # if HAVE_LANGINFO_CODESET
130 {
131 const char *cs = nl_langinfo (CODESET);
132 if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0)
133 return 1;
134 }
135 # endif
136 # ifdef __CYGWIN__
137 /* On Cygwin, avoid locale names without encoding suffix, because the
138 locale_charset() function relies on the encoding suffix. Note that
139 LC_ALL is set on the command line. */
140 if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
141 # endif
142 /* Check whether in the abbreviation of the second month, the second
143 character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is
144 two bytes long, with UTF-8 encoding. */
145 t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4;
146 if (strftime (buf, sizeof (buf), "%b", &t) < 4
147 || buf[1] != (char) 0xc3 || buf[2] != (char) 0xa9 || buf[3] != 'v')
148 return 1;
149 #endif
150 /* Check whether the decimal separator is a comma.
151 On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
152 are nl_langinfo(RADIXCHAR) are both ".". */
153 if (localeconv () ->decimal_point[0] != ',') return 1;
154 return 0;
155 }
156 changequote([,])dnl
157 ])])
158 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
166 else
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
170 else
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
174 else
175 # None found.
176 gt_cv_locale_fr_utf8=none
177 fi
178 fi
179 fi
180 fi
181 rm -fr conftest*
182 ])
183 LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8
184 AC_SUBST([LOCALE_FR_UTF8])
185 ])