Update Cygwin test results.
[pspp] / m4 / printf.m4
index 099d956b483b894b40f775f2a82593423e1e81bb..fdabf1b354454c1f40e1b21743c4e4b2dfe79d17 100644 (file)
@@ -1,4 +1,4 @@
-# printf.m4 serial 2
+# printf.m4 serial 6
 dnl Copyright (C) 2003, 2007 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -13,7 +13,6 @@ AC_DEFUN([gl_PRINTF_SIZES_C99],
   AC_REQUIRE([AC_PROG_CC])
   AC_REQUIRE([gl_AC_HEADER_STDINT_H])
   AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
-  AC_REQUIRE([gt_TYPE_LONGDOUBLE])
   AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
   AC_CACHE_CHECK([whether printf supports size specifiers as in C99],
     [gl_cv_func_printf_sizes_c99], 
@@ -46,37 +45,35 @@ int main ()
   if (sprintf (buf, "%tu %d", (ptrdiff_t) 12345673, 33, 44, 55) < 0
       || strcmp (buf, "12345673 33") != 0)
     return 1;
-#if HAVE_LONG_DOUBLE
   buf[0] = '\0';
   if (sprintf (buf, "%Lg %d", (long double) 1.5, 33, 44, 55) < 0
       || strcmp (buf, "1.5 33") != 0)
     return 1;
-#endif
   return 0;
 }], [gl_cv_func_printf_sizes_c99=yes], [gl_cv_func_printf_sizes_c99=no],
       [
 changequote(,)dnl
        case "$host_os" in
-                               dnl Guess yes on glibc systems.
+                               # Guess yes on glibc systems.
          *-gnu*)               gl_cv_func_printf_sizes_c99="guessing yes";;
-                               dnl Guess yes on FreeBSD >= 5.
+                               # Guess yes on FreeBSD >= 5.
          freebsd[1-4]*)        gl_cv_func_printf_sizes_c99="guessing no";;
          freebsd* | kfreebsd*) gl_cv_func_printf_sizes_c99="guessing yes";;
-                               dnl Guess yes on MacOS X >= 10.3.
+                               # Guess yes on MacOS X >= 10.3.
          darwin[1-6].*)        gl_cv_func_printf_sizes_c99="guessing no";;
          darwin*)              gl_cv_func_printf_sizes_c99="guessing yes";;
-                               dnl Guess yes on OpenBSD >= 3.9.
+                               # Guess yes on OpenBSD >= 3.9.
          openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*)
                                gl_cv_func_printf_sizes_c99="guessing no";;
          openbsd*)             gl_cv_func_printf_sizes_c99="guessing yes";;
-                               dnl Guess yes on Solaris >= 2.10.
+                               # Guess yes on Solaris >= 2.10.
          solaris2.[0-9]*)      gl_cv_func_printf_sizes_c99="guessing no";;
          solaris*)             gl_cv_func_printf_sizes_c99="guessing yes";;
-                               dnl Guess yes on NetBSD >= 3.
+                               # Guess yes on NetBSD >= 3.
          netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
                                gl_cv_func_printf_sizes_c99="guessing no";;
          netbsd*)              gl_cv_func_printf_sizes_c99="guessing yes";;
-                               dnl If we don't know, assume the worst.
+                               # If we don't know, assume the worst.
          *)                    gl_cv_func_printf_sizes_c99="guessing no";;
        esac
 changequote([,])dnl
@@ -92,7 +89,6 @@ dnl Result is gl_cv_func_printf_directive_a.
 AC_DEFUN([gl_PRINTF_DIRECTIVE_A],
 [
   AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([gt_TYPE_LONGDOUBLE])
   AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
   AC_CACHE_CHECK([whether printf supports the 'a' and 'A' directives],
     [gl_cv_func_printf_directive_a], 
@@ -115,6 +111,18 @@ int main ()
           && strcmp (buf, "-0X6.488P-1 33") != 0
           && strcmp (buf, "-0XC.91P-2 33") != 0))
     return 1;
+  /* This catches a FreeBSD 6.1 bug: it doesn't round.  */
+  if (sprintf (buf, "%.2a %d", 1.51, 33, 44, 55) < 0
+      || (strcmp (buf, "0x1.83p+0 33") != 0
+          && strcmp (buf, "0x3.05p-1 33") != 0
+          && strcmp (buf, "0x6.0ap-2 33") != 0
+          && strcmp (buf, "0xc.14p-3 33") != 0))
+    return 1;
+  /* This catches a FreeBSD 6.1 bug.  See
+     <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
+  if (sprintf (buf, "%010a %d", 1.0 / 0.0, 33, 44, 55) < 0
+      || buf[0] == '0')
+    return 1;
   /* This catches a MacOS X 10.3.9 (Darwin 7.9) bug.  */
   if (sprintf (buf, "%.1a", 1.999) < 0
       || (strcmp (buf, "0x1.0p+1") != 0
@@ -122,7 +130,6 @@ int main ()
           && strcmp (buf, "0x4.0p-1") != 0
           && strcmp (buf, "0x8.0p-2") != 0))
     return 1;
-#if HAVE_LONG_DOUBLE
   /* This catches the same MacOS X 10.3.9 (Darwin 7.9) bug and also a
      glibc 2.4 bug <http://sourceware.org/bugzilla/show_bug.cgi?id=2908>.  */
   if (sprintf (buf, "%.1La", 1.999L) < 0
@@ -131,12 +138,11 @@ int main ()
           && strcmp (buf, "0x4.0p-1") != 0
           && strcmp (buf, "0x8.0p-2") != 0))
     return 1;
-#endif
   return 0;
 }], [gl_cv_func_printf_directive_a=yes], [gl_cv_func_printf_directive_a=no],
       [
        case "$host_os" in
-                               dnl Guess yes on glibc >= 2.5 systems.
+                               # Guess yes on glibc >= 2.5 systems.
          *-gnu*)
            AC_EGREP_CPP([BZ2908], [
              #include <features.h>
@@ -149,17 +155,59 @@ int main ()
              [gl_cv_func_printf_directive_a="guessing yes"],
              [gl_cv_func_printf_directive_a="guessing no"])
            ;;
-changequote(,)dnl
-                               dnl Guess yes on FreeBSD >= 5.
-         freebsd[1-4]*)        gl_cv_func_printf_directive_a="guessing no";;
-         freebsd* | kfreebsd*) gl_cv_func_printf_directive_a="guessing yes";;
-                               dnl Guess yes on NetBSD >= 4.
-         netbsd[1-3]* | netbsdelf[1-3]* | netbsdaout[1-3]* | netbsdcoff[1-3]*)
-                               gl_cv_func_printf_directive_a="guessing no";;
-         netbsd*)              gl_cv_func_printf_directive_a="guessing yes";;
-                               dnl If we don't know, assume the worst.
+                               # If we don't know, assume the worst.
          *)                    gl_cv_func_printf_directive_a="guessing no";;
        esac
+      ])
+    ])
+])
+
+dnl Test whether the *printf family of functions supports the %F format
+dnl directive. (ISO C99, POSIX:2001)
+dnl Result is gl_cv_func_printf_directive_f.
+
+AC_DEFUN([gl_PRINTF_DIRECTIVE_F],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_CACHE_CHECK([whether printf supports the 'F' directive],
+    [gl_cv_func_printf_directive_f], 
+    [
+      AC_TRY_RUN([
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+int main ()
+{
+  if (sprintf (buf, "%F %d", 1234567.0, 33, 44, 55) < 0
+      || strcmp (buf, "1234567.000000 33") != 0)
+    return 1;
+  if (sprintf (buf, "%F", 1.0 / 0.0) < 0
+      || (strcmp (buf, "INF") != 0 && strcmp (buf, "INFINITY") != 0))
+    return 1;
+  /* This catches a Cygwin 2007 bug.  */
+  if (sprintf (buf, "%.F", 1234.0) < 0
+      || strcmp (buf, "1234") != 0)
+    return 1;
+  return 0;
+}], [gl_cv_func_printf_directive_f=yes], [gl_cv_func_printf_directive_f=no],
+      [
+changequote(,)dnl
+       case "$host_os" in
+                               # Guess yes on glibc systems.
+         *-gnu*)               gl_cv_func_printf_directive_f="guessing yes";;
+                               # Guess yes on FreeBSD >= 6.
+         freebsd[1-5]*)        gl_cv_func_printf_directive_f="guessing no";;
+         freebsd* | kfreebsd*) gl_cv_func_printf_directive_f="guessing yes";;
+                               # Guess yes on MacOS X >= 10.3.
+         darwin[1-6].*)        gl_cv_func_printf_directive_f="guessing no";;
+         darwin*)              gl_cv_func_printf_directive_f="guessing yes";;
+                               # Guess yes on Solaris >= 2.10.
+         solaris2.[0-9]*)      gl_cv_func_printf_directive_f="guessing no";;
+         solaris*)             gl_cv_func_printf_directive_f="guessing yes";;
+                               # If we don't know, assume the worst.
+         *)                    gl_cv_func_printf_directive_f="guessing no";;
+       esac
 changequote([,])dnl
       ])
     ])
@@ -270,39 +318,39 @@ int main ()
       [
 changequote(,)dnl
        case "$host_os" in
-                               dnl Guess yes on glibc systems.
+                               # Guess yes on glibc systems.
          *-gnu*)               gl_cv_func_snprintf_truncation_c99="guessing yes";;
-                               dnl Guess yes on FreeBSD >= 5.
+                               # Guess yes on FreeBSD >= 5.
          freebsd[1-4]*)        gl_cv_func_snprintf_truncation_c99="guessing no";;
          freebsd* | kfreebsd*) gl_cv_func_snprintf_truncation_c99="guessing yes";;
-                               dnl Guess yes on MacOS X >= 10.3.
+                               # Guess yes on MacOS X >= 10.3.
          darwin[1-6].*)        gl_cv_func_snprintf_truncation_c99="guessing no";;
          darwin*)              gl_cv_func_snprintf_truncation_c99="guessing yes";;
-                               dnl Guess yes on OpenBSD >= 3.9.
+                               # Guess yes on OpenBSD >= 3.9.
          openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*)
                                gl_cv_func_snprintf_truncation_c99="guessing no";;
          openbsd*)             gl_cv_func_snprintf_truncation_c99="guessing yes";;
-                               dnl Guess yes on Solaris >= 2.6.
+                               # Guess yes on Solaris >= 2.6.
          solaris2.[0-5]*)      gl_cv_func_snprintf_truncation_c99="guessing no";;
          solaris*)             gl_cv_func_snprintf_truncation_c99="guessing yes";;
-                               dnl Guess yes on AIX >= 4.
+                               # Guess yes on AIX >= 4.
          aix[1-3]*)            gl_cv_func_snprintf_truncation_c99="guessing no";;
          aix*)                 gl_cv_func_snprintf_truncation_c99="guessing yes";;
-                               dnl Guess yes on HP-UX >= 11.
+                               # Guess yes on HP-UX >= 11.
          hpux[7-9]* | hpux10*) gl_cv_func_snprintf_truncation_c99="guessing no";;
          hpux*)                gl_cv_func_snprintf_truncation_c99="guessing yes";;
-                               dnl Guess yes on IRIX >= 6.5.
+                               # Guess yes on IRIX >= 6.5.
          irix6.5)              gl_cv_func_snprintf_truncation_c99="guessing yes";;
-                               dnl Guess yes on OSF/1 >= 5.
+                               # Guess yes on OSF/1 >= 5.
          osf[3-4]*)            gl_cv_func_snprintf_truncation_c99="guessing no";;
          osf*)                 gl_cv_func_snprintf_truncation_c99="guessing yes";;
-                               dnl Guess yes on NetBSD >= 3.
+                               # Guess yes on NetBSD >= 3.
          netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
                                gl_cv_func_snprintf_truncation_c99="guessing no";;
          netbsd*)              gl_cv_func_snprintf_truncation_c99="guessing yes";;
-                               dnl Guess yes on BeOS.
+                               # Guess yes on BeOS.
          beos*)                gl_cv_func_snprintf_truncation_c99="guessing yes";;
-                               dnl If we don't know, assume the worst.
+                               # If we don't know, assume the worst.
          *)                    gl_cv_func_snprintf_truncation_c99="guessing no";;
        esac
 changequote([,])dnl
@@ -336,31 +384,31 @@ int main ()
       [
 changequote(,)dnl
        case "$host_os" in
-                               dnl Guess yes on glibc systems.
+                               # Guess yes on glibc systems.
          *-gnu*)               gl_cv_func_snprintf_retval_c99="guessing yes";;
-                               dnl Guess yes on FreeBSD >= 5.
+                               # Guess yes on FreeBSD >= 5.
          freebsd[1-4]*)        gl_cv_func_snprintf_retval_c99="guessing no";;
          freebsd* | kfreebsd*) gl_cv_func_snprintf_retval_c99="guessing yes";;
-                               dnl Guess yes on MacOS X >= 10.3.
+                               # Guess yes on MacOS X >= 10.3.
          darwin[1-6].*)        gl_cv_func_snprintf_retval_c99="guessing no";;
          darwin*)              gl_cv_func_snprintf_retval_c99="guessing yes";;
-                               dnl Guess yes on OpenBSD >= 3.9.
+                               # Guess yes on OpenBSD >= 3.9.
          openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*)
                                gl_cv_func_snprintf_retval_c99="guessing no";;
          openbsd*)             gl_cv_func_snprintf_retval_c99="guessing yes";;
-                               dnl Guess yes on Solaris >= 2.6.
+                               # Guess yes on Solaris >= 2.6.
          solaris2.[0-5]*)      gl_cv_func_snprintf_retval_c99="guessing no";;
          solaris*)             gl_cv_func_snprintf_retval_c99="guessing yes";;
-                               dnl Guess yes on AIX >= 4.
+                               # Guess yes on AIX >= 4.
          aix[1-3]*)            gl_cv_func_snprintf_retval_c99="guessing no";;
          aix*)                 gl_cv_func_snprintf_retval_c99="guessing yes";;
-                               dnl Guess yes on NetBSD >= 3.
+                               # Guess yes on NetBSD >= 3.
          netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
                                gl_cv_func_snprintf_retval_c99="guessing no";;
          netbsd*)              gl_cv_func_snprintf_retval_c99="guessing yes";;
-                               dnl Guess yes on BeOS.
+                               # Guess yes on BeOS.
          beos*)                gl_cv_func_snprintf_retval_c99="guessing yes";;
-                               dnl If we don't know, assume the worst.
+                               # If we don't know, assume the worst.
          *)                    gl_cv_func_snprintf_retval_c99="guessing no";;
        esac
 changequote([,])dnl
@@ -394,32 +442,32 @@ int main ()
       [
 changequote(,)dnl
        case "$host_os" in
-                               dnl Guess yes on glibc systems.
+                               # Guess yes on glibc systems.
          *-gnu*)               gl_cv_func_snprintf_directive_n="guessing yes";;
-                               dnl Guess yes on FreeBSD >= 5.
+                               # Guess yes on FreeBSD >= 5.
          freebsd[1-4]*)        gl_cv_func_snprintf_directive_n="guessing no";;
          freebsd* | kfreebsd*) gl_cv_func_snprintf_directive_n="guessing yes";;
-                               dnl Guess yes on MacOS X >= 10.3.
+                               # Guess yes on MacOS X >= 10.3.
          darwin[1-6].*)        gl_cv_func_snprintf_directive_n="guessing no";;
          darwin*)              gl_cv_func_snprintf_directive_n="guessing yes";;
-                               dnl Guess yes on Solaris >= 2.6.
+                               # Guess yes on Solaris >= 2.6.
          solaris2.[0-5]*)      gl_cv_func_snprintf_directive_n="guessing no";;
          solaris*)             gl_cv_func_snprintf_directive_n="guessing yes";;
-                               dnl Guess yes on AIX >= 4.
+                               # Guess yes on AIX >= 4.
          aix[1-3]*)            gl_cv_func_snprintf_directive_n="guessing no";;
          aix*)                 gl_cv_func_snprintf_directive_n="guessing yes";;
-                               dnl Guess yes on IRIX >= 6.5.
+                               # Guess yes on IRIX >= 6.5.
          irix6.5)              gl_cv_func_snprintf_directive_n="guessing yes";;
-                               dnl Guess yes on OSF/1 >= 5.
+                               # Guess yes on OSF/1 >= 5.
          osf[3-4]*)            gl_cv_func_snprintf_directive_n="guessing no";;
          osf*)                 gl_cv_func_snprintf_directive_n="guessing yes";;
-                               dnl Guess yes on NetBSD >= 3.
+                               # Guess yes on NetBSD >= 3.
          netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
                                gl_cv_func_snprintf_directive_n="guessing no";;
          netbsd*)              gl_cv_func_snprintf_directive_n="guessing yes";;
-                               dnl Guess yes on BeOS.
+                               # Guess yes on BeOS.
          beos*)                gl_cv_func_snprintf_directive_n="guessing yes";;
-                               dnl If we don't know, assume the worst.
+                               # If we don't know, assume the worst.
          *)                    gl_cv_func_snprintf_directive_n="guessing no";;
        esac
 changequote([,])dnl
@@ -431,42 +479,45 @@ dnl The results of these tests on various platforms are:
 dnl
 dnl 1 = gl_PRINTF_SIZES_C99
 dnl 2 = gl_PRINTF_DIRECTIVE_A
-dnl 3 = gl_PRINTF_DIRECTIVE_N
-dnl 4 = gl_PRINTF_POSITIONS
-dnl 5 = gl_SNPRINTF_PRESENCE
-dnl 6 = gl_SNPRINTF_TRUNCATION_C99
-dnl 7 = gl_SNPRINTF_RETVAL_C99
-dnl 8 = gl_SNPRINTF_DIRECTIVE_N
+dnl 3 = gl_PRINTF_DIRECTIVE_F
+dnl 4 = gl_PRINTF_DIRECTIVE_N
+dnl 5 = gl_PRINTF_POSITIONS
+dnl 6 = gl_SNPRINTF_PRESENCE
+dnl 7 = gl_SNPRINTF_TRUNCATION_C99
+dnl 8 = gl_SNPRINTF_RETVAL_C99
+dnl 9 = gl_SNPRINTF_DIRECTIVE_N
 dnl
 dnl 1 = checking whether printf supports size specifiers as in C99...
 dnl 2 = checking whether printf supports the 'a' and 'A' directives...
-dnl 3 = checking whether printf supports the 'n' directive...
-dnl 4 = checking whether printf supports POSIX/XSI format strings with positions...
-dnl 5 = checking for snprintf...
-dnl 6 = checking whether snprintf truncates the result as in C99...
-dnl 7 = checking whether snprintf returns a byte count as in C99...
-dnl 8 = checking whether snprintf fully supports the 'n' directive...
+dnl 3 = checking whether printf supports the 'F' directive...
+dnl 4 = checking whether printf supports the 'n' directive...
+dnl 5 = checking whether printf supports POSIX/XSI format strings with positions...
+dnl 6 = checking for snprintf...
+dnl 7 = checking whether snprintf truncates the result as in C99...
+dnl 8 = checking whether snprintf returns a byte count as in C99...
+dnl 9 = checking whether snprintf fully supports the 'n' directive...
 dnl
 dnl . = yes, # = no.
 dnl
-dnl                                        1  2  3  4  5  6  7  8
-dnl   glibc 2.5                            .  .  .  .  .  .  .  .
-dnl   glibc 2.3.6                          .  #  .  .  .  .  .  .
-dnl   FreeBSD 5.4, 6.1                     .  .  .  .  .  .  .  .
-dnl   MacOS X 10.3.9                       .  #  .  .  .  .  .  .
-dnl   OpenBSD 3.9                          .  #  .  .  .  .  .  ?
-dnl   Cygwin 2007                          .  #  .  .  .  .  .  ?
-dnl   Cygwin 2006                          #  #  .  .  .  .  .  ?
-dnl   Solaris 10                           .  #  .  .  .  .  .  .
-dnl   Solaris 2.6 ... 9                    #  #  .  .  .  .  .  .
-dnl   Solaris 2.5.1                        #  #  .  .  #  #  #  #
-dnl   AIX 4.3.2, 5.1                       #  #  .  .  .  .  .  .
-dnl   HP-UX 11.31                          .  #  .  .  .  .  #  #
-dnl   HP-UX 10.20, 11.00, 11.11, 11.23     #  #  .  .  .  .  #  #
-dnl   IRIX 6.5                             #  #  .  .  .  .  #  .
-dnl   OSF/1 5.1                            #  #  .  .  .  .  #  .
-dnl   OSF/1 4.0d                           #  #  .  .  #  #  #  #
-dnl   NetBSD 4.0                           .  .  .  .  .  .  .  ?
-dnl   NetBSD 3.0                           .  #  .  #  .  .  .  .
-dnl   BeOS                                 #  #  .  #  .  .  .  .
-dnl   mingw                                #  #  .  #  .  #  #  #
+dnl                                        1  2  3  4  5  6  7  8  9
+dnl   glibc 2.5                            .  .  .  .  .  .  .  .  .
+dnl   glibc 2.3.6                          .  #  .  .  .  .  .  .  .
+dnl   FreeBSD 5.4, 6.1                     .  ?  .  .  .  .  .  .  .
+dnl   MacOS X 10.3.9                       .  #  .  .  .  .  .  .  .
+dnl   OpenBSD 3.9, 4.0                     .  #  ?  .  .  .  .  .  ?
+dnl   Cygwin 2007                          .  #  #  .  .  .  .  .  .
+dnl   Cygwin 2006                          #  #  #  .  .  .  .  .  .
+dnl   Solaris 10                           .  #  .  .  .  .  .  .  .
+dnl   Solaris 2.6 ... 9                    #  #  #  .  .  .  .  .  .
+dnl   Solaris 2.5.1                        #  #  #  .  .  #  #  #  #
+dnl   AIX 5.2                              .  #  .  .  .  .  .  .  .
+dnl   AIX 4.3.2, 5.1                       #  #  #  .  .  .  .  .  .
+dnl   HP-UX 11.31                          .  #  .  .  .  .  .  #  #
+dnl   HP-UX 10.20, 11.00, 11.11, 11.23     #  #  #  .  .  .  .  #  #
+dnl   IRIX 6.5                             #  #  #  .  .  .  .  #  .
+dnl   OSF/1 5.1                            #  #  #  .  .  .  .  #  .
+dnl   OSF/1 4.0d                           #  #  #  .  .  #  #  #  #
+dnl   NetBSD 4.0                           .  ?  ?  .  .  .  .  .  ?
+dnl   NetBSD 3.0                           .  #  #  .  #  .  .  .  .
+dnl   BeOS                                 #  #  #  .  #  .  .  .  .
+dnl   mingw                                #  #  #  .  #  .  #  #  #