diff -bru glib-2.6.0/glib/gstring.c glib-2.6.0-g_string_vprintf/glib/gstring.c
--- glib-2.6.0/glib/gstring.c	2005-01-18 10:57:37.984102136 +0100
+++ glib-2.6.0-g_string_vprintf/glib/gstring.c	2005-01-18 11:24:47.983304592 +0100
@@ -820,19 +820,6 @@
   return string;
 }
 
-static void
-g_string_append_printf_internal (GString     *string,
-				 const gchar *fmt,
-				 va_list      args)
-{
-  gchar *buffer;
-  gint length;
-  
-  length = g_vasprintf (&buffer, fmt, args);
-  g_string_append_len (string, buffer, length);
-  g_free (buffer);
-}
-
 void
 g_string_printf (GString *string,
 		 const gchar *fmt,
@@ -840,10 +827,8 @@
 {
   va_list args;
 
-  g_string_truncate (string, 0);
-
   va_start (args, fmt);
-  g_string_append_printf_internal (string, fmt, args);
+  g_string_vprintf (string, fmt, args);
   va_end (args);
 }
 
@@ -855,6 +840,29 @@
   va_list args;
 
   va_start (args, fmt);
-  g_string_append_printf_internal (string, fmt, args);
+  g_string_append_vprintf (string, fmt, args);
   va_end (args);
 }
+
+void         
+g_string_vprintf (GString *string,
+		  const gchar *fmt,
+		  va_list args)
+{
+  g_string_truncate (string, 0);
+  g_string_append_vprintf (string, fmt, args);
+}
+
+void
+g_string_append_vprintf (GString *string,
+			 const gchar *fmt,
+			 va_list args)
+{
+  gchar *buffer;
+  gint length;
+  
+  length = g_vasprintf (&buffer, fmt, args);
+  g_string_append_len (string, buffer, length);
+  g_free (buffer);
+}
+
diff -bru glib-2.6.0/glib/gstring.h glib-2.6.0-g_string_vprintf/glib/gstring.h
--- glib-2.6.0/glib/gstring.h	2005-01-18 10:57:37.985101984 +0100
+++ glib-2.6.0-g_string_vprintf/glib/gstring.h	2005-01-18 11:00:30.785832280 +0100
@@ -115,6 +115,12 @@
 void         g_string_append_printf     (GString	 *string,
 					 const gchar	 *format,
 					 ...) G_GNUC_PRINTF (2, 3);
+void         g_string_vprintf           (GString	 *string,
+					 const gchar	 *format,
+					 va_list	 args);
+void         g_string_append_vprintf    (GString	 *string,
+					 const gchar	 *format,
+					 va_list	 args);
 
 /* -- optimize g_strig_append_c --- */
 #ifdef G_CAN_INLINE

