[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: printf failure on HP/UX 10.20 with 6.9.92
From: |
Bruno Haible |
Subject: |
Re: printf failure on HP/UX 10.20 with 6.9.92 |
Date: |
Thu, 7 Feb 2008 02:11:24 +0100 |
User-agent: |
KMail/1.5.4 |
Eric Blake wrote, citing Peter Fales:
> Indeed, that seems like the bug. Bruno, it looks like we need to add
> another test to the printf replacement suite.
>
> |
> | On the system in question, this test program
> |
> | main()
> | {
> | int count;
> |
> | printf("1 %*s%n\n",-3,"x",&count);
> | printf("1 %-*s%n\n",-3,"x",&count);
> | printf("1 %-*s%n\n",3,"x",&count);
> | }
> |
> | prints
> |
> | 1 x
> | 1 x
> | 1 x
I committed this. It should fix it. Please test it, since I don't have access
to a HP-UX 10 machine. To test it, create a test directory through the command
$ ./gnulib-tool --create-testdir --with-tests --dir=/tmp/testdir \
fprintf-posix printf-posix snprintf-posix sprintf-posix vasnprintf-posix \
vasprintf-posix vfprintf-posix vprintf-posix vsnprintf-posix vsprintf-posix
Bruno
2008-02-06 Bruno Haible <address@hidden>
Fix *printf behaviour regarding the left-adjust flag on HP-UX 10.20.
* m4/printf.m4 (gl_PRINTF_FLAG_LEFTADJUST): New macro.
* lib/vasnprintf.c (VASNPRINTF): Handle NEED_PRINTF_FLAG_LEFTADJUST.
* m4/vasnprintf.m4 (gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST): New macro.
(gl_PREREQ_VASNPRINTF_WITH_EXTRAS): Invoke it.
* m4/fprintf-posix.m4 (gl_FUNC_FPRINTF_POSIX): Invoke
gl_PRINTF_FLAG_LEFTADJUST and test its result. Invoke
gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST.
* m4/snprintf-posix.m4 (gl_FUNC_SNPRINTF_POSIX): Likewise.
* m4/sprintf-posix.m4 (gl_FUNC_SPRINTF_POSIX): Likewise.
* m4/vasnprintf-posix.m4 (gl_FUNC_VASNPRINTF_POSIX): Likewise.
* m4/vasprintf-posix.m4 (gl_FUNC_VASPRINTF_POSIX): Likewise.
* m4/vfprintf-posix.m4 (gl_FUNC_VFPRINTF_POSIX): Likewise.
* m4/vsnprintf-posix.m4 (gl_FUNC_VSNPRINTF_POSIX): Likewise.
* m4/vsprintf-posix.m4 (gl_FUNC_VSPRINTF_POSIX): Likewise.
* tests/test-vasnprintf-posix.c (test_function): Add testcases for the
left-adjust flag.
* tests/test-snprintf-posix.h (test_function): Likewise.
* tests/test-sprintf-posix.h (test_function): Likewise.
* tests/test-vasprintf-posix.c (test_function): Likewise.
* doc/functions/fprintf.texi: Update.
* doc/functions/printf.texi: Update.
* doc/functions/snprintf.texi: Update.
* doc/functions/sprintf.texi: Update.
* doc/functions/vfprintf.texi: Update.
* doc/functions/vprintf.texi: Update.
* doc/functions/vsnprintf.texi: Update.
* doc/functions/vsprintf.texi: Update.
Reported by Peter Fales <address@hidden>.
*** doc/posix-functions/fprintf.texi.orig 2008-02-07 02:07:13.000000000
+0100
--- doc/posix-functions/fprintf.texi 2008-02-07 01:57:59.000000000 +0100
***************
*** 34,39 ****
--- 34,43 ----
This function doesn't support the @code{'} flag on some platforms:
NetBSD 3.0, Cygwin 2006, mingw.
@item
+ This function behaves incorrectly when a @samp{-} flag and a negative width
+ are specified together, on some platforms:
+ HP-UX 10.20.
+ @item
printf @code{"%010f"} of NaN and Infinity yields an incorrect result (padded
with zeroes) on some platforms:
MacOS X 10.3, FreeBSD 6.0, NetBSD 3.0, AIX 5.2, IRIX 6.5, OSF/1 5.1, Solaris
10, Cygwin 2007, mingw.
*** doc/posix-functions/printf.texi.orig 2008-02-07 02:07:13.000000000
+0100
--- doc/posix-functions/printf.texi 2008-02-07 01:58:00.000000000 +0100
***************
*** 34,39 ****
--- 34,43 ----
This function doesn't support the @code{'} flag on some platforms:
NetBSD 3.0, Cygwin 2006, mingw.
@item
+ This function behaves incorrectly when a @samp{-} flag and a negative width
+ are specified together, on some platforms:
+ HP-UX 10.20.
+ @item
printf @code{"%010f"} of NaN and Infinity yields an incorrect result (padded
with zeroes) on some platforms:
MacOS X 10.3, FreeBSD 6.0, NetBSD 3.0, AIX 5.2, IRIX 6.5, OSF/1 5.1, Solaris
10, Cygwin 2007, mingw.
*** doc/posix-functions/snprintf.texi.orig 2008-02-07 02:07:13.000000000
+0100
--- doc/posix-functions/snprintf.texi 2008-02-07 01:58:00.000000000 +0100
***************
*** 41,46 ****
--- 41,50 ----
This function doesn't support the @code{'} flag on some platforms:
NetBSD 3.0, Cygwin 2006, mingw.
@item
+ This function behaves incorrectly when a @samp{-} flag and a negative width
+ are specified together, on some platforms:
+ HP-UX 10.20.
+ @item
printf @code{"%010f"} of NaN and Infinity yields an incorrect result (padded
with zeroes) on some platforms:
MacOS X 10.3, FreeBSD 6.0, NetBSD 3.0, AIX 5.2, IRIX 6.5, OSF/1 5.1, Solaris
10, Cygwin 2007, mingw.
*** doc/posix-functions/sprintf.texi.orig 2008-02-07 02:07:13.000000000
+0100
--- doc/posix-functions/sprintf.texi 2008-02-07 01:58:01.000000000 +0100
***************
*** 34,39 ****
--- 34,43 ----
This function doesn't support the @code{'} flag on some platforms:
NetBSD 3.0, Cygwin 2006, mingw.
@item
+ This function behaves incorrectly when a @samp{-} flag and a negative width
+ are specified together, on some platforms:
+ HP-UX 10.20.
+ @item
printf @code{"%010f"} of NaN and Infinity yields an incorrect result (padded
with zeroes) on some platforms:
MacOS X 10.3, FreeBSD 6.0, NetBSD 3.0, AIX 5.2, IRIX 6.5, OSF/1 5.1, Solaris
10, Cygwin 2007, mingw.
*** doc/posix-functions/vfprintf.texi.orig 2008-02-07 02:07:13.000000000
+0100
--- doc/posix-functions/vfprintf.texi 2008-02-07 01:58:02.000000000 +0100
***************
*** 34,39 ****
--- 34,43 ----
This function doesn't support the @code{'} flag on some platforms:
NetBSD 3.0, Cygwin 2006, mingw.
@item
+ This function behaves incorrectly when a @samp{-} flag and a negative width
+ are specified together, on some platforms:
+ HP-UX 10.20.
+ @item
printf @code{"%010f"} of NaN and Infinity yields an incorrect result (padded
with zeroes) on some platforms:
MacOS X 10.3, FreeBSD 6.0, NetBSD 3.0, AIX 5.2, IRIX 6.5, OSF/1 5.1, Solaris
10, Cygwin 2007, mingw.
*** doc/posix-functions/vprintf.texi.orig 2008-02-07 02:07:13.000000000
+0100
--- doc/posix-functions/vprintf.texi 2008-02-07 01:58:03.000000000 +0100
***************
*** 34,39 ****
--- 34,43 ----
This function doesn't support the @code{'} flag on some platforms:
NetBSD 3.0, Cygwin 2006, mingw.
@item
+ This function behaves incorrectly when a @samp{-} flag and a negative width
+ are specified together, on some platforms:
+ HP-UX 10.20.
+ @item
printf @code{"%010f"} of NaN and Infinity yields an incorrect result (padded
with zeroes) on some platforms:
MacOS X 10.3, FreeBSD 6.0, NetBSD 3.0, AIX 5.2, IRIX 6.5, OSF/1 5.1, Solaris
10, Cygwin 2007, mingw.
*** doc/posix-functions/vsnprintf.texi.orig 2008-02-07 02:07:13.000000000
+0100
--- doc/posix-functions/vsnprintf.texi 2008-02-07 01:58:03.000000000 +0100
***************
*** 41,46 ****
--- 41,50 ----
This function doesn't support the @code{'} flag on some platforms:
NetBSD 3.0, Cygwin 2006, mingw.
@item
+ This function behaves incorrectly when a @samp{-} flag and a negative width
+ are specified together, on some platforms:
+ HP-UX 10.20.
+ @item
printf @code{"%010f"} of NaN and Infinity yields an incorrect result (padded
with zeroes) on some platforms:
MacOS X 10.3, FreeBSD 6.0, NetBSD 3.0, AIX 5.2, IRIX 6.5, OSF/1 5.1, Solaris
10, Cygwin 2007, mingw.
*** doc/posix-functions/vsprintf.texi.orig 2008-02-07 02:07:13.000000000
+0100
--- doc/posix-functions/vsprintf.texi 2008-02-07 01:58:04.000000000 +0100
***************
*** 34,39 ****
--- 34,43 ----
This function doesn't support the @code{'} flag on some platforms:
NetBSD 3.0, Cygwin 2006, mingw.
@item
+ This function behaves incorrectly when a @samp{-} flag and a negative width
+ are specified together, on some platforms:
+ HP-UX 10.20.
+ @item
printf @code{"%010f"} of NaN and Infinity yields an incorrect result (padded
with zeroes) on some platforms:
MacOS X 10.3, FreeBSD 6.0, NetBSD 3.0, AIX 5.2, IRIX 6.5, OSF/1 5.1, Solaris
10, Cygwin 2007, mingw.
*** lib/vasnprintf.c.orig 2008-02-07 02:07:13.000000000 +0100
--- lib/vasnprintf.c 2008-02-06 23:59:12.000000000 +0100
***************
*** 3566,3572 ****
{
arg_type type = a.arg[dp->arg_index].type;
int flags = dp->flags;
! #if !USE_SNPRINTF || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO ||
NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
int has_width;
size_t width;
#endif
--- 3566,3572 ----
{
arg_type type = a.arg[dp->arg_index].type;
int flags = dp->flags;
! #if !USE_SNPRINTF || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO ||
NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO ||
NEED_PRINTF_UNBOUNDED_PRECISION
int has_width;
size_t width;
#endif
***************
*** 3579,3585 ****
#else
# define prec_ourselves 0
#endif
! #if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO ||
NEED_PRINTF_UNBOUNDED_PRECISION
int pad_ourselves;
#else
# define pad_ourselves 0
--- 3579,3587 ----
#else
# define prec_ourselves 0
#endif
! #if NEED_PRINTF_FLAG_LEFTADJUST
! # define pad_ourselves 1
! #elif !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO ||
NEED_PRINTF_UNBOUNDED_PRECISION
int pad_ourselves;
#else
# define pad_ourselves 0
***************
*** 3593,3599 ****
TCHAR_T *tmp;
#endif
! #if !USE_SNPRINTF || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO ||
NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
has_width = 0;
width = 0;
if (dp->width_start != dp->width_end)
--- 3595,3601 ----
TCHAR_T *tmp;
#endif
! #if !USE_SNPRINTF || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO ||
NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO ||
NEED_PRINTF_UNBOUNDED_PRECISION
has_width = 0;
width = 0;
if (dp->width_start != dp->width_end)
***************
*** 3883,3889 ****
#endif
/* Decide whether to perform the padding ourselves. */
! #if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO ||
NEED_PRINTF_UNBOUNDED_PRECISION
switch (dp->conversion)
{
# if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO
--- 3885,3891 ----
#endif
/* Decide whether to perform the padding ourselves. */
! #if !NEED_PRINTF_FLAG_LEFTADJUST && (!DCHAR_IS_TCHAR || ENABLE_UNISTDIO ||
NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION)
switch (dp->conversion)
{
# if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO
***************
*** 4494,4500 ****
/* Here count <= allocated - length. */
/* Perform padding. */
! #if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO ||
NEED_PRINTF_UNBOUNDED_PRECISION
if (pad_ourselves && has_width)
{
size_t w;
--- 4496,4502 ----
/* Here count <= allocated - length. */
/* Perform padding. */
! #if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST ||
NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
if (pad_ourselves && has_width)
{
size_t w;
*** m4/fprintf-posix.m4.orig 2008-02-07 02:07:13.000000000 +0100
--- m4/fprintf-posix.m4 2008-02-06 13:08:15.000000000 +0100
***************
*** 1,5 ****
! # fprintf-posix.m4 serial 9
! dnl Copyright (C) 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,
dnl with or without modifications, as long as this notice is preserved.
--- 1,5 ----
! # fprintf-posix.m4 serial 10
! dnl Copyright (C) 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.
***************
*** 16,21 ****
--- 16,22 ----
AC_REQUIRE([gl_PRINTF_DIRECTIVE_N])
AC_REQUIRE([gl_PRINTF_POSITIONS])
AC_REQUIRE([gl_PRINTF_FLAG_GROUPING])
+ AC_REQUIRE([gl_PRINTF_FLAG_LEFTADJUST])
AC_REQUIRE([gl_PRINTF_FLAG_ZERO])
AC_REQUIRE([gl_PRINTF_PRECISION])
AC_REQUIRE([gl_PRINTF_ENOMEM])
***************
*** 38,52 ****
*yes)
case "$gl_cv_func_printf_flag_grouping" in
*yes)
! case "$gl_cv_func_printf_flag_zero" in
*yes)
! case "$gl_cv_func_printf_precision"
in
*yes)
! case
"$gl_cv_func_printf_enomem" in
*yes)
! # fprintf exists and is
! # already POSIX compliant.
! gl_cv_func_fprintf_posix=yes
;;
esac
;;
--- 39,57 ----
*yes)
case "$gl_cv_func_printf_flag_grouping" in
*yes)
! case
"$gl_cv_func_printf_flag_leftadjust" in
*yes)
! case "$gl_cv_func_printf_flag_zero"
in
*yes)
! case
"$gl_cv_func_printf_precision" in
*yes)
! case
"$gl_cv_func_printf_enomem" in
! *yes)
! # fprintf exists and is
! # already POSIX
compliant.
!
gl_cv_func_fprintf_posix=yes
! ;;
! esac
;;
esac
;;
***************
*** 78,83 ****
--- 83,89 ----
gl_PREREQ_VASNPRINTF_DIRECTIVE_A
gl_PREREQ_VASNPRINTF_DIRECTIVE_F
gl_PREREQ_VASNPRINTF_FLAG_GROUPING
+ gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST
gl_PREREQ_VASNPRINTF_FLAG_ZERO
gl_PREREQ_VASNPRINTF_PRECISION
gl_PREREQ_VASNPRINTF_ENOMEM
*** m4/printf.m4.orig 2008-02-07 02:07:13.000000000 +0100
--- m4/printf.m4 2008-02-07 01:38:48.000000000 +0100
***************
*** 1,5 ****
! # printf.m4 serial 21
! 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,
dnl with or without modifications, as long as this notice is preserved.
--- 1,5 ----
! # printf.m4 serial 22
! 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.
***************
*** 684,689 ****
--- 684,730 ----
])
])
+ 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>
***************
*** 1185,1198 ****
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
dnl 1 = checking whether printf supports size specifiers as in C99...
dnl 2 = checking whether printf supports 'long double' arguments...
--- 1226,1240 ----
dnl 7 = gl_PRINTF_DIRECTIVE_N
dnl 8 = gl_PRINTF_POSITIONS
dnl 9 = gl_PRINTF_FLAG_GROUPING
! 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_VSNPRINTF_ZEROSIZE_C99
dnl
dnl 1 = checking whether printf supports size specifiers as in C99...
dnl 2 = checking whether printf supports 'long double' arguments...
***************
*** 1203,1238 ****
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
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 # # # # # # . # # # # ? . #
# # .
--- 1245,1282 ----
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 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 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 18
! 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 # # # # # # . # # . # # ? .
# # # .
*** m4/snprintf-posix.m4.orig 2008-02-07 02:07:13.000000000 +0100
--- m4/snprintf-posix.m4 2008-02-06 13:08:15.000000000 +0100
***************
*** 1,5 ****
! # snprintf-posix.m4 serial 10
! dnl Copyright (C) 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,
dnl with or without modifications, as long as this notice is preserved.
--- 1,5 ----
! # snprintf-posix.m4 serial 11
! dnl Copyright (C) 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.
***************
*** 16,21 ****
--- 16,22 ----
AC_REQUIRE([gl_PRINTF_DIRECTIVE_N])
AC_REQUIRE([gl_PRINTF_POSITIONS])
AC_REQUIRE([gl_PRINTF_FLAG_GROUPING])
+ AC_REQUIRE([gl_PRINTF_FLAG_LEFTADJUST])
AC_REQUIRE([gl_PRINTF_FLAG_ZERO])
AC_REQUIRE([gl_PRINTF_PRECISION])
AC_REQUIRE([gl_PRINTF_ENOMEM])
***************
*** 44,66 ****
*yes)
case "$gl_cv_func_printf_flag_grouping" in
*yes)
! case "$gl_cv_func_printf_flag_zero" in
*yes)
! case
"$gl_cv_func_printf_precision" in
*yes)
! case
"$gl_cv_func_printf_enomem" in
*yes)
! case
"$gl_cv_func_snprintf_truncation_c99" in
*yes)
! case
"$gl_cv_func_snprintf_retval_c99" in
*yes)
! case
"$gl_cv_func_snprintf_directive_n" in
*yes)
! case
"$gl_cv_func_vsnprintf_zerosize_c99" in
*yes)
! #
snprintf exists and is
! # already
POSIX compliant.
!
gl_cv_func_snprintf_posix=yes
;;
esac
;;
--- 45,71 ----
*yes)
case "$gl_cv_func_printf_flag_grouping" in
*yes)
! case
"$gl_cv_func_printf_flag_leftadjust" in
*yes)
! case
"$gl_cv_func_printf_flag_zero" in
*yes)
! case
"$gl_cv_func_printf_precision" in
*yes)
! case
"$gl_cv_func_printf_enomem" in
*yes)
! case
"$gl_cv_func_snprintf_truncation_c99" in
*yes)
! case
"$gl_cv_func_snprintf_retval_c99" in
*yes)
! case
"$gl_cv_func_snprintf_directive_n" in
*yes)
! case
"$gl_cv_func_vsnprintf_zerosize_c99" in
! *yes)
! #
snprintf exists and is
! #
already POSIX compliant.
!
gl_cv_func_snprintf_posix=yes
! ;;
! esac
;;
esac
;;
***************
*** 101,106 ****
--- 106,112 ----
gl_PREREQ_VASNPRINTF_DIRECTIVE_A
gl_PREREQ_VASNPRINTF_DIRECTIVE_F
gl_PREREQ_VASNPRINTF_FLAG_GROUPING
+ gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST
gl_PREREQ_VASNPRINTF_FLAG_ZERO
gl_PREREQ_VASNPRINTF_PRECISION
gl_PREREQ_VASNPRINTF_ENOMEM
*** m4/sprintf-posix.m4.orig 2008-02-07 02:07:13.000000000 +0100
--- m4/sprintf-posix.m4 2008-02-06 13:08:16.000000000 +0100
***************
*** 1,5 ****
! # sprintf-posix.m4 serial 9
! dnl Copyright (C) 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,
dnl with or without modifications, as long as this notice is preserved.
--- 1,5 ----
! # sprintf-posix.m4 serial 10
! dnl Copyright (C) 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.
***************
*** 16,21 ****
--- 16,22 ----
AC_REQUIRE([gl_PRINTF_DIRECTIVE_N])
AC_REQUIRE([gl_PRINTF_POSITIONS])
AC_REQUIRE([gl_PRINTF_FLAG_GROUPING])
+ AC_REQUIRE([gl_PRINTF_FLAG_LEFTADJUST])
AC_REQUIRE([gl_PRINTF_FLAG_ZERO])
AC_REQUIRE([gl_PRINTF_PRECISION])
AC_REQUIRE([gl_PRINTF_ENOMEM])
***************
*** 38,52 ****
*yes)
case "$gl_cv_func_printf_flag_grouping" in
*yes)
! case "$gl_cv_func_printf_flag_zero" in
*yes)
! case "$gl_cv_func_printf_precision"
in
*yes)
! case
"$gl_cv_func_printf_enomem" in
*yes)
! # sprintf exists and is
! # already POSIX compliant.
! gl_cv_func_sprintf_posix=yes
;;
esac
;;
--- 39,57 ----
*yes)
case "$gl_cv_func_printf_flag_grouping" in
*yes)
! case
"$gl_cv_func_printf_flag_leftadjust" in
*yes)
! case "$gl_cv_func_printf_flag_zero"
in
*yes)
! case
"$gl_cv_func_printf_precision" in
*yes)
! case
"$gl_cv_func_printf_enomem" in
! *yes)
! # sprintf exists and is
! # already POSIX
compliant.
!
gl_cv_func_sprintf_posix=yes
! ;;
! esac
;;
esac
;;
***************
*** 78,83 ****
--- 83,89 ----
gl_PREREQ_VASNPRINTF_DIRECTIVE_A
gl_PREREQ_VASNPRINTF_DIRECTIVE_F
gl_PREREQ_VASNPRINTF_FLAG_GROUPING
+ gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST
gl_PREREQ_VASNPRINTF_FLAG_ZERO
gl_PREREQ_VASNPRINTF_PRECISION
gl_PREREQ_VASNPRINTF_ENOMEM
*** m4/vasnprintf-posix.m4.orig 2008-02-07 02:07:13.000000000 +0100
--- m4/vasnprintf-posix.m4 2008-02-06 13:08:17.000000000 +0100
***************
*** 1,5 ****
! # vasnprintf-posix.m4 serial 10
! dnl Copyright (C) 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,
dnl with or without modifications, as long as this notice is preserved.
--- 1,5 ----
! # vasnprintf-posix.m4 serial 11
! dnl Copyright (C) 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.
***************
*** 16,21 ****
--- 16,22 ----
AC_REQUIRE([gl_PRINTF_DIRECTIVE_N])
AC_REQUIRE([gl_PRINTF_POSITIONS])
AC_REQUIRE([gl_PRINTF_FLAG_GROUPING])
+ AC_REQUIRE([gl_PRINTF_FLAG_LEFTADJUST])
AC_REQUIRE([gl_PRINTF_FLAG_ZERO])
AC_REQUIRE([gl_PRINTF_PRECISION])
AC_REQUIRE([gl_PRINTF_ENOMEM])
***************
*** 39,55 ****
*yes)
case "$gl_cv_func_printf_flag_grouping" in
*yes)
! case "$gl_cv_func_printf_flag_zero" in
*yes)
! case "$gl_cv_func_printf_precision"
in
*yes)
! case
"$gl_cv_func_printf_enomem" in
*yes)
! if test
$ac_cv_func_vasnprintf = yes; then
! # vasnprintf exists and is
! # already POSIX compliant.
!
gl_cv_func_vasnprintf_posix=yes
! fi
;;
esac
;;
--- 40,60 ----
*yes)
case "$gl_cv_func_printf_flag_grouping" in
*yes)
! case
"$gl_cv_func_printf_flag_leftadjust" in
*yes)
! case "$gl_cv_func_printf_flag_zero"
in
*yes)
! case
"$gl_cv_func_printf_precision" in
*yes)
! case
"$gl_cv_func_printf_enomem" in
! *yes)
! if test
$ac_cv_func_vasnprintf = yes; then
! # vasnprintf exists
and is
! # already POSIX
compliant.
!
gl_cv_func_vasnprintf_posix=yes
! fi
! ;;
! esac
;;
esac
;;
***************
*** 81,86 ****
--- 86,92 ----
gl_PREREQ_VASNPRINTF_DIRECTIVE_A
gl_PREREQ_VASNPRINTF_DIRECTIVE_F
gl_PREREQ_VASNPRINTF_FLAG_GROUPING
+ gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST
gl_PREREQ_VASNPRINTF_FLAG_ZERO
gl_PREREQ_VASNPRINTF_PRECISION
gl_PREREQ_VASNPRINTF_ENOMEM
*** m4/vasnprintf.m4.orig 2008-02-07 02:07:13.000000000 +0100
--- m4/vasnprintf.m4 2008-02-07 02:07:11.000000000 +0100
***************
*** 1,5 ****
! # vasnprintf.m4 serial 23
! dnl Copyright (C) 2002-2004, 2006-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,
dnl with or without modifications, as long as this notice is preserved.
--- 1,5 ----
! # vasnprintf.m4 serial 24
! dnl Copyright (C) 2002-2004, 2006-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.
***************
*** 166,171 ****
--- 166,186 ----
esac
])
+ # Extra prerequisites of lib/vasnprintf.c for supporting the '-' flag.
+ AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST],
+ [
+ AC_REQUIRE([gl_PRINTF_FLAG_LEFTADJUST])
+ case "$gl_cv_func_printf_flag_leftadjust" in
+ *yes)
+ ;;
+ *)
+ AC_DEFINE([NEED_PRINTF_FLAG_LEFTADJUST], 1,
+ [Define if the vasnprintf implementation needs special code for the
+ '-' flag.])
+ ;;
+ esac
+ ])
+
# Extra prerequisites of lib/vasnprintf.c for supporting the 0 flag.
AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_ZERO],
[
***************
*** 234,239 ****
--- 249,255 ----
gl_PREREQ_VASNPRINTF_DIRECTIVE_A
gl_PREREQ_VASNPRINTF_DIRECTIVE_F
gl_PREREQ_VASNPRINTF_FLAG_GROUPING
+ gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST
gl_PREREQ_VASNPRINTF_FLAG_ZERO
gl_PREREQ_VASNPRINTF_PRECISION
gl_PREREQ_VASNPRINTF_ENOMEM
*** m4/vasprintf-posix.m4.orig 2008-02-07 02:07:13.000000000 +0100
--- m4/vasprintf-posix.m4 2008-02-06 13:08:18.000000000 +0100
***************
*** 1,5 ****
! # vasprintf-posix.m4 serial 10
! dnl Copyright (C) 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,
dnl with or without modifications, as long as this notice is preserved.
--- 1,5 ----
! # vasprintf-posix.m4 serial 11
! dnl Copyright (C) 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.
***************
*** 16,21 ****
--- 16,22 ----
AC_REQUIRE([gl_PRINTF_DIRECTIVE_N])
AC_REQUIRE([gl_PRINTF_POSITIONS])
AC_REQUIRE([gl_PRINTF_FLAG_GROUPING])
+ AC_REQUIRE([gl_PRINTF_FLAG_LEFTADJUST])
AC_REQUIRE([gl_PRINTF_FLAG_ZERO])
AC_REQUIRE([gl_PRINTF_PRECISION])
AC_REQUIRE([gl_PRINTF_ENOMEM])
***************
*** 39,55 ****
*yes)
case "$gl_cv_func_printf_flag_grouping" in
*yes)
! case "$gl_cv_func_printf_flag_zero" in
*yes)
! case "$gl_cv_func_printf_precision"
in
*yes)
! case
"$gl_cv_func_printf_enomem" in
*yes)
! if test
$ac_cv_func_vasprintf = yes; then
! # vasprintf exists and is
! # already POSIX compliant.
!
gl_cv_func_vasprintf_posix=yes
! fi
;;
esac
;;
--- 40,60 ----
*yes)
case "$gl_cv_func_printf_flag_grouping" in
*yes)
! case
"$gl_cv_func_printf_flag_leftadjust" in
*yes)
! case "$gl_cv_func_printf_flag_zero"
in
*yes)
! case
"$gl_cv_func_printf_precision" in
*yes)
! case
"$gl_cv_func_printf_enomem" in
! *yes)
! if test
$ac_cv_func_vasprintf = yes; then
! # vasprintf exists
and is
! # already POSIX
compliant.
!
gl_cv_func_vasprintf_posix=yes
! fi
! ;;
! esac
;;
esac
;;
***************
*** 81,86 ****
--- 86,92 ----
gl_PREREQ_VASNPRINTF_DIRECTIVE_A
gl_PREREQ_VASNPRINTF_DIRECTIVE_F
gl_PREREQ_VASNPRINTF_FLAG_GROUPING
+ gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST
gl_PREREQ_VASNPRINTF_FLAG_ZERO
gl_PREREQ_VASNPRINTF_PRECISION
gl_PREREQ_VASNPRINTF_ENOMEM
*** m4/vfprintf-posix.m4.orig 2008-02-07 02:07:13.000000000 +0100
--- m4/vfprintf-posix.m4 2008-02-06 13:08:19.000000000 +0100
***************
*** 1,5 ****
! # vfprintf-posix.m4 serial 9
! dnl Copyright (C) 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,
dnl with or without modifications, as long as this notice is preserved.
--- 1,5 ----
! # vfprintf-posix.m4 serial 10
! dnl Copyright (C) 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.
***************
*** 16,21 ****
--- 16,22 ----
AC_REQUIRE([gl_PRINTF_DIRECTIVE_N])
AC_REQUIRE([gl_PRINTF_POSITIONS])
AC_REQUIRE([gl_PRINTF_FLAG_GROUPING])
+ AC_REQUIRE([gl_PRINTF_FLAG_LEFTADJUST])
AC_REQUIRE([gl_PRINTF_FLAG_ZERO])
AC_REQUIRE([gl_PRINTF_PRECISION])
AC_REQUIRE([gl_PRINTF_ENOMEM])
***************
*** 38,52 ****
*yes)
case "$gl_cv_func_printf_flag_grouping" in
*yes)
! case "$gl_cv_func_printf_flag_zero" in
*yes)
! case "$gl_cv_func_printf_precision"
in
*yes)
! case
"$gl_cv_func_printf_enomem" in
*yes)
! # vfprintf exists and is
! # already POSIX compliant.
!
gl_cv_func_vfprintf_posix=yes
;;
esac
;;
--- 39,57 ----
*yes)
case "$gl_cv_func_printf_flag_grouping" in
*yes)
! case
"$gl_cv_func_printf_flag_leftadjust" in
*yes)
! case "$gl_cv_func_printf_flag_zero"
in
*yes)
! case
"$gl_cv_func_printf_precision" in
*yes)
! case
"$gl_cv_func_printf_enomem" in
! *yes)
! # vfprintf exists and is
! # already POSIX
compliant.
!
gl_cv_func_vfprintf_posix=yes
! ;;
! esac
;;
esac
;;
***************
*** 78,83 ****
--- 83,89 ----
gl_PREREQ_VASNPRINTF_DIRECTIVE_A
gl_PREREQ_VASNPRINTF_DIRECTIVE_F
gl_PREREQ_VASNPRINTF_FLAG_GROUPING
+ gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST
gl_PREREQ_VASNPRINTF_FLAG_ZERO
gl_PREREQ_VASNPRINTF_PRECISION
gl_PREREQ_VASNPRINTF_ENOMEM
*** m4/vsnprintf-posix.m4.orig 2008-02-07 02:07:13.000000000 +0100
--- m4/vsnprintf-posix.m4 2008-02-06 13:08:20.000000000 +0100
***************
*** 1,5 ****
! # vsnprintf-posix.m4 serial 10
! dnl Copyright (C) 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,
dnl with or without modifications, as long as this notice is preserved.
--- 1,5 ----
! # vsnprintf-posix.m4 serial 11
! dnl Copyright (C) 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.
***************
*** 16,21 ****
--- 16,22 ----
AC_REQUIRE([gl_PRINTF_DIRECTIVE_N])
AC_REQUIRE([gl_PRINTF_POSITIONS])
AC_REQUIRE([gl_PRINTF_FLAG_GROUPING])
+ AC_REQUIRE([gl_PRINTF_FLAG_LEFTADJUST])
AC_REQUIRE([gl_PRINTF_FLAG_ZERO])
AC_REQUIRE([gl_PRINTF_PRECISION])
AC_REQUIRE([gl_PRINTF_ENOMEM])
***************
*** 45,67 ****
*yes)
case "$gl_cv_func_printf_flag_grouping" in
*yes)
! case "$gl_cv_func_printf_flag_zero" in
*yes)
! case
"$gl_cv_func_printf_precision" in
*yes)
! case
"$gl_cv_func_printf_enomem" in
*yes)
! case
"$gl_cv_func_snprintf_truncation_c99" in
*yes)
! case
"$gl_cv_func_snprintf_retval_c99" in
*yes)
! case
"$gl_cv_func_snprintf_directive_n" in
*yes)
! case
"$gl_cv_func_vsnprintf_zerosize_c99" in
*yes)
! #
vsnprintf exists and is
! # already
POSIX compliant.
!
gl_cv_func_vsnprintf_posix=yes
;;
esac
;;
--- 46,72 ----
*yes)
case "$gl_cv_func_printf_flag_grouping" in
*yes)
! case
"$gl_cv_func_printf_flag_leftadjust" in
*yes)
! case
"$gl_cv_func_printf_flag_zero" in
*yes)
! case
"$gl_cv_func_printf_precision" in
*yes)
! case
"$gl_cv_func_printf_enomem" in
*yes)
! case
"$gl_cv_func_snprintf_truncation_c99" in
*yes)
! case
"$gl_cv_func_snprintf_retval_c99" in
*yes)
! case
"$gl_cv_func_snprintf_directive_n" in
*yes)
! case
"$gl_cv_func_vsnprintf_zerosize_c99" in
! *yes)
! #
vsnprintf exists and is
! #
already POSIX compliant.
!
gl_cv_func_vsnprintf_posix=yes
! ;;
! esac
;;
esac
;;
***************
*** 102,107 ****
--- 107,113 ----
gl_PREREQ_VASNPRINTF_DIRECTIVE_A
gl_PREREQ_VASNPRINTF_DIRECTIVE_F
gl_PREREQ_VASNPRINTF_FLAG_GROUPING
+ gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST
gl_PREREQ_VASNPRINTF_FLAG_ZERO
gl_PREREQ_VASNPRINTF_PRECISION
gl_PREREQ_VASNPRINTF_ENOMEM
*** m4/vsprintf-posix.m4.orig 2008-02-07 02:07:13.000000000 +0100
--- m4/vsprintf-posix.m4 2008-02-06 13:08:21.000000000 +0100
***************
*** 1,5 ****
! # vsprintf-posix.m4 serial 9
! dnl Copyright (C) 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,
dnl with or without modifications, as long as this notice is preserved.
--- 1,5 ----
! # vsprintf-posix.m4 serial 10
! dnl Copyright (C) 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.
***************
*** 16,21 ****
--- 16,22 ----
AC_REQUIRE([gl_PRINTF_DIRECTIVE_N])
AC_REQUIRE([gl_PRINTF_POSITIONS])
AC_REQUIRE([gl_PRINTF_FLAG_GROUPING])
+ AC_REQUIRE([gl_PRINTF_FLAG_LEFTADJUST])
AC_REQUIRE([gl_PRINTF_FLAG_ZERO])
AC_REQUIRE([gl_PRINTF_PRECISION])
AC_REQUIRE([gl_PRINTF_ENOMEM])
***************
*** 38,52 ****
*yes)
case "$gl_cv_func_printf_flag_grouping" in
*yes)
! case "$gl_cv_func_printf_flag_zero" in
*yes)
! case "$gl_cv_func_printf_precision"
in
*yes)
! case
"$gl_cv_func_printf_enomem" in
*yes)
! # vsprintf exists and is
! # already POSIX compliant.
!
gl_cv_func_vsprintf_posix=yes
;;
esac
;;
--- 39,57 ----
*yes)
case "$gl_cv_func_printf_flag_grouping" in
*yes)
! case
"$gl_cv_func_printf_flag_leftadjust" in
*yes)
! case "$gl_cv_func_printf_flag_zero"
in
*yes)
! case
"$gl_cv_func_printf_precision" in
*yes)
! case
"$gl_cv_func_printf_enomem" in
! *yes)
! # vsprintf exists and is
! # already POSIX
compliant.
!
gl_cv_func_vsprintf_posix=yes
! ;;
! esac
;;
esac
;;
***************
*** 78,83 ****
--- 83,89 ----
gl_PREREQ_VASNPRINTF_DIRECTIVE_A
gl_PREREQ_VASNPRINTF_DIRECTIVE_F
gl_PREREQ_VASNPRINTF_FLAG_GROUPING
+ gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST
gl_PREREQ_VASNPRINTF_FLAG_ZERO
gl_PREREQ_VASNPRINTF_PRECISION
gl_PREREQ_VASNPRINTF_ENOMEM
*** tests/test-snprintf-posix.h.orig 2008-02-07 02:07:13.000000000 +0100
--- tests/test-snprintf-posix.h 2008-02-07 00:13:58.000000000 +0100
***************
*** 1,5 ****
/* Test of POSIX compatible vsnprintf() and snprintf() functions.
! Copyright (C) 2007 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
--- 1,5 ----
/* Test of POSIX compatible vsnprintf() and snprintf() functions.
! Copyright (C) 2007-2008 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
***************
*** 2786,2791 ****
--- 2786,2817 ----
ASSERT (retval == strlen (result));
}
+ /* Test the support of the left-adjust flag. */
+
+ {
+ char result[100];
+ int retval =
+ my_snprintf (result, sizeof (result), "a%*sc", -3, "b");
+ ASSERT (strcmp (result, "ab c") == 0);
+ ASSERT (retval == strlen (result));
+ }
+
+ {
+ char result[100];
+ int retval =
+ my_snprintf (result, sizeof (result), "a%-*sc", 3, "b");
+ ASSERT (strcmp (result, "ab c") == 0);
+ ASSERT (retval == strlen (result));
+ }
+
+ {
+ char result[100];
+ int retval =
+ my_snprintf (result, sizeof (result), "a%-*sc", -3, "b");
+ ASSERT (strcmp (result, "ab c") == 0);
+ ASSERT (retval == strlen (result));
+ }
+
/* Test the support of large precision. */
{
*** tests/test-sprintf-posix.h.orig 2008-02-07 02:07:13.000000000 +0100
--- tests/test-sprintf-posix.h 2008-02-07 00:15:37.000000000 +0100
***************
*** 1,5 ****
/* Test of POSIX compatible vsprintf() and sprintf() functions.
! Copyright (C) 2007 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
--- 1,5 ----
/* Test of POSIX compatible vsprintf() and sprintf() functions.
! Copyright (C) 2007-2008 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
***************
*** 2760,2765 ****
--- 2760,2791 ----
ASSERT (retval == strlen (result));
}
+ /* Test the support of the left-adjust flag. */
+
+ {
+ char result[1000];
+ int retval =
+ my_sprintf (result, "a%*sc", -3, "b");
+ ASSERT (strcmp (result, "ab c") == 0);
+ ASSERT (retval == strlen (result));
+ }
+
+ {
+ char result[1000];
+ int retval =
+ my_sprintf (result, "a%-*sc", 3, "b");
+ ASSERT (strcmp (result, "ab c") == 0);
+ ASSERT (retval == strlen (result));
+ }
+
+ {
+ char result[1000];
+ int retval =
+ my_sprintf (result, "a%-*sc", -3, "b");
+ ASSERT (strcmp (result, "ab c") == 0);
+ ASSERT (retval == strlen (result));
+ }
+
/* Test the support of large precision. */
{
*** tests/test-vasnprintf-posix.c.orig 2008-02-07 02:07:13.000000000 +0100
--- tests/test-vasnprintf-posix.c 2008-02-07 00:08:30.000000000 +0100
***************
*** 1,5 ****
/* Test of POSIX compatible vasnprintf() and asnprintf() functions.
! Copyright (C) 2007 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
--- 1,5 ----
/* Test of POSIX compatible vasnprintf() and asnprintf() functions.
! Copyright (C) 2007-2008 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
***************
*** 3253,3258 ****
--- 3253,3290 ----
free (result);
}
+ /* Test the support of the left-adjust flag. */
+
+ {
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "a%*sc", -3, "b");
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "ab c") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+
+ {
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "a%-*sc", 3, "b");
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "ab c") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+
+ {
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "a%-*sc", -3, "b");
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "ab c") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+
/* Test the support of large precision. */
{
*** tests/test-vasprintf-posix.c.orig 2008-02-07 02:07:13.000000000 +0100
--- tests/test-vasprintf-posix.c 2008-02-07 00:10:51.000000000 +0100
***************
*** 1,5 ****
/* Test of POSIX compatible vasprintf() and asprintf() functions.
! Copyright (C) 2007 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
--- 1,5 ----
/* Test of POSIX compatible vasprintf() and asprintf() functions.
! Copyright (C) 2007-2008 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
***************
*** 3234,3239 ****
--- 3234,3271 ----
free (result);
}
+ /* Test the support of the left-adjust flag. */
+
+ {
+ char *result;
+ int retval =
+ my_asprintf (&result, "a%*sc", -3, "b");
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "ab c") == 0);
+ ASSERT (retval == strlen (result));
+ free (result);
+ }
+
+ {
+ char *result;
+ int retval =
+ my_asprintf (&result, "a%-*sc", 3, "b");
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "ab c") == 0);
+ ASSERT (retval == strlen (result));
+ free (result);
+ }
+
+ {
+ char *result;
+ int retval =
+ my_asprintf (&result, "a%-*sc", -3, "b");
+ ASSERT (result != NULL);
+ ASSERT (strcmp (result, "ab c") == 0);
+ ASSERT (retval == strlen (result));
+ free (result);
+ }
+
/* Test the support of large precision. */
{