mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-01-12 15:36:17 +01:00
new functions g_prefix_error and g_propagate_prefixed_error.
2006-11-15 Ryan Lortie <desrt@desrt.ca> * docs/reference/glib/glib-sections.txt: * glib/glib.symbols: * glib/gerror.h: * glib/gerror.c: new functions g_prefix_error and g_propagate_prefixed_error. svn path=/trunk/; revision=5859
This commit is contained in:
parent
2eca1b529f
commit
f2a5aa6700
@ -1,3 +1,11 @@
|
|||||||
|
2006-11-15 Ryan Lortie <desrt@desrt.ca>
|
||||||
|
|
||||||
|
* docs/reference/glib/glib-sections.txt:
|
||||||
|
* glib/glib.symbols:
|
||||||
|
* glib/gerror.h:
|
||||||
|
* glib/gerror.c: new functions g_prefix_error and
|
||||||
|
g_propagate_prefixed_error.
|
||||||
|
|
||||||
2007-11-13 Cody Russell <bratsche@gnome.org>
|
2007-11-13 Cody Russell <bratsche@gnome.org>
|
||||||
|
|
||||||
* docs/reference/gobject/gobject-docs.sgml:
|
* docs/reference/gobject/gobject-docs.sgml:
|
||||||
|
@ -386,6 +386,8 @@ g_error_matches
|
|||||||
g_set_error
|
g_set_error
|
||||||
g_propagate_error
|
g_propagate_error
|
||||||
g_clear_error
|
g_clear_error
|
||||||
|
g_prefix_error
|
||||||
|
g_propagate_prefixed_error
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
<SECTION>
|
<SECTION>
|
||||||
|
@ -257,5 +257,82 @@ g_clear_error (GError **err)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
g_error_add_prefix (gchar **string,
|
||||||
|
const gchar *format,
|
||||||
|
va_list ap)
|
||||||
|
{
|
||||||
|
gchar *oldstring;
|
||||||
|
gchar *prefix;
|
||||||
|
|
||||||
|
prefix = g_strdup_vprintf (format, ap);
|
||||||
|
oldstring = *string;
|
||||||
|
*string = g_strjoin ("", prefix, oldstring, NULL);
|
||||||
|
g_free (oldstring);
|
||||||
|
g_free (prefix);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_prefix_error:
|
||||||
|
* @err: a return location for a #GError, or %NULL
|
||||||
|
* @format: printf()-style format string
|
||||||
|
* ...: arguments to @format
|
||||||
|
*
|
||||||
|
* Formats a string according to @format and
|
||||||
|
* prefix it to an existing error message. If
|
||||||
|
* @err is %NULL (ie: no error variable) then do
|
||||||
|
* nothing.
|
||||||
|
*
|
||||||
|
* If *@err is %NULL (ie: an error variable is
|
||||||
|
* present but there is no error condition) then
|
||||||
|
* also do nothing. Whether or not it makes
|
||||||
|
* sense to take advantage of this feature is up
|
||||||
|
* to you.
|
||||||
|
**/
|
||||||
|
void
|
||||||
|
g_prefix_error (GError **err,
|
||||||
|
const gchar *format,
|
||||||
|
...)
|
||||||
|
{
|
||||||
|
if (err && *err)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
|
||||||
|
va_start (ap, format);
|
||||||
|
g_error_add_prefix (&(*err)->message, format, ap);
|
||||||
|
va_end (ap);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_propagate_prefixed_error:
|
||||||
|
* @dest: error return location
|
||||||
|
* @src: error to move into the return location
|
||||||
|
* @format: printf()-style format string
|
||||||
|
* ...: arguments to @format
|
||||||
|
*
|
||||||
|
* If @dest is %NULL, free @src; otherwise,
|
||||||
|
* moves @src into *@dest. *@dest must be %NULL.
|
||||||
|
* After the move, add a prefix as with
|
||||||
|
* g_prefix_error().
|
||||||
|
**/
|
||||||
|
void
|
||||||
|
g_propagate_prefixed_error (GError **dest,
|
||||||
|
GError *src,
|
||||||
|
const gchar *format,
|
||||||
|
...)
|
||||||
|
{
|
||||||
|
g_propagate_error (dest, src);
|
||||||
|
|
||||||
|
if (dest && *dest)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
|
||||||
|
va_start (ap, format);
|
||||||
|
g_error_add_prefix (&(*dest)->message, format, ap);
|
||||||
|
va_end (ap);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#define __G_ERROR_C__
|
#define __G_ERROR_C__
|
||||||
#include "galiasdef.c"
|
#include "galiasdef.c"
|
||||||
|
@ -67,6 +67,16 @@ void g_propagate_error (GError **dest,
|
|||||||
/* if (err && *err) { g_error_free(*err); *err = NULL; } */
|
/* if (err && *err) { g_error_free(*err); *err = NULL; } */
|
||||||
void g_clear_error (GError **err);
|
void g_clear_error (GError **err);
|
||||||
|
|
||||||
|
/* if (err) prefix the formatted string to the ->message */
|
||||||
|
void g_prefix_error (GError **err,
|
||||||
|
const gchar *format,
|
||||||
|
...) G_GNUC_PRINTF (2, 3);
|
||||||
|
|
||||||
|
/* g_propagate_error then g_error_prefix on dest */
|
||||||
|
void g_propagate_prefixed_error (GError **dest,
|
||||||
|
GError *src,
|
||||||
|
const gchar *format,
|
||||||
|
...) G_GNUC_PRINTF (3, 4);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
|
@ -320,6 +320,8 @@ g_error_new G_GNUC_PRINTF(3,4)
|
|||||||
g_error_new_literal
|
g_error_new_literal
|
||||||
g_propagate_error
|
g_propagate_error
|
||||||
g_set_error G_GNUC_PRINTF(4,5)
|
g_set_error G_GNUC_PRINTF(4,5)
|
||||||
|
g_prefix_error G_GNUC_PRINTF(2,3)
|
||||||
|
g_propagate_prefixed_error G_GNUC_PRINTF(3,4)
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user