X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=m4%2Fprintf.m4;h=b6f82b5a3c46c4a2f4ca05eaca773c30cb6d120c;hb=dac3bbf96357f7866a1094c228b4e5bea3fcf853;hp=a35c83378193c75e3cc729db7e487a6f12fd54c4;hpb=474d4b34c610ef1d888457d4ee6130add2bba3c2;p=gnulib.git diff --git a/m4/printf.m4 b/m4/printf.m4 index a35c83378..b6f82b5a3 100644 --- a/m4/printf.m4 +++ b/m4/printf.m4 @@ -1,5 +1,5 @@ -# printf.m4 serial 19 -dnl Copyright (C) 2003, 2007 Free Software Foundation, Inc. +# 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. @@ -240,6 +240,7 @@ AC_DEFUN([gl_PRINTF_INFINITE_LONG_DOUBLE], [gl_cv_func_printf_infinite_long_double], [ AC_TRY_RUN([ +]GL_NOCRASH[ #include #include #include @@ -265,6 +266,7 @@ static char buf[10000]; static long double zeroL = 0.0L; int main () { + nocrash_init(); if (sprintf (buf, "%Lf", 1.0L / 0.0L) < 0 || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0)) return 1; @@ -682,6 +684,47 @@ changequote([,])dnl ]) ]) +dnl Test whether the *printf family of functions supports the - flag correctly. +dnl (ISO C99.) See +dnl +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 +#include +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 @@ -774,6 +817,7 @@ AC_DEFUN([gl_PRINTF_ENOMEM], [ if test "$cross_compiling" = no; then AC_LANG_CONFTEST([AC_LANG_SOURCE([ +]GL_NOCRASH[ changequote(,)dnl #include #include @@ -784,6 +828,7 @@ int main() { struct rlimit limit; int ret; + nocrash_init (); /* Some printf implementations allocate temporary space with malloc. */ /* On BSD systems, malloc() is limited by RLIMIT_DATA. */ #ifdef RLIMIT_DATA @@ -1181,14 +1226,15 @@ dnl 6 = gl_PRINTF_DIRECTIVE_F dnl 7 = gl_PRINTF_DIRECTIVE_N dnl 8 = gl_PRINTF_POSITIONS dnl 9 = gl_PRINTF_FLAG_GROUPING -dnl 10 = gl_PRINTF_FLAG_ZERO -dnl 11 = gl_PRINTF_PRECISION -dnl 12 = gl_PRINTF_ENOMEM -dnl 13 = gl_SNPRINTF_PRESENCE -dnl 14 = gl_SNPRINTF_TRUNCATION_C99 -dnl 15 = gl_SNPRINTF_RETVAL_C99 -dnl 16 = gl_SNPRINTF_DIRECTIVE_N -dnl 17 = gl_VSNPRINTF_ZEROSIZE_C99 +dnl 10 = gl_PRINTF_FLAG_LEFTADJUST +dnl 11 = gl_PRINTF_FLAG_ZERO +dnl 12 = gl_PRINTF_PRECISION +dnl 13 = gl_PRINTF_ENOMEM +dnl 14 = gl_SNPRINTF_PRESENCE +dnl 15 = gl_SNPRINTF_TRUNCATION_C99 +dnl 16 = gl_SNPRINTF_RETVAL_C99 +dnl 17 = gl_SNPRINTF_DIRECTIVE_N +dnl 18 = gl_VSNPRINTF_ZEROSIZE_C99 dnl dnl 1 = checking whether printf supports size specifiers as in C99... dnl 2 = checking whether printf supports 'long double' arguments... @@ -1199,36 +1245,38 @@ dnl 6 = checking whether printf supports the 'F' directive... dnl 7 = checking whether printf supports the 'n' directive... dnl 8 = checking whether printf supports POSIX/XSI format strings with positions... dnl 9 = checking whether printf supports the grouping flag... -dnl 10 = checking whether printf supports the zero flag correctly... -dnl 11 = checking whether printf supports large precisions... -dnl 12 = checking whether printf survives out-of-memory conditions... -dnl 13 = checking for snprintf... -dnl 14 = checking whether snprintf truncates the result as in C99... -dnl 15 = checking whether snprintf returns a byte count as in C99... -dnl 16 = checking whether snprintf fully supports the 'n' directive... -dnl 17 = checking whether vsnprintf respects a zero size as in C99... +dnl 10 = checking whether printf supports the left-adjust flag correctly... +dnl 11 = checking whether printf supports the zero flag correctly... +dnl 12 = checking whether printf supports large precisions... +dnl 13 = checking whether printf survives out-of-memory conditions... +dnl 14 = checking for snprintf... +dnl 15 = checking whether snprintf truncates the result as in C99... +dnl 16 = checking whether snprintf returns a byte count as in C99... +dnl 17 = checking whether snprintf fully supports the 'n' directive... +dnl 18 = checking whether vsnprintf respects a zero size as in C99... dnl dnl . = yes, # = no. dnl -dnl 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 -dnl glibc 2.5 . . . . . . . . . . . . . . . . . -dnl glibc 2.3.6 . . . . # . . . . . . . . . . . . -dnl FreeBSD 5.4, 6.1 . . . . # . . . . # . # . . . . . -dnl MacOS X 10.3.9 . . . . # . . . . # . # . . . . . -dnl OpenBSD 3.9, 4.0 . ? ? ? # ? . . ? ? ? ? . . . ? ? -dnl Cygwin 2007 (= Cygwin 1.5.24) . . . . # # . . . # ? ? . . . . . -dnl Cygwin 2006 (= Cygwin 1.5.19) # . . . # # . . # # ? ? . . . . . -dnl Solaris 10 . . # # # . . . . # . . . . . . . -dnl Solaris 2.6 ... 9 # . # # # # . . . # . . . . . . . -dnl Solaris 2.5.1 # . # # # # . . . # . . # # # # # -dnl AIX 5.2 . . # # # . . . . # . . . . . . . -dnl AIX 4.3.2, 5.1 # . # # # # . . . # . . . . . . . -dnl HP-UX 11.31 . . . . # . . . . # . . . . # # . -dnl HP-UX 10.20, 11.{00,11,23} # . . . # # . . . # . . . . # # # -dnl IRIX 6.5 # . # # # # . . . # . . . . # . . -dnl OSF/1 5.1 # . # # # # . . . # . . . . # . # -dnl OSF/1 4.0d # . # # # # . . . # . . # # # # # -dnl NetBSD 4.0 . ? ? ? ? ? . . ? ? ? ? . . . ? ? -dnl NetBSD 3.0 . . . . # # . # # # . # . . . . . -dnl BeOS # # . # # # . # . . # ? . . . . . -dnl mingw # # # # # # . # # # # ? . # # # . +dnl 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 +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 # # # # # # . # # . # # ? . # # # .