From 9a76ff17c18f3f2704df0a9d7f9466e75f0d1bcc Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 4 Oct 2003 23:24:02 +0000 Subject: [PATCH] Make the various printf feature test macros reflect the system printf, 2003-10-05 Matthias Clasen * configure.in: Make the various printf feature test macros reflect the system printf, even when using the included printf. In particular, don't force HAVE_C99_SNPRINTF, since g-gnulib.h needs that test result. (#122973) * glib/gprintf.c (g_vasprintf): Don't rely on HAVE_VASPRINTF, directly check for _g_vasprintf. * glib/gprintfint.h (_g_vasprintf): Only define _g_vasprintf() if vasprintf() is available. * glib/gnulib/printf.c (_g_gnulib_vfprintf): Don't write trailing nul to the file. (#122973) * acinclude.m4 (AC_FUNC_VSNPRINTF_C99): Make the test detect non-C99-compliance of AIX 5.1 and Solaris vsnprintf(). (#122496) --- ChangeLog | 20 ++++++++++++++++++++ ChangeLog.pre-2-10 | 20 ++++++++++++++++++++ ChangeLog.pre-2-12 | 20 ++++++++++++++++++++ ChangeLog.pre-2-4 | 20 ++++++++++++++++++++ ChangeLog.pre-2-6 | 20 ++++++++++++++++++++ ChangeLog.pre-2-8 | 20 ++++++++++++++++++++ acinclude.m4 | 10 ++++++++++ configure.in | 4 ---- glib/gnulib/README | 20 ++++++++++---------- glib/gnulib/printf.c | 2 +- glib/gprintf.c | 2 +- glib/gprintfint.h | 2 ++ 12 files changed, 144 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3edb2e81..612015a1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,23 @@ +2003-10-05 Matthias Clasen + + * configure.in: Make the various printf feature test macros + reflect the system printf, even when using the included printf. + In particular, don't force HAVE_C99_SNPRINTF, since g-gnulib.h + needs that test result. (#122973) + + * glib/gprintf.c (g_vasprintf): Don't rely on HAVE_VASPRINTF, + directly check for _g_vasprintf. + + * glib/gprintfint.h (_g_vasprintf): Only define _g_vasprintf() + if vasprintf() is available. + + * glib/gnulib/printf.c (_g_gnulib_vfprintf): Don't write + trailing nul to the file. (#122973) + + * acinclude.m4 (AC_FUNC_VSNPRINTF_C99): Make the test + detect non-C99-compliance of AIX 5.1 and Solaris + vsnprintf(). (#122496) + Thu Oct 2 01:15:46 2003 Owen Taylor * tests/gobject/ifacecheck.c: Test case for diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 3edb2e81..612015a1 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,23 @@ +2003-10-05 Matthias Clasen + + * configure.in: Make the various printf feature test macros + reflect the system printf, even when using the included printf. + In particular, don't force HAVE_C99_SNPRINTF, since g-gnulib.h + needs that test result. (#122973) + + * glib/gprintf.c (g_vasprintf): Don't rely on HAVE_VASPRINTF, + directly check for _g_vasprintf. + + * glib/gprintfint.h (_g_vasprintf): Only define _g_vasprintf() + if vasprintf() is available. + + * glib/gnulib/printf.c (_g_gnulib_vfprintf): Don't write + trailing nul to the file. (#122973) + + * acinclude.m4 (AC_FUNC_VSNPRINTF_C99): Make the test + detect non-C99-compliance of AIX 5.1 and Solaris + vsnprintf(). (#122496) + Thu Oct 2 01:15:46 2003 Owen Taylor * tests/gobject/ifacecheck.c: Test case for diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index 3edb2e81..612015a1 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,3 +1,23 @@ +2003-10-05 Matthias Clasen + + * configure.in: Make the various printf feature test macros + reflect the system printf, even when using the included printf. + In particular, don't force HAVE_C99_SNPRINTF, since g-gnulib.h + needs that test result. (#122973) + + * glib/gprintf.c (g_vasprintf): Don't rely on HAVE_VASPRINTF, + directly check for _g_vasprintf. + + * glib/gprintfint.h (_g_vasprintf): Only define _g_vasprintf() + if vasprintf() is available. + + * glib/gnulib/printf.c (_g_gnulib_vfprintf): Don't write + trailing nul to the file. (#122973) + + * acinclude.m4 (AC_FUNC_VSNPRINTF_C99): Make the test + detect non-C99-compliance of AIX 5.1 and Solaris + vsnprintf(). (#122496) + Thu Oct 2 01:15:46 2003 Owen Taylor * tests/gobject/ifacecheck.c: Test case for diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 3edb2e81..612015a1 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,23 @@ +2003-10-05 Matthias Clasen + + * configure.in: Make the various printf feature test macros + reflect the system printf, even when using the included printf. + In particular, don't force HAVE_C99_SNPRINTF, since g-gnulib.h + needs that test result. (#122973) + + * glib/gprintf.c (g_vasprintf): Don't rely on HAVE_VASPRINTF, + directly check for _g_vasprintf. + + * glib/gprintfint.h (_g_vasprintf): Only define _g_vasprintf() + if vasprintf() is available. + + * glib/gnulib/printf.c (_g_gnulib_vfprintf): Don't write + trailing nul to the file. (#122973) + + * acinclude.m4 (AC_FUNC_VSNPRINTF_C99): Make the test + detect non-C99-compliance of AIX 5.1 and Solaris + vsnprintf(). (#122496) + Thu Oct 2 01:15:46 2003 Owen Taylor * tests/gobject/ifacecheck.c: Test case for diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 3edb2e81..612015a1 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,23 @@ +2003-10-05 Matthias Clasen + + * configure.in: Make the various printf feature test macros + reflect the system printf, even when using the included printf. + In particular, don't force HAVE_C99_SNPRINTF, since g-gnulib.h + needs that test result. (#122973) + + * glib/gprintf.c (g_vasprintf): Don't rely on HAVE_VASPRINTF, + directly check for _g_vasprintf. + + * glib/gprintfint.h (_g_vasprintf): Only define _g_vasprintf() + if vasprintf() is available. + + * glib/gnulib/printf.c (_g_gnulib_vfprintf): Don't write + trailing nul to the file. (#122973) + + * acinclude.m4 (AC_FUNC_VSNPRINTF_C99): Make the test + detect non-C99-compliance of AIX 5.1 and Solaris + vsnprintf(). (#122496) + Thu Oct 2 01:15:46 2003 Owen Taylor * tests/gobject/ifacecheck.c: Test case for diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 3edb2e81..612015a1 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,23 @@ +2003-10-05 Matthias Clasen + + * configure.in: Make the various printf feature test macros + reflect the system printf, even when using the included printf. + In particular, don't force HAVE_C99_SNPRINTF, since g-gnulib.h + needs that test result. (#122973) + + * glib/gprintf.c (g_vasprintf): Don't rely on HAVE_VASPRINTF, + directly check for _g_vasprintf. + + * glib/gprintfint.h (_g_vasprintf): Only define _g_vasprintf() + if vasprintf() is available. + + * glib/gnulib/printf.c (_g_gnulib_vfprintf): Don't write + trailing nul to the file. (#122973) + + * acinclude.m4 (AC_FUNC_VSNPRINTF_C99): Make the test + detect non-C99-compliance of AIX 5.1 and Solaris + vsnprintf(). (#122496) + Thu Oct 2 01:15:46 2003 Owen Taylor * tests/gobject/ifacecheck.c: Test case for diff --git a/acinclude.m4 b/acinclude.m4 index f686739f..f86034d7 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -20,6 +20,16 @@ doit(char * s, ...) r = vsnprintf(buffer, 5, s, args); va_end(args); + if (r != 7) + exit(1); + + /* AIX 5.1 and Solaris seems to have a half-baked vsnprintf() + implementation. The above will return 7 but if you replace + the size of the buffer with 0, it borks! */ + va_start(args, s); + r = vsnprintf(buffer, 0, s, args); + va_end(args); + if (r != 7) exit(1); diff --git a/configure.in b/configure.in index f37faff2..378bcb3a 100644 --- a/configure.in +++ b/configure.in @@ -773,9 +773,6 @@ if test "$enable_included_printf" != "yes" ; then else glib_cv_long_long_format="ll" AC_DEFINE(HAVE_VASPRINTF,1) - AC_DEFINE(HAVE_C99_VSNPRINTF,1) - AC_DEFINE(HAVE_C99_SNPRINTF,1) - AC_DEFINE(HAVE_UNIX98_PRINTF,1) fi # Checks needed for gnulib vasnprintf @@ -1932,7 +1929,6 @@ AC_ARG_ENABLE(man, [AC_HELP_STRING([--enable-man], [regenerate man pages from Docbook [default=no]])],enable_man=yes, enable_man=no) - dnl dnl Check for xsltproc dnl diff --git a/glib/gnulib/README b/glib/gnulib/README index cd07d868..0b23d6ca 100644 --- a/glib/gnulib/README +++ b/glib/gnulib/README @@ -13,22 +13,22 @@ be found at: http://www.gnu.org/software/gnulib/ -They have been modified to include g-gnulib.h. vasnprintf.c has also been modified to -include support for long long printing if the system printf doesn't. This code is protected -by #ifndef HAVE_LON_LONG_FORMAT. +They have been modified to include g-gnulib.h. vasnprintf.c has also +been modified to include support for long long printing if the system +printf doesn't. This code is protected by #ifndef HAVE_LON_LONG_FORMAT. -The files +The files printf.h printf.c g-gnulib.h -have been written by me. printf.[hc] contain implementations of the -remaining functions in the printf family based on -vasnprintf. g-gnulib.h is included by all source files in order to -move all exported functions to the _g_gnulib namespace, replace malloc -by g_malloc and make sure that snprintf is only used if it implements -C99 return value semantics. +have been written by me. printf.[hc] contain implementations of the +remaining functions in the printf family based on vasnprintf. +g-gnulib.h is included by all source files in order to move all +exported functions to the _g_gnulib namespace, replace malloc by +g_malloc and make sure that snprintf is only used if it implements +C99 return value semantics. Matthias Clasen July 28, 2003 diff --git a/glib/gnulib/printf.c b/glib/gnulib/printf.c index 18d29dde..b3392999 100644 --- a/glib/gnulib/printf.c +++ b/glib/gnulib/printf.c @@ -96,7 +96,7 @@ int _g_gnulib_vfprintf (FILE *file, char const *format, va_list args) if (result == NULL) return -1; - fwrite (result, 1, length + 1, file); + fwrite (result, 1, length, file); free (result); return length; diff --git a/glib/gprintf.c b/glib/gprintf.c index 754b1913..9b511ead 100644 --- a/glib/gprintf.c +++ b/glib/gprintf.c @@ -300,7 +300,7 @@ g_vasprintf (gchar **string, gint len; g_return_val_if_fail (string != NULL, -1); -#ifdef HAVE_VASPRINTF +#ifdef _g_vasprintf len = _g_vasprintf (string, format, args); if (len < 0) *string = NULL; diff --git a/glib/gprintfint.h b/glib/gprintfint.h index 103981b9..2195e6fc 100644 --- a/glib/gprintfint.h +++ b/glib/gprintfint.h @@ -39,7 +39,9 @@ #define _g_vsprintf vsprintf #define _g_vsnprintf vsnprintf +#ifdef HAVE_VASPRINTF #define _g_vasprintf vasprintf +#endif #else -- 2.34.1