The 2007-04-04 patch was broken.
[gnulib.git] / m4 / printf.m4
1 # printf.m4 serial 5
2 dnl Copyright (C) 2003, 2007 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 Test whether the *printf family of functions supports the 'j', 'z', 't',
8 dnl 'L' size specifiers. (ISO C99, POSIX:2001)
9 dnl Result is gl_cv_func_printf_sizes_c99.
10
11 AC_DEFUN([gl_PRINTF_SIZES_C99],
12 [
13   AC_REQUIRE([AC_PROG_CC])
14   AC_REQUIRE([gl_AC_HEADER_STDINT_H])
15   AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
16   AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
17   AC_CACHE_CHECK([whether printf supports size specifiers as in C99],
18     [gl_cv_func_printf_sizes_c99], 
19     [
20       AC_TRY_RUN([
21 #include <stddef.h>
22 #include <stdio.h>
23 #include <string.h>
24 #include <sys/types.h>
25 #if HAVE_STDINT_H_WITH_UINTMAX
26 # include <stdint.h>
27 #endif
28 #if HAVE_INTTYPES_H_WITH_UINTMAX
29 # include <inttypes.h>
30 #endif
31 static char buf[100];
32 int main ()
33 {
34 #if HAVE_STDINT_H_WITH_UINTMAX || HAVE_INTTYPES_H_WITH_UINTMAX
35   buf[0] = '\0';
36   if (sprintf (buf, "%ju %d", (uintmax_t) 12345671, 33, 44, 55) < 0
37       || strcmp (buf, "12345671 33") != 0)
38     return 1;
39 #endif
40   buf[0] = '\0';
41   if (sprintf (buf, "%zu %d", (size_t) 12345672, 33, 44, 55) < 0
42       || strcmp (buf, "12345672 33") != 0)
43     return 1;
44   buf[0] = '\0';
45   if (sprintf (buf, "%tu %d", (ptrdiff_t) 12345673, 33, 44, 55) < 0
46       || strcmp (buf, "12345673 33") != 0)
47     return 1;
48   buf[0] = '\0';
49   if (sprintf (buf, "%Lg %d", (long double) 1.5, 33, 44, 55) < 0
50       || strcmp (buf, "1.5 33") != 0)
51     return 1;
52   return 0;
53 }], [gl_cv_func_printf_sizes_c99=yes], [gl_cv_func_printf_sizes_c99=no],
54       [
55 changequote(,)dnl
56        case "$host_os" in
57                                # Guess yes on glibc systems.
58          *-gnu*)               gl_cv_func_printf_sizes_c99="guessing yes";;
59                                # Guess yes on FreeBSD >= 5.
60          freebsd[1-4]*)        gl_cv_func_printf_sizes_c99="guessing no";;
61          freebsd* | kfreebsd*) gl_cv_func_printf_sizes_c99="guessing yes";;
62                                # Guess yes on MacOS X >= 10.3.
63          darwin[1-6].*)        gl_cv_func_printf_sizes_c99="guessing no";;
64          darwin*)              gl_cv_func_printf_sizes_c99="guessing yes";;
65                                # Guess yes on OpenBSD >= 3.9.
66          openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*)
67                                gl_cv_func_printf_sizes_c99="guessing no";;
68          openbsd*)             gl_cv_func_printf_sizes_c99="guessing yes";;
69                                # Guess yes on Solaris >= 2.10.
70          solaris2.[0-9]*)      gl_cv_func_printf_sizes_c99="guessing no";;
71          solaris*)             gl_cv_func_printf_sizes_c99="guessing yes";;
72                                # Guess yes on NetBSD >= 3.
73          netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
74                                gl_cv_func_printf_sizes_c99="guessing no";;
75          netbsd*)              gl_cv_func_printf_sizes_c99="guessing yes";;
76                                # If we don't know, assume the worst.
77          *)                    gl_cv_func_printf_sizes_c99="guessing no";;
78        esac
79 changequote([,])dnl
80       ])
81     ])
82 ])
83
84 dnl Test whether the *printf family of functions supports the 'a' and 'A'
85 dnl conversion specifier for hexadecimal output of floating-point numbers.
86 dnl (ISO C99, POSIX:2001)
87 dnl Result is gl_cv_func_printf_directive_a.
88
89 AC_DEFUN([gl_PRINTF_DIRECTIVE_A],
90 [
91   AC_REQUIRE([AC_PROG_CC])
92   AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
93   AC_CACHE_CHECK([whether printf supports the 'a' and 'A' directives],
94     [gl_cv_func_printf_directive_a], 
95     [
96       AC_TRY_RUN([
97 #include <stdio.h>
98 #include <string.h>
99 static char buf[100];
100 int main ()
101 {
102   if (sprintf (buf, "%a %d", 3.1416015625, 33, 44, 55) < 0
103       || (strcmp (buf, "0x1.922p+1 33") != 0
104           && strcmp (buf, "0x3.244p+0 33") != 0
105           && strcmp (buf, "0x6.488p-1 33") != 0
106           && strcmp (buf, "0xc.91p-2 33") != 0))
107     return 1;
108   if (sprintf (buf, "%A %d", -3.1416015625, 33, 44, 55) < 0
109       || (strcmp (buf, "-0X1.922P+1 33") != 0
110           && strcmp (buf, "-0X3.244P+0 33") != 0
111           && strcmp (buf, "-0X6.488P-1 33") != 0
112           && strcmp (buf, "-0XC.91P-2 33") != 0))
113     return 1;
114   /* This catches a FreeBSD 6.1 bug: it doesn't round.  */
115   if (sprintf (buf, "%.2a %d", 1.51, 33, 44, 55) < 0
116       || (strcmp (buf, "0x1.83p+0 33") != 0
117           && strcmp (buf, "0x3.05p-1 33") != 0
118           && strcmp (buf, "0x6.0ap-2 33") != 0
119           && strcmp (buf, "0xc.14p-3 33") != 0))
120     return 1;
121   /* This catches a FreeBSD 6.1 bug.  See
122      <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
123   if (sprintf (buf, "%010a %d", 1.0 / 0.0, 33, 44, 55) < 0
124       || buf[0] == '0')
125     return 1;
126   /* This catches a MacOS X 10.3.9 (Darwin 7.9) bug.  */
127   if (sprintf (buf, "%.1a", 1.999) < 0
128       || (strcmp (buf, "0x1.0p+1") != 0
129           && strcmp (buf, "0x2.0p+0") != 0
130           && strcmp (buf, "0x4.0p-1") != 0
131           && strcmp (buf, "0x8.0p-2") != 0))
132     return 1;
133   /* This catches the same MacOS X 10.3.9 (Darwin 7.9) bug and also a
134      glibc 2.4 bug <http://sourceware.org/bugzilla/show_bug.cgi?id=2908>.  */
135   if (sprintf (buf, "%.1La", 1.999L) < 0
136       || (strcmp (buf, "0x1.0p+1") != 0
137           && strcmp (buf, "0x2.0p+0") != 0
138           && strcmp (buf, "0x4.0p-1") != 0
139           && strcmp (buf, "0x8.0p-2") != 0))
140     return 1;
141   return 0;
142 }], [gl_cv_func_printf_directive_a=yes], [gl_cv_func_printf_directive_a=no],
143       [
144        case "$host_os" in
145                                # Guess yes on glibc >= 2.5 systems.
146          *-gnu*)
147            AC_EGREP_CPP([BZ2908], [
148              #include <features.h>
149              #ifdef __GNU_LIBRARY__
150               #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 5) || (__GLIBC__ > 2)
151                BZ2908
152               #endif
153              #endif
154              ],
155              [gl_cv_func_printf_directive_a="guessing yes"],
156              [gl_cv_func_printf_directive_a="guessing no"])
157            ;;
158                                # If we don't know, assume the worst.
159          *)                    gl_cv_func_printf_directive_a="guessing no";;
160        esac
161       ])
162     ])
163 ])
164
165 dnl Test whether the *printf family of functions supports the %n format
166 dnl directive. (ISO C99, POSIX:2001)
167 dnl Result is gl_cv_func_printf_directive_n.
168
169 AC_DEFUN([gl_PRINTF_DIRECTIVE_N],
170 [
171   AC_REQUIRE([AC_PROG_CC])
172   AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
173   AC_CACHE_CHECK([whether printf supports the 'n' directive],
174     [gl_cv_func_printf_directive_n], 
175     [
176       AC_TRY_RUN([
177 #include <stdio.h>
178 #include <string.h>
179 static char buf[100];
180 int main ()
181 {
182   int count = -1;
183   if (sprintf (buf, "%d %n", 123, &count, 33, 44, 55) < 0
184       || strcmp (buf, "123 ") != 0
185       || count != 4)
186     return 1;
187   return 0;
188 }], [gl_cv_func_printf_directive_n=yes], [gl_cv_func_printf_directive_n=no],
189       [
190 changequote(,)dnl
191        case "$host_os" in
192          *)     gl_cv_func_printf_directive_n="guessing yes";;
193        esac
194 changequote([,])dnl
195       ])
196     ])
197 ])
198
199 dnl Test whether the *printf family of functions supports POSIX/XSI format
200 dnl strings with positions. (POSIX:2001)
201 dnl Result is gl_cv_func_printf_positions.
202
203 AC_DEFUN([gl_PRINTF_POSITIONS],
204 [
205   AC_REQUIRE([AC_PROG_CC])
206   AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
207   AC_CACHE_CHECK([whether printf supports POSIX/XSI format strings with positions],
208     [gl_cv_func_printf_positions], 
209     [
210       AC_TRY_RUN([
211 #include <stdio.h>
212 #include <string.h>
213 /* The string "%2$d %1$d", with dollar characters protected from the shell's
214    dollar expansion (possibly an autoconf bug).  */
215 static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' };
216 static char buf[100];
217 int main ()
218 {
219   sprintf (buf, format, 33, 55);
220   return (strcmp (buf, "55 33") != 0);
221 }], [gl_cv_func_printf_positions=yes], [gl_cv_func_printf_positions=no],
222       [
223 changequote(,)dnl
224        case "$host_os" in
225          netbsd[1-3]* | netbsdelf[1-3]* | netbsdaout[1-3]* | netbsdcoff[1-3]*)
226                        gl_cv_func_printf_positions="guessing no";;
227          beos*)        gl_cv_func_printf_positions="guessing no";;
228          mingw* | pw*) gl_cv_func_printf_positions="guessing no";;
229          *)            gl_cv_func_printf_positions="guessing yes";;
230        esac
231 changequote([,])dnl
232       ])
233     ])
234 ])
235
236 dnl Test whether the snprintf function exists. (ISO C99, POSIX:2001)
237 dnl Result is ac_cv_func_snprintf.
238
239 AC_DEFUN([gl_SNPRINTF_PRESENCE],
240 [
241   AC_CHECK_FUNCS_ONCE([snprintf])
242 ])
243
244 dnl Test whether the string produced by the snprintf function is always NUL
245 dnl terminated. (ISO C99, POSIX:2001)
246 dnl Result is gl_cv_func_snprintf_truncation_c99.
247
248 AC_DEFUN([gl_SNPRINTF_TRUNCATION_C99],
249 [
250   AC_REQUIRE([AC_PROG_CC])
251   AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
252   AC_CACHE_CHECK([whether snprintf truncates the result as in C99],
253     [gl_cv_func_snprintf_truncation_c99], 
254     [
255       AC_TRY_RUN([
256 #include <stdio.h>
257 #include <string.h>
258 static char buf[100];
259 int main ()
260 {
261   strcpy (buf, "ABCDEF");
262   snprintf (buf, 3, "%d %d", 4567, 89);
263   if (memcmp (buf, "45\0DEF", 6) != 0)
264     return 1;
265   return 0;
266 }], [gl_cv_func_snprintf_truncation_c99=yes], [gl_cv_func_snprintf_truncation_c99=no],
267       [
268 changequote(,)dnl
269        case "$host_os" in
270                                # Guess yes on glibc systems.
271          *-gnu*)               gl_cv_func_snprintf_truncation_c99="guessing yes";;
272                                # Guess yes on FreeBSD >= 5.
273          freebsd[1-4]*)        gl_cv_func_snprintf_truncation_c99="guessing no";;
274          freebsd* | kfreebsd*) gl_cv_func_snprintf_truncation_c99="guessing yes";;
275                                # Guess yes on MacOS X >= 10.3.
276          darwin[1-6].*)        gl_cv_func_snprintf_truncation_c99="guessing no";;
277          darwin*)              gl_cv_func_snprintf_truncation_c99="guessing yes";;
278                                # Guess yes on OpenBSD >= 3.9.
279          openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*)
280                                gl_cv_func_snprintf_truncation_c99="guessing no";;
281          openbsd*)             gl_cv_func_snprintf_truncation_c99="guessing yes";;
282                                # Guess yes on Solaris >= 2.6.
283          solaris2.[0-5]*)      gl_cv_func_snprintf_truncation_c99="guessing no";;
284          solaris*)             gl_cv_func_snprintf_truncation_c99="guessing yes";;
285                                # Guess yes on AIX >= 4.
286          aix[1-3]*)            gl_cv_func_snprintf_truncation_c99="guessing no";;
287          aix*)                 gl_cv_func_snprintf_truncation_c99="guessing yes";;
288                                # Guess yes on HP-UX >= 11.
289          hpux[7-9]* | hpux10*) gl_cv_func_snprintf_truncation_c99="guessing no";;
290          hpux*)                gl_cv_func_snprintf_truncation_c99="guessing yes";;
291                                # Guess yes on IRIX >= 6.5.
292          irix6.5)              gl_cv_func_snprintf_truncation_c99="guessing yes";;
293                                # Guess yes on OSF/1 >= 5.
294          osf[3-4]*)            gl_cv_func_snprintf_truncation_c99="guessing no";;
295          osf*)                 gl_cv_func_snprintf_truncation_c99="guessing yes";;
296                                # Guess yes on NetBSD >= 3.
297          netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
298                                gl_cv_func_snprintf_truncation_c99="guessing no";;
299          netbsd*)              gl_cv_func_snprintf_truncation_c99="guessing yes";;
300                                # Guess yes on BeOS.
301          beos*)                gl_cv_func_snprintf_truncation_c99="guessing yes";;
302                                # If we don't know, assume the worst.
303          *)                    gl_cv_func_snprintf_truncation_c99="guessing no";;
304        esac
305 changequote([,])dnl
306       ])
307     ])
308 ])
309
310 dnl Test whether the return value of the snprintf function is the number
311 dnl of bytes (excluding the terminating NUL) that would have been produced
312 dnl if the buffer had been large enough. (ISO C99, POSIX:2001)
313 dnl Result is gl_cv_func_snprintf_retval_c99.
314
315 AC_DEFUN([gl_SNPRINTF_RETVAL_C99],
316 [
317   AC_REQUIRE([AC_PROG_CC])
318   AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
319   AC_CACHE_CHECK([whether snprintf returns a byte count as in C99],
320     [gl_cv_func_snprintf_retval_c99], 
321     [
322       AC_TRY_RUN([
323 #include <stdio.h>
324 #include <string.h>
325 static char buf[100];
326 int main ()
327 {
328   strcpy (buf, "ABCDEF");
329   if (snprintf (buf, 3, "%d %d", 4567, 89) != 7)
330     return 1;
331   return 0;
332 }], [gl_cv_func_snprintf_retval_c99=yes], [gl_cv_func_snprintf_retval_c99=no],
333       [
334 changequote(,)dnl
335        case "$host_os" in
336                                # Guess yes on glibc systems.
337          *-gnu*)               gl_cv_func_snprintf_retval_c99="guessing yes";;
338                                # Guess yes on FreeBSD >= 5.
339          freebsd[1-4]*)        gl_cv_func_snprintf_retval_c99="guessing no";;
340          freebsd* | kfreebsd*) gl_cv_func_snprintf_retval_c99="guessing yes";;
341                                # Guess yes on MacOS X >= 10.3.
342          darwin[1-6].*)        gl_cv_func_snprintf_retval_c99="guessing no";;
343          darwin*)              gl_cv_func_snprintf_retval_c99="guessing yes";;
344                                # Guess yes on OpenBSD >= 3.9.
345          openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*)
346                                gl_cv_func_snprintf_retval_c99="guessing no";;
347          openbsd*)             gl_cv_func_snprintf_retval_c99="guessing yes";;
348                                # Guess yes on Solaris >= 2.6.
349          solaris2.[0-5]*)      gl_cv_func_snprintf_retval_c99="guessing no";;
350          solaris*)             gl_cv_func_snprintf_retval_c99="guessing yes";;
351                                # Guess yes on AIX >= 4.
352          aix[1-3]*)            gl_cv_func_snprintf_retval_c99="guessing no";;
353          aix*)                 gl_cv_func_snprintf_retval_c99="guessing yes";;
354                                # Guess yes on NetBSD >= 3.
355          netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
356                                gl_cv_func_snprintf_retval_c99="guessing no";;
357          netbsd*)              gl_cv_func_snprintf_retval_c99="guessing yes";;
358                                # Guess yes on BeOS.
359          beos*)                gl_cv_func_snprintf_retval_c99="guessing yes";;
360                                # If we don't know, assume the worst.
361          *)                    gl_cv_func_snprintf_retval_c99="guessing no";;
362        esac
363 changequote([,])dnl
364       ])
365     ])
366 ])
367
368 dnl Test whether the snprintf function supports the %n format directive
369 dnl also in truncated portions of the format string. (ISO C99, POSIX:2001)
370 dnl Result is gl_cv_func_snprintf_directive_n.
371
372 AC_DEFUN([gl_SNPRINTF_DIRECTIVE_N],
373 [
374   AC_REQUIRE([AC_PROG_CC])
375   AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
376   AC_CACHE_CHECK([whether snprintf fully supports the 'n' directive],
377     [gl_cv_func_snprintf_directive_n], 
378     [
379       AC_TRY_RUN([
380 #include <stdio.h>
381 #include <string.h>
382 static char buf[100];
383 int main ()
384 {
385   int count = -1;
386   snprintf (buf, 4, "%d %n", 12345, &count, 33, 44, 55);
387   if (count != 6)
388     return 1;
389   return 0;
390 }], [gl_cv_func_snprintf_directive_n=yes], [gl_cv_func_snprintf_directive_n=no],
391       [
392 changequote(,)dnl
393        case "$host_os" in
394                                # Guess yes on glibc systems.
395          *-gnu*)               gl_cv_func_snprintf_directive_n="guessing yes";;
396                                # Guess yes on FreeBSD >= 5.
397          freebsd[1-4]*)        gl_cv_func_snprintf_directive_n="guessing no";;
398          freebsd* | kfreebsd*) gl_cv_func_snprintf_directive_n="guessing yes";;
399                                # Guess yes on MacOS X >= 10.3.
400          darwin[1-6].*)        gl_cv_func_snprintf_directive_n="guessing no";;
401          darwin*)              gl_cv_func_snprintf_directive_n="guessing yes";;
402                                # Guess yes on Solaris >= 2.6.
403          solaris2.[0-5]*)      gl_cv_func_snprintf_directive_n="guessing no";;
404          solaris*)             gl_cv_func_snprintf_directive_n="guessing yes";;
405                                # Guess yes on AIX >= 4.
406          aix[1-3]*)            gl_cv_func_snprintf_directive_n="guessing no";;
407          aix*)                 gl_cv_func_snprintf_directive_n="guessing yes";;
408                                # Guess yes on IRIX >= 6.5.
409          irix6.5)              gl_cv_func_snprintf_directive_n="guessing yes";;
410                                # Guess yes on OSF/1 >= 5.
411          osf[3-4]*)            gl_cv_func_snprintf_directive_n="guessing no";;
412          osf*)                 gl_cv_func_snprintf_directive_n="guessing yes";;
413                                # Guess yes on NetBSD >= 3.
414          netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
415                                gl_cv_func_snprintf_directive_n="guessing no";;
416          netbsd*)              gl_cv_func_snprintf_directive_n="guessing yes";;
417                                # Guess yes on BeOS.
418          beos*)                gl_cv_func_snprintf_directive_n="guessing yes";;
419                                # If we don't know, assume the worst.
420          *)                    gl_cv_func_snprintf_directive_n="guessing no";;
421        esac
422 changequote([,])dnl
423       ])
424     ])
425 ])
426
427 dnl The results of these tests on various platforms are:
428 dnl
429 dnl 1 = gl_PRINTF_SIZES_C99
430 dnl 2 = gl_PRINTF_DIRECTIVE_A
431 dnl 3 = gl_PRINTF_DIRECTIVE_N
432 dnl 4 = gl_PRINTF_POSITIONS
433 dnl 5 = gl_SNPRINTF_PRESENCE
434 dnl 6 = gl_SNPRINTF_TRUNCATION_C99
435 dnl 7 = gl_SNPRINTF_RETVAL_C99
436 dnl 8 = gl_SNPRINTF_DIRECTIVE_N
437 dnl
438 dnl 1 = checking whether printf supports size specifiers as in C99...
439 dnl 2 = checking whether printf supports the 'a' and 'A' directives...
440 dnl 3 = checking whether printf supports the 'n' directive...
441 dnl 4 = checking whether printf supports POSIX/XSI format strings with positions...
442 dnl 5 = checking for snprintf...
443 dnl 6 = checking whether snprintf truncates the result as in C99...
444 dnl 7 = checking whether snprintf returns a byte count as in C99...
445 dnl 8 = checking whether snprintf fully supports the 'n' directive...
446 dnl
447 dnl . = yes, # = no.
448 dnl
449 dnl                                        1  2  3  4  5  6  7  8
450 dnl   glibc 2.5                            .  .  .  .  .  .  .  .
451 dnl   glibc 2.3.6                          .  #  .  .  .  .  .  .
452 dnl   FreeBSD 5.4, 6.1                     .  ?  .  .  .  .  .  .
453 dnl   MacOS X 10.3.9                       .  #  .  .  .  .  .  .
454 dnl   OpenBSD 3.9, 4.0                     .  #  .  .  .  .  .  ?
455 dnl   Cygwin 2007                          .  #  .  .  .  .  .  ?
456 dnl   Cygwin 2006                          #  #  .  .  .  .  .  ?
457 dnl   Solaris 10                           .  #  .  .  .  .  .  .
458 dnl   Solaris 2.6 ... 9                    #  #  .  .  .  .  .  .
459 dnl   Solaris 2.5.1                        #  #  .  .  #  #  #  #
460 dnl   AIX 4.3.2, 5.1                       #  #  .  .  .  .  .  .
461 dnl   HP-UX 11.31                          .  #  .  .  .  .  #  #
462 dnl   HP-UX 10.20, 11.00, 11.11, 11.23     #  #  .  .  .  .  #  #
463 dnl   IRIX 6.5                             #  #  .  .  .  .  #  .
464 dnl   OSF/1 5.1                            #  #  .  .  .  .  #  .
465 dnl   OSF/1 4.0d                           #  #  .  .  #  #  #  #
466 dnl   NetBSD 4.0                           .  ?  .  .  .  .  .  ?
467 dnl   NetBSD 3.0                           .  #  .  #  .  .  .  .
468 dnl   BeOS                                 #  #  .  #  .  .  .  .
469 dnl   mingw                                #  #  .  #  .  #  #  #