mirror of
https://git.savannah.gnu.org/git/gnulib.git
synced 2025-08-08 17:22:05 +03:00
Fix various problems in 'obstack-printf' module.
This commit is contained in:
13
ChangeLog
13
ChangeLog
@@ -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>
|
2008-06-13 Eric Blake <ebb9@byu.net>
|
||||||
|
|
||||||
Add obstack-printf and obstack-printf-posix modules.
|
Add obstack-printf and obstack-printf-posix modules.
|
||||||
|
@@ -58,16 +58,16 @@ obstack_vprintf (struct obstack *obs, const char *format, va_list args)
|
|||||||
stack-allocated buffer and copy, to reduce the likelihood of a
|
stack-allocated buffer and copy, to reduce the likelihood of a
|
||||||
small-size malloc. Otherwise, print directly into the
|
small-size malloc. Otherwise, print directly into the
|
||||||
obstack. */
|
obstack. */
|
||||||
const size_t cutoff = 1024;
|
enum { CUTOFF = 1024 };
|
||||||
char buf[cutoff];
|
char buf[CUTOFF];
|
||||||
char *base = obstack_next_free (obs);
|
char *base = obstack_next_free (obs);
|
||||||
size_t len = obstack_room (obs);
|
size_t len = obstack_room (obs);
|
||||||
char *str;
|
char *str;
|
||||||
|
|
||||||
if (len < cutoff)
|
if (len < CUTOFF)
|
||||||
{
|
{
|
||||||
base = buf;
|
base = buf;
|
||||||
len = cutoff;
|
len = CUTOFF;
|
||||||
}
|
}
|
||||||
str = vasnprintf (base, &len, format, args);
|
str = vasnprintf (base, &len, format, args);
|
||||||
if (!str)
|
if (!str)
|
||||||
|
@@ -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 Copyright (C) 2008 Free Software Foundation, Inc.
|
||||||
dnl This file is free software; the Free Software Foundation
|
dnl This file is free software; the Free Software Foundation
|
||||||
dnl gives unlimited permission to copy and/or distribute it,
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
@@ -6,6 +6,9 @@ dnl with or without modifications, as long as this notice is preserved.
|
|||||||
|
|
||||||
AC_DEFUN([gl_FUNC_OBSTACK_PRINTF_POSIX],
|
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_SIZES_C99])
|
||||||
AC_REQUIRE([gl_PRINTF_LONG_DOUBLE])
|
AC_REQUIRE([gl_PRINTF_LONG_DOUBLE])
|
||||||
AC_REQUIRE([gl_PRINTF_INFINITE])
|
AC_REQUIRE([gl_PRINTF_INFINITE])
|
||||||
@@ -20,6 +23,8 @@ AC_DEFUN([gl_FUNC_OBSTACK_PRINTF_POSIX],
|
|||||||
AC_REQUIRE([gl_PRINTF_PRECISION])
|
AC_REQUIRE([gl_PRINTF_PRECISION])
|
||||||
AC_REQUIRE([gl_PRINTF_ENOMEM])
|
AC_REQUIRE([gl_PRINTF_ENOMEM])
|
||||||
gl_cv_func_obstack_printf_posix=no
|
gl_cv_func_obstack_printf_posix=no
|
||||||
|
AC_CHECK_FUNCS_ONCE([obstack_printf])
|
||||||
|
if test $ac_cv_func_obstack_printf = yes ; then
|
||||||
case "$gl_cv_func_printf_sizes_c99" in
|
case "$gl_cv_func_printf_sizes_c99" in
|
||||||
*yes)
|
*yes)
|
||||||
case "$gl_cv_func_printf_long_double" in
|
case "$gl_cv_func_printf_long_double" in
|
||||||
@@ -75,6 +80,7 @@ AC_DEFUN([gl_FUNC_OBSTACK_PRINTF_POSIX],
|
|||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
fi
|
||||||
if test $gl_cv_func_obstack_printf_posix = no; then
|
if test $gl_cv_func_obstack_printf_posix = no; then
|
||||||
gl_PREREQ_VASNPRINTF_LONG_DOUBLE
|
gl_PREREQ_VASNPRINTF_LONG_DOUBLE
|
||||||
gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE
|
gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
# obstack-printf.m4 serial 1
|
# obstack-printf.m4 serial 2
|
||||||
dnl Copyright (C) 2008 Free Software Foundation, Inc.
|
dnl Copyright (C) 2008 Free Software Foundation, Inc.
|
||||||
dnl This file is free software; the Free Software Foundation
|
dnl This file is free software; the Free Software Foundation
|
||||||
dnl gives unlimited permission to copy and/or distribute it,
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
@@ -10,6 +10,9 @@ dnl obstack_vprintf behaves identically, so we only test for one.
|
|||||||
|
|
||||||
AC_DEFUN([gl_FUNC_OBSTACK_PRINTF],
|
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_REQUIRE([gl_STDIO_H_DEFAULTS])
|
||||||
AC_CHECK_FUNCS_ONCE([obstack_printf])
|
AC_CHECK_FUNCS_ONCE([obstack_printf])
|
||||||
if test $ac_cv_func_obstack_printf = no ; then
|
if test $ac_cv_func_obstack_printf = no ; then
|
||||||
|
@@ -9,6 +9,7 @@ Depends-on:
|
|||||||
obstack
|
obstack
|
||||||
stdio
|
stdio
|
||||||
vasnprintf
|
vasnprintf
|
||||||
|
extensions
|
||||||
|
|
||||||
configure.ac:
|
configure.ac:
|
||||||
gl_FUNC_OBSTACK_PRINTF
|
gl_FUNC_OBSTACK_PRINTF
|
||||||
@@ -17,7 +18,6 @@ gl_STDIO_MODULE_INDICATOR([obstack-printf])
|
|||||||
Makefile.am:
|
Makefile.am:
|
||||||
|
|
||||||
Include:
|
Include:
|
||||||
"obstack.h"
|
|
||||||
<stdio.h>
|
<stdio.h>
|
||||||
|
|
||||||
License:
|
License:
|
||||||
|
@@ -10,6 +10,7 @@ Depends-on:
|
|||||||
obstack
|
obstack
|
||||||
stdio
|
stdio
|
||||||
vasnprintf-posix
|
vasnprintf-posix
|
||||||
|
extensions
|
||||||
|
|
||||||
configure.ac:
|
configure.ac:
|
||||||
gl_FUNC_OBSTACK_PRINTF_POSIX
|
gl_FUNC_OBSTACK_PRINTF_POSIX
|
||||||
@@ -18,7 +19,6 @@ gl_STDIO_MODULE_INDICATOR([obstack-printf-posix])
|
|||||||
Makefile.am:
|
Makefile.am:
|
||||||
|
|
||||||
Include:
|
Include:
|
||||||
"obstack.h"
|
|
||||||
<stdio.h>
|
<stdio.h>
|
||||||
|
|
||||||
License:
|
License:
|
||||||
|
Reference in New Issue
Block a user