# HG changeset patch # User Bruno Haible # Date 1176335167 0 # Node ID 40c507f55b0f93c659ba44157e5d614bfa39cd08 # Parent e2189cab039dd1c6183a11c34078ac5be6fd11d6 Implement the %F directive if the system doesn't implement it correctly. diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,35 @@ +2007-04-11 Bruno Haible + + * 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. + 2007-04-11 Bruno Haible * m4/printf.m4 (gl_PRINTF_DIRECTIVE_A): Fix test. It always failed. diff --git a/lib/vasnprintf.c b/lib/vasnprintf.c --- a/lib/vasnprintf.c +++ b/lib/vasnprintf.c @@ -1061,7 +1061,12 @@ default: break; } - *p = dp->conversion; +#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,6 +1353,18 @@ 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; } diff --git a/m4/fprintf-posix.m4 b/m4/fprintf-posix.m4 --- a/m4/fprintf-posix.m4 +++ b/m4/fprintf-posix.m4 @@ -1,4 +1,4 @@ -# fprintf-posix.m4 serial 2 +# 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,6 +9,7 @@ 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,12 +17,16 @@ *yes) case "$gl_cv_func_printf_directive_a" in *yes) - case "$gl_cv_func_printf_directive_n" in + case "$gl_cv_func_printf_directive_f" in *yes) - case "$gl_cv_func_printf_positions" in + case "$gl_cv_func_printf_directive_n" in *yes) - # fprintf exists and is already POSIX compliant. - gl_cv_func_fprintf_posix=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,6 +37,7 @@ 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 diff --git a/m4/printf.m4 b/m4/printf.m4 --- a/m4/printf.m4 +++ b/m4/printf.m4 @@ -1,4 +1,4 @@ -# printf.m4 serial 5 +# 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,6 +162,44 @@ ]) ]) +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 +#include +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,42 +466,44 @@ 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 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 '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 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 -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 # # . # . # # # +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 # # # . # . # # # diff --git a/m4/snprintf-posix.m4 b/m4/snprintf-posix.m4 --- a/m4/snprintf-posix.m4 +++ b/m4/snprintf-posix.m4 @@ -1,4 +1,4 @@ -# snprintf-posix.m4 serial 2 +# 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,6 +9,7 @@ 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,19 +22,23 @@ *yes) case "$gl_cv_func_printf_directive_a" in *yes) - case "$gl_cv_func_printf_directive_n" in + case "$gl_cv_func_printf_directive_f" in *yes) - case "$gl_cv_func_printf_positions" in + case "$gl_cv_func_printf_directive_n" in *yes) - case "$gl_cv_func_snprintf_truncation_c99" in + case "$gl_cv_func_printf_positions" in *yes) - case "$gl_cv_func_snprintf_retval_c99" in + case "$gl_cv_func_snprintf_truncation_c99" in *yes) - case "$gl_cv_func_snprintf_directive_n" in + case "$gl_cv_func_snprintf_retval_c99" in *yes) - # snprintf exists and is already POSIX - # compliant. - gl_cv_func_snprintf_posix=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,6 +56,7 @@ 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 diff --git a/m4/sprintf-posix.m4 b/m4/sprintf-posix.m4 --- a/m4/sprintf-posix.m4 +++ b/m4/sprintf-posix.m4 @@ -1,4 +1,4 @@ -# sprintf-posix.m4 serial 2 +# 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,6 +9,7 @@ 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,12 +17,16 @@ *yes) case "$gl_cv_func_printf_directive_a" in *yes) - case "$gl_cv_func_printf_directive_n" in + case "$gl_cv_func_printf_directive_f" in *yes) - case "$gl_cv_func_printf_positions" in + case "$gl_cv_func_printf_directive_n" in *yes) - # sprintf exists and is already POSIX compliant. - gl_cv_func_sprintf_posix=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,6 +37,7 @@ 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 diff --git a/m4/vasnprintf-posix.m4 b/m4/vasnprintf-posix.m4 --- a/m4/vasnprintf-posix.m4 +++ b/m4/vasnprintf-posix.m4 @@ -1,4 +1,4 @@ -# vasnprintf-posix.m4 serial 3 +# 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,6 +9,7 @@ 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,14 +18,18 @@ *yes) case "$gl_cv_func_printf_directive_a" in *yes) - case "$gl_cv_func_printf_directive_n" in + case "$gl_cv_func_printf_directive_f" in *yes) - case "$gl_cv_func_printf_positions" in + case "$gl_cv_func_printf_directive_n" in *yes) - if test $ac_cv_func_vasnprintf = yes; then - # vasnprintf exists and is already POSIX compliant. - gl_cv_func_vasnprintf_posix=yes - fi + 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,6 +40,7 @@ esac if test $gl_cv_func_vasnprintf_posix = no; then gl_PREREQ_VASNPRINTF_DIRECTIVE_A + gl_PREREQ_VASNPRINTF_DIRECTIVE_F gl_REPLACE_VASNPRINTF fi ]) diff --git a/m4/vasnprintf.m4 b/m4/vasnprintf.m4 --- a/m4/vasnprintf.m4 +++ b/m4/vasnprintf.m4 @@ -1,4 +1,4 @@ -# vasnprintf.m4 serial 12 +# 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,6 +75,21 @@ 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], [ diff --git a/m4/vasprintf-posix.m4 b/m4/vasprintf-posix.m4 --- a/m4/vasprintf-posix.m4 +++ b/m4/vasprintf-posix.m4 @@ -1,4 +1,4 @@ -# vasprintf-posix.m4 serial 3 +# 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,6 +9,7 @@ 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,14 +18,18 @@ *yes) case "$gl_cv_func_printf_directive_a" in *yes) - case "$gl_cv_func_printf_directive_n" in + case "$gl_cv_func_printf_directive_f" in *yes) - case "$gl_cv_func_printf_positions" in + case "$gl_cv_func_printf_directive_n" in *yes) - if test $ac_cv_func_vasprintf = yes; then - # vasprintf exists and is already POSIX compliant. - gl_cv_func_vasprintf_posix=yes - fi + 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,6 +40,7 @@ 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 diff --git a/m4/vfprintf-posix.m4 b/m4/vfprintf-posix.m4 --- a/m4/vfprintf-posix.m4 +++ b/m4/vfprintf-posix.m4 @@ -1,4 +1,4 @@ -# vfprintf-posix.m4 serial 2 +# 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,6 +9,7 @@ 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,12 +17,16 @@ *yes) case "$gl_cv_func_printf_directive_a" in *yes) - case "$gl_cv_func_printf_directive_n" in + case "$gl_cv_func_printf_directive_f" in *yes) - case "$gl_cv_func_printf_positions" in + case "$gl_cv_func_printf_directive_n" in *yes) - # vfprintf exists and is already POSIX compliant. - gl_cv_func_vfprintf_posix=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,6 +37,7 @@ 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 diff --git a/m4/vsnprintf-posix.m4 b/m4/vsnprintf-posix.m4 --- a/m4/vsnprintf-posix.m4 +++ b/m4/vsnprintf-posix.m4 @@ -1,4 +1,4 @@ -# vsnprintf-posix.m4 serial 2 +# 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,6 +9,7 @@ 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,19 +23,23 @@ *yes) case "$gl_cv_func_printf_directive_a" in *yes) - case "$gl_cv_func_printf_directive_n" in + case "$gl_cv_func_printf_directive_f" in *yes) - case "$gl_cv_func_printf_positions" in + case "$gl_cv_func_printf_directive_n" in *yes) - case "$gl_cv_func_snprintf_truncation_c99" in + case "$gl_cv_func_printf_positions" in *yes) - case "$gl_cv_func_snprintf_retval_c99" in + case "$gl_cv_func_snprintf_truncation_c99" in *yes) - case "$gl_cv_func_snprintf_directive_n" in + case "$gl_cv_func_snprintf_retval_c99" in *yes) - # vsnprintf exists and is already POSIX - # compliant. - gl_cv_func_vsnprintf_posix=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,6 +57,7 @@ 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 diff --git a/m4/vsprintf-posix.m4 b/m4/vsprintf-posix.m4 --- a/m4/vsprintf-posix.m4 +++ b/m4/vsprintf-posix.m4 @@ -1,4 +1,4 @@ -# vsprintf-posix.m4 serial 2 +# 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,6 +9,7 @@ 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,12 +17,16 @@ *yes) case "$gl_cv_func_printf_directive_a" in *yes) - case "$gl_cv_func_printf_directive_n" in + case "$gl_cv_func_printf_directive_f" in *yes) - case "$gl_cv_func_printf_positions" in + case "$gl_cv_func_printf_directive_n" in *yes) - # vsprintf exists and is already POSIX compliant. - gl_cv_func_vsprintf_posix=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,6 +37,7 @@ 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