Mercurial > gnulib
changeset 10206:927afe014a7d
Fix various problems in 'obstack-printf' module.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Sat, 14 Jun 2008 15:06:19 +0200 |
parents | 3384541effec |
children | e027c5e42aba |
files | ChangeLog lib/obstack_printf.c m4/obstack-printf-posix.m4 m4/obstack-printf.m4 modules/obstack-printf modules/obstack-printf-posix |
diffstat | 6 files changed, 85 insertions(+), 63 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Fri Jun 13 06:40:53 2008 -0600 +++ b/ChangeLog Sat Jun 14 15:06:19 2008 +0200 @@ -1,3 +1,16 @@ +2008-06-14 Bruno Haible <bruno@clisp.org> + + * lib/obstack_printf.c (obstack_vprintf): Define the stack-allocated + array size as a constant, not as a const variable. + * m4/obstack-printf.m4 (gl_FUNC_OBSTACK_PRINTF): Require + AC_USE_SYSTEM_EXTENSIONS. + * m4/obstack-printf-posix.m4 (gl_FUNC_OBSTACK_PRINTF_POSIX): Likewise. + Test whether the obstack_printf function actually exists. + * modules/obstack-printf (Depends-on): Add extensions. + (Include): Remove obstack.h. + * modules/obstack-printf-posix (Depends-on): Add extensions. + (Include): Remove obstack.h. + 2008-06-13 Eric Blake <ebb9@byu.net> Add obstack-printf and obstack-printf-posix modules.
--- a/lib/obstack_printf.c Fri Jun 13 06:40:53 2008 -0600 +++ b/lib/obstack_printf.c Sat Jun 14 15:06:19 2008 +0200 @@ -58,16 +58,16 @@ stack-allocated buffer and copy, to reduce the likelihood of a small-size malloc. Otherwise, print directly into the obstack. */ - const size_t cutoff = 1024; - char buf[cutoff]; + enum { CUTOFF = 1024 }; + char buf[CUTOFF]; char *base = obstack_next_free (obs); size_t len = obstack_room (obs); char *str; - if (len < cutoff) + if (len < CUTOFF) { base = buf; - len = cutoff; + len = CUTOFF; } str = vasnprintf (base, &len, format, args); if (!str)
--- a/m4/obstack-printf-posix.m4 Fri Jun 13 06:40:53 2008 -0600 +++ b/m4/obstack-printf-posix.m4 Sat Jun 14 15:06:19 2008 +0200 @@ -1,4 +1,4 @@ -# obstack-printf-posix.m4 serial 1 +# obstack-printf-posix.m4 serial 2 dnl Copyright (C) 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, @@ -6,6 +6,9 @@ AC_DEFUN([gl_FUNC_OBSTACK_PRINTF_POSIX], [ + dnl Persuade glibc <stdio.h> to declare obstack_printf(), obstack_vprintf(). + AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) + AC_REQUIRE([gl_PRINTF_SIZES_C99]) AC_REQUIRE([gl_PRINTF_LONG_DOUBLE]) AC_REQUIRE([gl_PRINTF_INFINITE]) @@ -20,61 +23,64 @@ AC_REQUIRE([gl_PRINTF_PRECISION]) AC_REQUIRE([gl_PRINTF_ENOMEM]) gl_cv_func_obstack_printf_posix=no - case "$gl_cv_func_printf_sizes_c99" in - *yes) - case "$gl_cv_func_printf_long_double" in - *yes) - case "$gl_cv_func_printf_infinite" in - *yes) - case "$gl_cv_func_printf_infinite_long_double" in - *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_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) - # obstack_printf exists and is - # already POSIX compliant. - gl_cv_func_obstack_printf_posix= yes - ;; - esac - ;; - esac - ;; - esac - ;; - esac - ;; - esac - ;; - esac - ;; - esac - ;; - esac - ;; - esac - ;; - esac - ;; - esac - ;; - esac - ;; - esac + AC_CHECK_FUNCS_ONCE([obstack_printf]) + if test $ac_cv_func_obstack_printf = yes ; then + case "$gl_cv_func_printf_sizes_c99" in + *yes) + case "$gl_cv_func_printf_long_double" in + *yes) + case "$gl_cv_func_printf_infinite" in + *yes) + case "$gl_cv_func_printf_infinite_long_double" in + *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_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) + # obstack_printf exists and is + # already POSIX compliant. + gl_cv_func_obstack_printf_posix= yes + ;; + esac + ;; + esac + ;; + esac + ;; + esac + ;; + esac + ;; + esac + ;; + esac + ;; + esac + ;; + esac + ;; + esac + ;; + esac + ;; + esac + ;; + esac + fi if test $gl_cv_func_obstack_printf_posix = no; then gl_PREREQ_VASNPRINTF_LONG_DOUBLE gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE
--- a/m4/obstack-printf.m4 Fri Jun 13 06:40:53 2008 -0600 +++ b/m4/obstack-printf.m4 Sat Jun 14 15:06:19 2008 +0200 @@ -1,4 +1,4 @@ -# obstack-printf.m4 serial 1 +# obstack-printf.m4 serial 2 dnl Copyright (C) 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, @@ -10,6 +10,9 @@ AC_DEFUN([gl_FUNC_OBSTACK_PRINTF], [ + dnl Persuade glibc <stdio.h> to declare obstack_printf(), obstack_vprintf(). + AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) + AC_REQUIRE([gl_STDIO_H_DEFAULTS]) AC_CHECK_FUNCS_ONCE([obstack_printf]) if test $ac_cv_func_obstack_printf = no ; then
--- a/modules/obstack-printf Fri Jun 13 06:40:53 2008 -0600 +++ b/modules/obstack-printf Sat Jun 14 15:06:19 2008 +0200 @@ -9,6 +9,7 @@ obstack stdio vasnprintf +extensions configure.ac: gl_FUNC_OBSTACK_PRINTF @@ -17,7 +18,6 @@ Makefile.am: Include: -"obstack.h" <stdio.h> License:
--- a/modules/obstack-printf-posix Fri Jun 13 06:40:53 2008 -0600 +++ b/modules/obstack-printf-posix Sat Jun 14 15:06:19 2008 +0200 @@ -10,6 +10,7 @@ obstack stdio vasnprintf-posix +extensions configure.ac: gl_FUNC_OBSTACK_PRINTF_POSIX @@ -18,7 +19,6 @@ Makefile.am: Include: -"obstack.h" <stdio.h> License: