Assume 'long double' exists.
[gnulib.git] / m4 / printf.m4
index 099d956..3ce777c 100644 (file)
@@ -1,4 +1,4 @@
-# printf.m4 serial 2
+# printf.m4 serial 4
 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,13 @@ 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 (result, "0x1.83p+0 33") != 0
+          && strcmp (result, "0x3.05p-1 33") != 0
+          && strcmp (result, "0x6.0ap-2 33") != 0
+          && strcmp (result, "0xc.14p-3 33") != 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 +125,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 +133,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,18 +150,9 @@ 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
-changequote([,])dnl
       ])
     ])
 ])
@@ -270,39 +262,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 +328,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 +386,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
@@ -452,9 +444,9 @@ 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   FreeBSD 5.4, 6.1                     .  ?  .  .  .  .  .  .
 dnl   MacOS X 10.3.9                       .  #  .  .  .  .  .  .
-dnl   OpenBSD 3.9                          .  #  .  .  .  .  .  ?
+dnl   OpenBSD 3.9, 4.0                     .  #  .  .  .  .  .  ?
 dnl   Cygwin 2007                          .  #  .  .  .  .  .  ?
 dnl   Cygwin 2006                          #  #  .  .  .  .  .  ?
 dnl   Solaris 10                           .  #  .  .  .  .  .  .
@@ -466,7 +458,7 @@ 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 4.0                           .  ?  .  .  .  .  .  ?
 dnl   NetBSD 3.0                           .  #  .  #  .  .  .  .
 dnl   BeOS                                 #  #  .  #  .  .  .  .
 dnl   mingw                                #  #  .  #  .  #  #  #