-# 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,
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],
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
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],
&& 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
&& 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
&& 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>
[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
])
])
])
[
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
dnl Test whether the return value of the snprintf function is the number
dnl of bytes (excluding the terminating NUL) that would have been produced
dnl if the buffer had been large enough. (ISO C99, POSIX:2001)
-dnl Result is gl_cv_func_printf_retval_c99.
+dnl Result is gl_cv_func_snprintf_retval_c99.
AC_DEFUN([gl_SNPRINTF_RETVAL_C99],
[
AC_REQUIRE([AC_PROG_CC])
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
AC_CACHE_CHECK([whether snprintf returns a byte count as in C99],
- [gl_cv_func_printf_retval_c99],
+ [gl_cv_func_snprintf_retval_c99],
[
AC_TRY_RUN([
#include <stdio.h>
if (snprintf (buf, 3, "%d %d", 4567, 89) != 7)
return 1;
return 0;
-}], [gl_cv_func_printf_retval_c99=yes], [gl_cv_func_printf_retval_c99=no],
+}], [gl_cv_func_snprintf_retval_c99=yes], [gl_cv_func_snprintf_retval_c99=no],
[
changequote(,)dnl
case "$host_os" in
- dnl Guess yes on glibc systems.
- *-gnu*) gl_cv_func_printf_retval_c99="guessing yes";;
- dnl Guess yes on FreeBSD >= 5.
- freebsd[1-4]*) gl_cv_func_printf_retval_c99="guessing no";;
- freebsd* | kfreebsd*) gl_cv_func_printf_retval_c99="guessing yes";;
- dnl Guess yes on MacOS X >= 10.3.
- darwin[1-6].*) gl_cv_func_printf_retval_c99="guessing no";;
- darwin*) gl_cv_func_printf_retval_c99="guessing yes";;
- dnl Guess yes on OpenBSD >= 3.9.
+ # Guess yes on glibc systems.
+ *-gnu*) gl_cv_func_snprintf_retval_c99="guessing yes";;
+ # 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";;
+ # 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";;
+ # Guess yes on OpenBSD >= 3.9.
openbsd[1-2].* | openbsd3.[0-8] | openbsd3.[0-8].*)
- gl_cv_func_printf_retval_c99="guessing no";;
- openbsd*) gl_cv_func_printf_retval_c99="guessing yes";;
- dnl Guess yes on Solaris >= 2.6.
- solaris2.[0-5]*) gl_cv_func_printf_retval_c99="guessing no";;
- solaris*) gl_cv_func_printf_retval_c99="guessing yes";;
- dnl Guess yes on AIX >= 4.
- aix[1-3]*) gl_cv_func_printf_retval_c99="guessing no";;
- aix*) gl_cv_func_printf_retval_c99="guessing yes";;
- dnl Guess yes on NetBSD >= 3.
+ gl_cv_func_snprintf_retval_c99="guessing no";;
+ openbsd*) gl_cv_func_snprintf_retval_c99="guessing yes";;
+ # 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";;
+ # 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";;
+ # Guess yes on NetBSD >= 3.
netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*)
- gl_cv_func_printf_retval_c99="guessing no";;
- netbsd*) gl_cv_func_printf_retval_c99="guessing yes";;
- dnl Guess yes on BeOS.
- beos*) gl_cv_func_printf_retval_c99="guessing yes";;
- dnl If we don't know, assume the worst.
- *) gl_cv_func_printf_retval_c99="guessing no";;
+ gl_cv_func_snprintf_retval_c99="guessing no";;
+ netbsd*) gl_cv_func_snprintf_retval_c99="guessing yes";;
+ # Guess yes on BeOS.
+ beos*) gl_cv_func_snprintf_retval_c99="guessing yes";;
+ # If we don't know, assume the worst.
+ *) gl_cv_func_snprintf_retval_c99="guessing no";;
esac
changequote([,])dnl
])
[
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
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 . # . . . . . .
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 # # . # . # # #