bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: another platform *printf bug


From: Bruno Haible
Subject: Re: another platform *printf bug
Date: Thu, 12 Apr 2007 01:48:06 +0200
User-agent: KMail/1.5.4

Eric Blake wrote:
> Up till today, newlib has this bug:
> 
> $ printf %.f 1234
> 1234
> $ printf %.F 1234
> 1F+03
> 
> basically, it is treating %F like %e, with rather comical results.  This bug 
> bites cygwin 1.5.x (but not 1.7.0).  And printf-posix and friends currently 
> do 
> not test for it.

Can you please test this patch? Already in CVS without testing; I rely on you.

Bruno

2007-04-11  Bruno Haible  <address@hidden>

        * lib/vasnprintf.c (VASNPRINTF): Implement the %F directive using the
        %f directive, if NEED_PRINTF_DIRECTIVE_F is defined.
        * m4/printf.m4 (gl_PRINTF_DIRECTIVE_F): New macro.
        * m4/vasnprintf.m4 (gl_PREREQ_VASNPRINTF_DIRECTIVE_F): New macro.
        * m4/fprintf-posix.m4 (gl_FUNC_FPRINTF_POSIX): Invoke
        gl_PRINTF_DIRECTIVE_F. Test gl_cv_func_printf_directive_f. Invoke
        gl_PREREQ_VASNPRINTF_DIRECTIVE_F for the replacement.
        * m4/snprintf-posix.m4 (gl_FUNC_SNPRINTF_POSIX): Invoke
        gl_PRINTF_DIRECTIVE_F. Test gl_cv_func_printf_directive_f. Invoke
        gl_PREREQ_VASNPRINTF_DIRECTIVE_F for the replacement.
        * m4/sprintf-posix.m4 (gl_FUNC_SPRINTF_POSIX): Invoke
        gl_PRINTF_DIRECTIVE_F. Test gl_cv_func_printf_directive_f. Invoke
        gl_PREREQ_VASNPRINTF_DIRECTIVE_F for the replacement.
        * m4/vasnprintf-posix.m4 (gl_FUNC_VASNPRINTF_POSIX): Invoke
        gl_PRINTF_DIRECTIVE_F. Test gl_cv_func_printf_directive_f. Invoke
        gl_PREREQ_VASNPRINTF_DIRECTIVE_F for the replacement.
        * m4/vasprintf-posix.m4 (gl_FUNC_VASPRINTF_POSIX): Invoke
        gl_PRINTF_DIRECTIVE_F. Test gl_cv_func_printf_directive_f. Invoke
        gl_PREREQ_VASNPRINTF_DIRECTIVE_F for the replacement.
        * m4/vfprintf-posix.m4 (gl_FUNC_VFPRINTF_POSIX): Invoke
        gl_PRINTF_DIRECTIVE_F. Test gl_cv_func_printf_directive_f. Invoke
        gl_PREREQ_VASNPRINTF_DIRECTIVE_F for the replacement.
        * m4/vsnprintf-posix.m4 (gl_FUNC_VSNPRINTF_POSIX): Invoke
        gl_PRINTF_DIRECTIVE_F. Test gl_cv_func_printf_directive_f. Invoke
        gl_PREREQ_VASNPRINTF_DIRECTIVE_F for the replacement.
        * m4/vsprintf-posix.m4 (gl_FUNC_VSPRINTF_POSIX): Invoke
        gl_PRINTF_DIRECTIVE_F. Test gl_cv_func_printf_directive_f. Invoke
        gl_PREREQ_VASNPRINTF_DIRECTIVE_F for the replacement.
        Reported by Eric Blake.

*** lib/vasnprintf.c    6 Apr 2007 21:22:02 -0000       1.39
--- lib/vasnprintf.c    11 Apr 2007 23:34:20 -0000
***************
*** 1061,1067 ****
                  default:
                    break;
                  }
!               *p = dp->conversion;
  #if USE_SNPRINTF
                p[1] = '%';
                p[2] = 'n';
--- 1061,1072 ----
                  default:
                    break;
                  }
! #if NEED_PRINTF_DIRECTIVE_F
!               if (dp->conversion == 'F')
!                 *p = 'f';
!               else
! #endif
!                 *p = dp->conversion;
  #if USE_SNPRINTF
                p[1] = '%';
                p[2] = 'n';
***************
*** 1348,1353 ****
--- 1353,1370 ----
                      free (tmp);
  #endif
  
+ #if NEED_PRINTF_DIRECTIVE_F
+                   if (dp->conversion == 'F')
+                     {
+                       /* Convert the %f result to upper case for %F.  */
+                       CHAR_T *rp = result + length;
+                       size_t rc;
+                       for (rc = count; rc > 0; rc--, rp++)
+                         if (*rp >= 'a' && *rp <= 'z')
+                           *rp = *rp - 'a' + 'A';
+                     }
+ #endif
+ 
                    length += count;
                    break;
                  }
*** m4/fprintf-posix.m4 26 Mar 2007 02:15:46 -0000      1.2
--- m4/fprintf-posix.m4 11 Apr 2007 23:34:20 -0000
***************
*** 1,4 ****
! # fprintf-posix.m4 serial 2
  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,
--- 1,4 ----
! # fprintf-posix.m4 serial 3
  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,
***************
*** 9,14 ****
--- 9,15 ----
    AC_REQUIRE([gl_EOVERFLOW])
    AC_REQUIRE([gl_PRINTF_SIZES_C99])
    AC_REQUIRE([gl_PRINTF_DIRECTIVE_A])
+   AC_REQUIRE([gl_PRINTF_DIRECTIVE_F])
    AC_REQUIRE([gl_PRINTF_DIRECTIVE_N])
    AC_REQUIRE([gl_PRINTF_POSITIONS])
    gl_cv_func_fprintf_posix=no
***************
*** 16,27 ****
      *yes)
        case "$gl_cv_func_printf_directive_a" in
          *yes)
!           case "$gl_cv_func_printf_directive_n" in
              *yes)
!               case "$gl_cv_func_printf_positions" in
                  *yes)
!                   # fprintf exists and is already POSIX compliant.
!                   gl_cv_func_fprintf_posix=yes
                    ;;
                esac
                ;;
--- 17,32 ----
      *yes)
        case "$gl_cv_func_printf_directive_a" in
          *yes)
!           case "$gl_cv_func_printf_directive_f" in
              *yes)
!               case "$gl_cv_func_printf_directive_n" in
                  *yes)
!                   case "$gl_cv_func_printf_positions" in
!                     *yes)
!                       # fprintf exists and is already POSIX compliant.
!                       gl_cv_func_fprintf_posix=yes
!                       ;;
!                   esac
                    ;;
                esac
                ;;
***************
*** 32,37 ****
--- 37,43 ----
    esac
    if test $gl_cv_func_fprintf_posix = no; then
      gl_PREREQ_VASNPRINTF_DIRECTIVE_A
+     gl_PREREQ_VASNPRINTF_DIRECTIVE_F
      gl_REPLACE_VASNPRINTF
      gl_REPLACE_FPRINTF
    fi
*** m4/printf.m4        11 Apr 2007 23:32:56 -0000      1.16
--- m4/printf.m4        11 Apr 2007 23:34:20 -0000
***************
*** 1,4 ****
! # printf.m4 serial 5
  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,
--- 1,4 ----
! # printf.m4 serial 6
  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,
***************
*** 162,167 ****
--- 162,205 ----
      ])
  ])
  
+ dnl Test whether the *printf family of functions supports the %F format
+ dnl directive. (ISO C99, POSIX:2001)
+ dnl Result is gl_cv_func_printf_directive_f.
+ 
+ AC_DEFUN([gl_PRINTF_DIRECTIVE_F],
+ [
+   AC_REQUIRE([AC_PROG_CC])
+   AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+   AC_CACHE_CHECK([whether printf supports the 'F' directive],
+     [gl_cv_func_printf_directive_f], 
+     [
+       AC_TRY_RUN([
+ #include <stdio.h>
+ #include <string.h>
+ static char buf[100];
+ int main ()
+ {
+   if (sprintf (buf, "%F %d", 1234567.0, 33, 44, 55) < 0
+       || strcmp (buf, "1234567.000000 33") != 0)
+     return 1;
+   if (sprintf (buf, "%F", 1.0 / 0.0) < 0
+       || (strcmp (buf, "INF") != 0 && strcmp (buf, "INFINITY") != 0))
+     return 1;
+   /* This catches a Cygwin 2007 bug.  */
+   if (sprintf (buf, "%.F", 1234.0) < 0
+       || strcmp (buf, "1234") != 0)
+     return 1;
+   return 0;
+ }], [gl_cv_func_printf_directive_f=yes], [gl_cv_func_printf_directive_f=no],
+       [
+        case "$host_os" in
+                                # If we don't know, assume the worst.
+          *)                    gl_cv_func_printf_directive_f="guessing no";;
+        esac
+       ])
+     ])
+ ])
+ 
  dnl Test whether the *printf family of functions supports the %n format
  dnl directive. (ISO C99, POSIX:2001)
  dnl Result is gl_cv_func_printf_directive_n.
***************
*** 428,469 ****
  dnl
  dnl 1 = gl_PRINTF_SIZES_C99
  dnl 2 = gl_PRINTF_DIRECTIVE_A
! dnl 3 = gl_PRINTF_DIRECTIVE_N
! dnl 4 = gl_PRINTF_POSITIONS
! dnl 5 = gl_SNPRINTF_PRESENCE
! dnl 6 = gl_SNPRINTF_TRUNCATION_C99
! dnl 7 = gl_SNPRINTF_RETVAL_C99
! dnl 8 = gl_SNPRINTF_DIRECTIVE_N
  dnl
  dnl 1 = checking whether printf supports size specifiers as in C99...
  dnl 2 = checking whether printf supports the 'a' and 'A' directives...
! dnl 3 = checking whether printf supports the 'n' directive...
! dnl 4 = checking whether printf supports POSIX/XSI format strings with 
positions...
! dnl 5 = checking for snprintf...
! dnl 6 = checking whether snprintf truncates the result as in C99...
! dnl 7 = checking whether snprintf returns a byte count as in C99...
! dnl 8 = checking whether snprintf fully supports the 'n' directive...
  dnl
  dnl . = yes, # = no.
  dnl
! dnl                                        1  2  3  4  5  6  7  8
! dnl   glibc 2.5                            .  .  .  .  .  .  .  .
! dnl   glibc 2.3.6                          .  #  .  .  .  .  .  .
! dnl   FreeBSD 5.4, 6.1                     .  ?  .  .  .  .  .  .
! dnl   MacOS X 10.3.9                       .  #  .  .  .  .  .  .
! dnl   OpenBSD 3.9, 4.0                     .  #  .  .  .  .  .  ?
! dnl   Cygwin 2007                          .  #  .  .  .  .  .  ?
! dnl   Cygwin 2006                          #  #  .  .  .  .  .  ?
! dnl   Solaris 10                           .  #  .  .  .  .  .  .
! dnl   Solaris 2.6 ... 9                    #  #  .  .  .  .  .  .
! dnl   Solaris 2.5.1                        #  #  .  .  #  #  #  #
! dnl   AIX 4.3.2, 5.1                       #  #  .  .  .  .  .  .
! dnl   HP-UX 11.31                          .  #  .  .  .  .  #  #
! dnl   HP-UX 10.20, 11.00, 11.11, 11.23     #  #  .  .  .  .  #  #
! dnl   IRIX 6.5                             #  #  .  .  .  .  #  .
! dnl   OSF/1 5.1                            #  #  .  .  .  .  #  .
! dnl   OSF/1 4.0d                           #  #  .  .  #  #  #  #
! dnl   NetBSD 4.0                           .  ?  .  .  .  .  .  ?
! dnl   NetBSD 3.0                           .  #  .  #  .  .  .  .
! dnl   BeOS                                 #  #  .  #  .  .  .  .
! dnl   mingw                                #  #  .  #  .  #  #  #
--- 466,509 ----
  dnl
  dnl 1 = gl_PRINTF_SIZES_C99
  dnl 2 = gl_PRINTF_DIRECTIVE_A
! dnl 3 = gl_PRINTF_DIRECTIVE_F
! dnl 4 = gl_PRINTF_DIRECTIVE_N
! dnl 5 = gl_PRINTF_POSITIONS
! dnl 6 = gl_SNPRINTF_PRESENCE
! dnl 7 = gl_SNPRINTF_TRUNCATION_C99
! dnl 8 = gl_SNPRINTF_RETVAL_C99
! dnl 9 = gl_SNPRINTF_DIRECTIVE_N
  dnl
  dnl 1 = checking whether printf supports size specifiers as in C99...
  dnl 2 = checking whether printf supports the 'a' and 'A' directives...
! dnl 3 = checking whether printf supports the 'F' directive...
! dnl 4 = checking whether printf supports the 'n' directive...
! dnl 5 = checking whether printf supports POSIX/XSI format strings with 
positions...
! dnl 6 = checking for snprintf...
! dnl 7 = checking whether snprintf truncates the result as in C99...
! dnl 8 = checking whether snprintf returns a byte count as in C99...
! dnl 9 = checking whether snprintf fully supports the 'n' directive...
  dnl
  dnl . = yes, # = no.
  dnl
! dnl                                        1  2  3  4  5  6  7  8  9
! 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                          .  #  #  .  .  .  .  .  ?
! dnl   Cygwin 2006                          #  #  #  .  .  .  .  .  ?
! dnl   Solaris 10                           .  #  .  .  .  .  .  .  .
! dnl   Solaris 2.6 ... 9                    #  #  #  .  .  .  .  .  .
! dnl   Solaris 2.5.1                        #  #  #  .  .  #  #  #  #
! dnl   AIX 4.3.2, 5.1                       #  #  #  .  .  .  .  .  .
! dnl   HP-UX 11.31                          .  #  .  .  .  .  .  #  #
! dnl   HP-UX 10.20, 11.00, 11.11, 11.23     #  #  #  .  .  .  .  #  #
! dnl   IRIX 6.5                             #  #  #  .  .  .  .  #  .
! dnl   OSF/1 5.1                            #  #  #  .  .  .  .  #  .
! dnl   OSF/1 4.0d                           #  #  #  .  .  #  #  #  #
! dnl   NetBSD 4.0                           .  ?  ?  .  .  .  .  .  ?
! dnl   NetBSD 3.0                           .  #  ?  .  #  .  .  .  .
! dnl   BeOS                                 #  #  ?  .  #  .  .  .  .
! dnl   mingw                                #  #  #  .  #  .  #  #  #
*** m4/snprintf-posix.m4        26 Mar 2007 02:15:46 -0000      1.3
--- m4/snprintf-posix.m4        11 Apr 2007 23:34:20 -0000
***************
*** 1,4 ****
! # snprintf-posix.m4 serial 2
  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,
--- 1,4 ----
! # snprintf-posix.m4 serial 3
  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,
***************
*** 9,14 ****
--- 9,15 ----
    AC_REQUIRE([gl_EOVERFLOW])
    AC_REQUIRE([gl_PRINTF_SIZES_C99])
    AC_REQUIRE([gl_PRINTF_DIRECTIVE_A])
+   AC_REQUIRE([gl_PRINTF_DIRECTIVE_F])
    AC_REQUIRE([gl_PRINTF_DIRECTIVE_N])
    AC_REQUIRE([gl_PRINTF_POSITIONS])
    gl_cv_func_snprintf_posix=no
***************
*** 21,39 ****
        *yes)
          case "$gl_cv_func_printf_directive_a" in
            *yes)
!             case "$gl_cv_func_printf_directive_n" in
                *yes)
!                 case "$gl_cv_func_printf_positions" 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)
!                                 # snprintf exists and is already POSIX
!                                 # compliant.
!                                 gl_cv_func_snprintf_posix=yes
                                  ;;
                              esac
                              ;;
--- 22,44 ----
        *yes)
          case "$gl_cv_func_printf_directive_a" in
            *yes)
!             case "$gl_cv_func_printf_directive_f" in
                *yes)
!                 case "$gl_cv_func_printf_directive_n" in
                    *yes)
!                     case "$gl_cv_func_printf_positions" 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)
!                                     # snprintf exists and is already POSIX
!                                     # compliant.
!                                     gl_cv_func_snprintf_posix=yes
!                                     ;;
!                                 esac
                                  ;;
                              esac
                              ;;
***************
*** 51,56 ****
--- 56,62 ----
    fi
    if test $gl_cv_func_snprintf_posix = no; then
      gl_PREREQ_VASNPRINTF_DIRECTIVE_A
+     gl_PREREQ_VASNPRINTF_DIRECTIVE_F
      gl_REPLACE_VASNPRINTF
      gl_REPLACE_SNPRINTF
    fi
*** m4/sprintf-posix.m4 26 Mar 2007 02:15:46 -0000      1.3
--- m4/sprintf-posix.m4 11 Apr 2007 23:34:20 -0000
***************
*** 1,4 ****
! # sprintf-posix.m4 serial 2
  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,
--- 1,4 ----
! # sprintf-posix.m4 serial 3
  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,
***************
*** 9,14 ****
--- 9,15 ----
    AC_REQUIRE([gl_EOVERFLOW])
    AC_REQUIRE([gl_PRINTF_SIZES_C99])
    AC_REQUIRE([gl_PRINTF_DIRECTIVE_A])
+   AC_REQUIRE([gl_PRINTF_DIRECTIVE_F])
    AC_REQUIRE([gl_PRINTF_DIRECTIVE_N])
    AC_REQUIRE([gl_PRINTF_POSITIONS])
    gl_cv_func_sprintf_posix=no
***************
*** 16,27 ****
      *yes)
        case "$gl_cv_func_printf_directive_a" in
          *yes)
!           case "$gl_cv_func_printf_directive_n" in
              *yes)
!               case "$gl_cv_func_printf_positions" in
                  *yes)
!                   # sprintf exists and is already POSIX compliant.
!                   gl_cv_func_sprintf_posix=yes
                    ;;
                esac
                ;;
--- 17,32 ----
      *yes)
        case "$gl_cv_func_printf_directive_a" in
          *yes)
!           case "$gl_cv_func_printf_directive_f" in
              *yes)
!               case "$gl_cv_func_printf_directive_n" in
                  *yes)
!                   case "$gl_cv_func_printf_positions" in
!                     *yes)
!                       # sprintf exists and is already POSIX compliant.
!                       gl_cv_func_sprintf_posix=yes
!                       ;;
!                   esac
                    ;;
                esac
                ;;
***************
*** 32,37 ****
--- 37,43 ----
    esac
    if test $gl_cv_func_sprintf_posix = no; then
      gl_PREREQ_VASNPRINTF_DIRECTIVE_A
+     gl_PREREQ_VASNPRINTF_DIRECTIVE_F
      gl_REPLACE_VASNPRINTF
      gl_REPLACE_SPRINTF
    fi
*** m4/vasnprintf-posix.m4      26 Mar 2007 02:15:46 -0000      1.6
--- m4/vasnprintf-posix.m4      11 Apr 2007 23:34:20 -0000
***************
*** 1,4 ****
! # vasnprintf-posix.m4 serial 3
  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,
--- 1,4 ----
! # vasnprintf-posix.m4 serial 4
  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,
***************
*** 9,14 ****
--- 9,15 ----
    AC_REQUIRE([gl_EOVERFLOW])
    AC_REQUIRE([gl_PRINTF_SIZES_C99])
    AC_REQUIRE([gl_PRINTF_DIRECTIVE_A])
+   AC_REQUIRE([gl_PRINTF_DIRECTIVE_F])
    AC_REQUIRE([gl_PRINTF_DIRECTIVE_N])
    AC_REQUIRE([gl_PRINTF_POSITIONS])
    gl_cv_func_vasnprintf_posix=no
***************
*** 17,30 ****
      *yes)
        case "$gl_cv_func_printf_directive_a" in
          *yes)
!           case "$gl_cv_func_printf_directive_n" in
              *yes)
!               case "$gl_cv_func_printf_positions" 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
                ;;
--- 18,35 ----
      *yes)
        case "$gl_cv_func_printf_directive_a" in
          *yes)
!           case "$gl_cv_func_printf_directive_f" in
              *yes)
!               case "$gl_cv_func_printf_directive_n" in
                  *yes)
!                   case "$gl_cv_func_printf_positions" 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
                ;;
***************
*** 35,40 ****
--- 40,46 ----
    esac
    if test $gl_cv_func_vasnprintf_posix = no; then
      gl_PREREQ_VASNPRINTF_DIRECTIVE_A
+     gl_PREREQ_VASNPRINTF_DIRECTIVE_F
      gl_REPLACE_VASNPRINTF
    fi
  ])
*** m4/vasnprintf.m4    6 Apr 2007 14:36:56 -0000       1.19
--- m4/vasnprintf.m4    11 Apr 2007 23:34:20 -0000
***************
*** 1,4 ****
! # vasnprintf.m4 serial 12
  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,
--- 1,4 ----
! # vasnprintf.m4 serial 13
  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,
***************
*** 75,80 ****
--- 75,95 ----
    esac
  ])
  
+ # Extra prerequisites of lib/vasnprintf.c for supporting the 'F' directive.
+ AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_F],
+ [
+   AC_REQUIRE([gl_PRINTF_DIRECTIVE_F])
+   case "$gl_cv_func_printf_directive_f" in
+     *yes)
+       ;;
+     *)
+       AC_DEFINE([NEED_PRINTF_DIRECTIVE_F], 1,
+         [Define if the vasnprintf implementation needs special code for
+          the 'F' directive.])
+       ;;
+   esac
+ ])
+ 
  # Prerequisites of lib/asnprintf.c.
  AC_DEFUN([gl_PREREQ_ASNPRINTF],
  [
*** m4/vasprintf-posix.m4       26 Mar 2007 02:15:46 -0000      1.4
--- m4/vasprintf-posix.m4       11 Apr 2007 23:34:20 -0000
***************
*** 1,4 ****
! # vasprintf-posix.m4 serial 3
  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,
--- 1,4 ----
! # vasprintf-posix.m4 serial 4
  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,
***************
*** 9,14 ****
--- 9,15 ----
    AC_REQUIRE([gl_EOVERFLOW])
    AC_REQUIRE([gl_PRINTF_SIZES_C99])
    AC_REQUIRE([gl_PRINTF_DIRECTIVE_A])
+   AC_REQUIRE([gl_PRINTF_DIRECTIVE_F])
    AC_REQUIRE([gl_PRINTF_DIRECTIVE_N])
    AC_REQUIRE([gl_PRINTF_POSITIONS])
    gl_cv_func_vasprintf_posix=no
***************
*** 17,30 ****
      *yes)
        case "$gl_cv_func_printf_directive_a" in
          *yes)
!           case "$gl_cv_func_printf_directive_n" in
              *yes)
!               case "$gl_cv_func_printf_positions" 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
                ;;
--- 18,35 ----
      *yes)
        case "$gl_cv_func_printf_directive_a" in
          *yes)
!           case "$gl_cv_func_printf_directive_f" in
              *yes)
!               case "$gl_cv_func_printf_directive_n" in
                  *yes)
!                   case "$gl_cv_func_printf_positions" 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
                ;;
***************
*** 35,40 ****
--- 40,46 ----
    esac
    if test $gl_cv_func_vasprintf_posix = no; then
      gl_PREREQ_VASNPRINTF_DIRECTIVE_A
+     gl_PREREQ_VASNPRINTF_DIRECTIVE_F
      gl_REPLACE_VASNPRINTF
      gl_REPLACE_VASPRINTF
    fi
*** m4/vfprintf-posix.m4        26 Mar 2007 02:15:46 -0000      1.2
--- m4/vfprintf-posix.m4        11 Apr 2007 23:34:20 -0000
***************
*** 1,4 ****
! # vfprintf-posix.m4 serial 2
  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,
--- 1,4 ----
! # vfprintf-posix.m4 serial 3
  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,
***************
*** 9,14 ****
--- 9,15 ----
    AC_REQUIRE([gl_EOVERFLOW])
    AC_REQUIRE([gl_PRINTF_SIZES_C99])
    AC_REQUIRE([gl_PRINTF_DIRECTIVE_A])
+   AC_REQUIRE([gl_PRINTF_DIRECTIVE_F])
    AC_REQUIRE([gl_PRINTF_DIRECTIVE_N])
    AC_REQUIRE([gl_PRINTF_POSITIONS])
    gl_cv_func_vfprintf_posix=no
***************
*** 16,27 ****
      *yes)
        case "$gl_cv_func_printf_directive_a" in
          *yes)
!           case "$gl_cv_func_printf_directive_n" in
              *yes)
!               case "$gl_cv_func_printf_positions" in
                  *yes)
!                   # vfprintf exists and is already POSIX compliant.
!                   gl_cv_func_vfprintf_posix=yes
                    ;;
                esac
                ;;
--- 17,32 ----
      *yes)
        case "$gl_cv_func_printf_directive_a" in
          *yes)
!           case "$gl_cv_func_printf_directive_f" in
              *yes)
!               case "$gl_cv_func_printf_directive_n" in
                  *yes)
!                   case "$gl_cv_func_printf_positions" in
!                     *yes)
!                       # vfprintf exists and is already POSIX compliant.
!                       gl_cv_func_vfprintf_posix=yes
!                       ;;
!                   esac
                    ;;
                esac
                ;;
***************
*** 32,37 ****
--- 37,43 ----
    esac
    if test $gl_cv_func_vfprintf_posix = no; then
      gl_PREREQ_VASNPRINTF_DIRECTIVE_A
+     gl_PREREQ_VASNPRINTF_DIRECTIVE_F
      gl_REPLACE_VASNPRINTF
      gl_REPLACE_VFPRINTF
    fi
*** m4/vsnprintf-posix.m4       26 Mar 2007 02:15:46 -0000      1.3
--- m4/vsnprintf-posix.m4       11 Apr 2007 23:34:20 -0000
***************
*** 1,4 ****
! # vsnprintf-posix.m4 serial 2
  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,
--- 1,4 ----
! # vsnprintf-posix.m4 serial 3
  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,
***************
*** 9,14 ****
--- 9,15 ----
    AC_REQUIRE([gl_EOVERFLOW])
    AC_REQUIRE([gl_PRINTF_SIZES_C99])
    AC_REQUIRE([gl_PRINTF_DIRECTIVE_A])
+   AC_REQUIRE([gl_PRINTF_DIRECTIVE_F])
    AC_REQUIRE([gl_PRINTF_DIRECTIVE_N])
    AC_REQUIRE([gl_PRINTF_POSITIONS])
    gl_cv_func_vsnprintf_posix=no
***************
*** 22,40 ****
        *yes)
          case "$gl_cv_func_printf_directive_a" in
            *yes)
!             case "$gl_cv_func_printf_directive_n" in
                *yes)
!                 case "$gl_cv_func_printf_positions" 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)
!                                 # vsnprintf exists and is already POSIX
!                                 # compliant.
!                                 gl_cv_func_vsnprintf_posix=yes
                                  ;;
                              esac
                              ;;
--- 23,45 ----
        *yes)
          case "$gl_cv_func_printf_directive_a" in
            *yes)
!             case "$gl_cv_func_printf_directive_f" in
                *yes)
!                 case "$gl_cv_func_printf_directive_n" in
                    *yes)
!                     case "$gl_cv_func_printf_positions" 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)
!                                     # vsnprintf exists and is already POSIX
!                                     # compliant.
!                                     gl_cv_func_vsnprintf_posix=yes
!                                     ;;
!                                 esac
                                  ;;
                              esac
                              ;;
***************
*** 52,57 ****
--- 57,63 ----
    fi
    if test $gl_cv_func_vsnprintf_posix = no; then
      gl_PREREQ_VASNPRINTF_DIRECTIVE_A
+     gl_PREREQ_VASNPRINTF_DIRECTIVE_F
      gl_REPLACE_VASNPRINTF
      gl_REPLACE_VSNPRINTF
    fi
*** m4/vsprintf-posix.m4        26 Mar 2007 02:15:46 -0000      1.3
--- m4/vsprintf-posix.m4        11 Apr 2007 23:34:20 -0000
***************
*** 1,4 ****
! # vsprintf-posix.m4 serial 2
  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,
--- 1,4 ----
! # vsprintf-posix.m4 serial 3
  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,
***************
*** 9,14 ****
--- 9,15 ----
    AC_REQUIRE([gl_EOVERFLOW])
    AC_REQUIRE([gl_PRINTF_SIZES_C99])
    AC_REQUIRE([gl_PRINTF_DIRECTIVE_A])
+   AC_REQUIRE([gl_PRINTF_DIRECTIVE_F])
    AC_REQUIRE([gl_PRINTF_DIRECTIVE_N])
    AC_REQUIRE([gl_PRINTF_POSITIONS])
    gl_cv_func_vsprintf_posix=no
***************
*** 16,27 ****
      *yes)
        case "$gl_cv_func_printf_directive_a" in
          *yes)
!           case "$gl_cv_func_printf_directive_n" in
              *yes)
!               case "$gl_cv_func_printf_positions" in
                  *yes)
!                   # vsprintf exists and is already POSIX compliant.
!                   gl_cv_func_vsprintf_posix=yes
                    ;;
                esac
                ;;
--- 17,32 ----
      *yes)
        case "$gl_cv_func_printf_directive_a" in
          *yes)
!           case "$gl_cv_func_printf_directive_f" in
              *yes)
!               case "$gl_cv_func_printf_directive_n" in
                  *yes)
!                   case "$gl_cv_func_printf_positions" in
!                     *yes)
!                       # vsprintf exists and is already POSIX compliant.
!                       gl_cv_func_vsprintf_posix=yes
!                       ;;
!                   esac
                    ;;
                esac
                ;;
***************
*** 32,37 ****
--- 37,43 ----
    esac
    if test $gl_cv_func_vsprintf_posix = no; then
      gl_PREREQ_VASNPRINTF_DIRECTIVE_A
+     gl_PREREQ_VASNPRINTF_DIRECTIVE_F
      gl_REPLACE_VASNPRINTF
      gl_REPLACE_VSPRINTF
    fi





reply via email to

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