Add g_set_error_literal. Bug #535947.
authorChristian Persch <chpe@src.gnome.org>
Mon, 16 Jun 2008 16:41:01 +0000 (16:41 +0000)
committerChristian Persch <chpe@src.gnome.org>
Mon, 16 Jun 2008 16:41:01 +0000 (16:41 +0000)
svn path=/trunk/; revision=7050

ChangeLog
docs/reference/glib/glib-sections.txt
glib/gerror.c
glib/gerror.h
glib/glib.symbols

index d45bb41..e44f4f7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-06-16  Christian Persch  <chpe@gnome.org>
+
+       * docs/reference/glib/glib-sections.txt:
+       * glib/gerror.c:
+       * glib/gerror.h:
+       * glib/glib.symbols: Add g_set_error_literal. Bug #535947.
+
 2008-06-16  Michael Natterer  <mitch@imendio.com>
 
        * glib/goption.c (dgettext_swapped): changed return value to
index da1a67d..577929b 100644 (file)
@@ -386,6 +386,7 @@ g_error_free
 g_error_copy
 g_error_matches
 g_set_error
+g_set_error_literal
 g_propagate_error
 g_clear_error
 g_prefix_error
index 9756a3e..dfb52fe 100644 (file)
@@ -212,6 +212,37 @@ g_set_error (GError      **err,
 }
 
 /**
+ * g_set_error_literal:
+ * @err: a return location for a #GError, or %NULL
+ * @domain: error domain
+ * @code: error code 
+ * @message: error message
+ *
+ * Does nothing if @err is %NULL; if @err is non-%NULL, then *@err must
+ * be %NULL. A new #GError is created and assigned to *@err.
+ * Unlike g_set_error(), @message is not a printf()-style format string.
+ * Use this function if @message contains text you don't have control over,
+ * that could include printf() escape sequences.
+ **/
+void
+g_set_error_literal (GError      **err,
+                     GQuark        domain,
+                     gint          code,
+                     const gchar  *message)
+{
+  GError *new;
+  
+  if (err == NULL)
+    return;
+
+  new = g_error_new_literal (domain, code, message);
+  if (*err == NULL)
+    *err = new;
+  else
+    g_warning (ERROR_OVERWRITTEN_WARNING, new->message);    
+}
+
+/**
  * g_propagate_error:
  * @dest: error return location
  * @src: error to move into the return location
index cd5aa24..d3d42d5 100644 (file)
@@ -63,6 +63,11 @@ void     g_set_error           (GError       **err,
                                 const gchar   *format,
                                 ...) G_GNUC_PRINTF (4, 5);
 
+void     g_set_error_literal   (GError       **err,
+                                GQuark         domain,
+                                gint           code,
+                                const gchar   *message);
+
 /* if (dest) *dest = src; also has some sanity checks.
  */
 void     g_propagate_error     (GError       **dest,
index c201aed..305db1d 100644 (file)
@@ -336,6 +336,7 @@ g_error_new G_GNUC_PRINTF(3,4)
 g_error_new_literal
 g_propagate_error
 g_set_error G_GNUC_PRINTF(4,5)
+g_set_error_literal
 g_prefix_error G_GNUC_PRINTF(2,3)
 g_propagate_prefixed_error G_GNUC_PRINTF(3,4)
 #endif