-# printf.m4 serial 21
-dnl Copyright (C) 2003, 2007 Free Software Foundation, Inc.
+# printf.m4 serial 23
+dnl Copyright (C) 2003, 2007-2008 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
])
])
+dnl Test whether the *printf family of functions supports the - flag correctly.
+dnl (ISO C99.) See
+dnl <http://lists.gnu.org/archive/html/bug-coreutils/2008-02/msg00035.html>
+dnl Result is gl_cv_func_printf_flag_leftadjust.
+
+AC_DEFUN([gl_PRINTF_FLAG_LEFTADJUST],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether printf supports the left-adjust flag correctly],
+ [gl_cv_func_printf_flag_leftadjust],
+ [
+ AC_TRY_RUN([
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+int main ()
+{
+ /* Check that a '-' flag is not annihilated by a negative width. */
+ if (sprintf (buf, "a%-*sc", -3, "b") < 0
+ || strcmp (buf, "ab c") != 0)
+ return 1;
+ return 0;
+}],
+ [gl_cv_func_printf_flag_leftadjust=yes],
+ [gl_cv_func_printf_flag_leftadjust=no],
+ [
+changequote(,)dnl
+ case "$host_os" in
+ # Guess yes on HP-UX 11.
+ hpux11*) gl_cv_func_printf_flag_leftadjust="guessing yes";;
+ # Guess no on HP-UX 10 and older.
+ hpux*) gl_cv_func_printf_flag_leftadjust="guessing no";;
+ # Guess yes otherwise.
+ *) gl_cv_func_printf_flag_leftadjust="guessing yes";;
+ esac
+changequote([,])dnl
+ ])
+ ])
+])
+
dnl Test whether the *printf family of functions supports padding of non-finite
dnl values with the 0 flag correctly. (ISO C99 + TC1 + TC2.) See
dnl <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html>
])
])
+dnl Test whether the snprintf function, when passed a size = 1, writes any
+dnl output without bounds in this case, behaving like sprintf. This is the
+dnl case on Linux libc5.
+dnl Result is gl_cv_func_snprintf_size1.
+
+AC_DEFUN([gl_SNPRINTF_SIZE1],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_CACHE_CHECK([whether snprintf respects a size of 1],
+ [gl_cv_func_snprintf_size1],
+ [
+ AC_TRY_RUN([
+#include <stdio.h>
+int main()
+{
+ static char buf[8] = "DEADBEEF";
+ snprintf (buf, 1, "%d", 12345);
+ return buf[1] != 'E';
+}],
+ [gl_cv_func_snprintf_size1=yes],
+ [gl_cv_func_snprintf_size1=no],
+ [gl_cv_func_snprintf_size1="guessing yes"])
+ ])
+])
+
dnl Test whether the vsnprintf function, when passed a zero size, produces no
dnl output. (ISO C99, POSIX:2001)
dnl For example, snprintf nevertheless writes a NUL byte in this case
dnl 7 = gl_PRINTF_DIRECTIVE_N
dnl 8 = gl_PRINTF_POSITIONS
dnl 9 = gl_PRINTF_FLAG_GROUPING
-dnl 10 = gl_PRINTF_FLAG_ZERO
-dnl 11 = gl_PRINTF_PRECISION
-dnl 12 = gl_PRINTF_ENOMEM
-dnl 13 = gl_SNPRINTF_PRESENCE
-dnl 14 = gl_SNPRINTF_TRUNCATION_C99
-dnl 15 = gl_SNPRINTF_RETVAL_C99
-dnl 16 = gl_SNPRINTF_DIRECTIVE_N
-dnl 17 = gl_VSNPRINTF_ZEROSIZE_C99
+dnl 10 = gl_PRINTF_FLAG_LEFTADJUST
+dnl 11 = gl_PRINTF_FLAG_ZERO
+dnl 12 = gl_PRINTF_PRECISION
+dnl 13 = gl_PRINTF_ENOMEM
+dnl 14 = gl_SNPRINTF_PRESENCE
+dnl 15 = gl_SNPRINTF_TRUNCATION_C99
+dnl 16 = gl_SNPRINTF_RETVAL_C99
+dnl 17 = gl_SNPRINTF_DIRECTIVE_N
+dnl 18 = gl_SNPRINTF_SIZE1
+dnl 19 = gl_VSNPRINTF_ZEROSIZE_C99
dnl
dnl 1 = checking whether printf supports size specifiers as in C99...
dnl 2 = checking whether printf supports 'long double' arguments...
dnl 7 = checking whether printf supports the 'n' directive...
dnl 8 = checking whether printf supports POSIX/XSI format strings with positions...
dnl 9 = checking whether printf supports the grouping flag...
-dnl 10 = checking whether printf supports the zero flag correctly...
-dnl 11 = checking whether printf supports large precisions...
-dnl 12 = checking whether printf survives out-of-memory conditions...
-dnl 13 = checking for snprintf...
-dnl 14 = checking whether snprintf truncates the result as in C99...
-dnl 15 = checking whether snprintf returns a byte count as in C99...
-dnl 16 = checking whether snprintf fully supports the 'n' directive...
-dnl 17 = checking whether vsnprintf respects a zero size as in C99...
+dnl 10 = checking whether printf supports the left-adjust flag correctly...
+dnl 11 = checking whether printf supports the zero flag correctly...
+dnl 12 = checking whether printf supports large precisions...
+dnl 13 = checking whether printf survives out-of-memory conditions...
+dnl 14 = checking for snprintf...
+dnl 15 = checking whether snprintf truncates the result as in C99...
+dnl 16 = checking whether snprintf returns a byte count as in C99...
+dnl 17 = checking whether snprintf fully supports the 'n' directive...
+dnl 18 = checking whether snprintf respects a size of 1...
+dnl 19 = checking whether vsnprintf respects a zero size as in C99...
dnl
dnl . = yes, # = no.
dnl
-dnl 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
-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 (= Cygwin 1.5.24) . . . . # # . . . # ? ? . . . . .
-dnl Cygwin 2006 (= Cygwin 1.5.19) # . . . # # . . # # ? ? . . . . .
-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,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 10 11 12 13 14 15 16 17 18 19
+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 (= Cygwin 1.5.24) . . . . # # . . . ? # ? ? . . . . . .
+dnl Cygwin 2006 (= Cygwin 1.5.19) # . . . # # . . # ? # ? ? . . . . . .
+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 11.{00,11,23} # . . . # # . . . . # . . . . # # . #
+dnl HP-UX 10.20 # . . . # # . . . # # . . . . # # ? #
+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 # # # # # # . # # . # # ? . # # # . .