bug-gnulib
[Top][All Lists]
Advanced

[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.  */
  
    {





reply via email to

[Prev in Thread] Current Thread [Next in Thread]