A GOptionArgFunc should return gboolean and take also a GError pointer

2009-01-12  Tor Lillqvist  <tml@iki.fi>

	* gdk/gdk.c (gdk_arg_debug_cb) (gdk_arg_no_debug_cb): A
	GOptionArgFunc should return gboolean and take also a GError
	pointer parameter, so make these two functions do that. Return
	FALSE (and set the GError) if the parsing of the debug string
	failed completely. Note that g_parse_debug_string() doesn't really
	have any way to return parsing status, and accepts partially
	incorrect strings, though.


svn path=/branches/gtk-2-14/; revision=22094
This commit is contained in:
Tor Lillqvist
2009-01-12 12:00:08 +00:00
committed by Tor Lillqvist
parent d0ba0322a6
commit 3f2474a0d4
2 changed files with 42 additions and 8 deletions

View File

@@ -1,3 +1,13 @@
2009-01-12 Tor Lillqvist <tml@iki.fi>
* gdk/gdk.c (gdk_arg_debug_cb) (gdk_arg_no_debug_cb): A
GOptionArgFunc should return gboolean and take also a GError
pointer parameter, so make these two functions do that. Return
FALSE (and set the GError) if the parsing of the debug string
failed completely. Note that g_parse_debug_string() doesn't really
have any way to return parsing status, and accepts partially
incorrect strings, though.
2009-01-12 Claudio Saavedra <csaavedra@igalia.com>
Bug 567468 no check for trailing != NULL in

View File

@@ -88,20 +88,44 @@ static const int gdk_ndebug_keys = G_N_ELEMENTS (gdk_debug_keys);
#endif /* G_ENABLE_DEBUG */
#ifdef G_ENABLE_DEBUG
static void
gdk_arg_debug_cb (const char *key, const char *value, gpointer user_data)
static gboolean
gdk_arg_debug_cb (const char *key, const char *value, gpointer user_data, GError **error)
{
_gdk_debug_flags |= g_parse_debug_string (value,
guint debug_value = g_parse_debug_string (value,
(GDebugKey *) gdk_debug_keys,
gdk_ndebug_keys);
if (debug_value == 0 && value != NULL && strcmp (value, "") != 0)
{
g_set_error (error,
G_OPTION_ERROR, G_OPTION_ERROR_FAILED,
"Error parsing option --gdk-debug");
return FALSE;
}
_gdk_debug_flags |= debug_value;
return TRUE;
}
static void
gdk_arg_no_debug_cb (const char *key, const char *value, gpointer user_data)
static gboolean
gdk_arg_no_debug_cb (const char *key, const char *value, gpointer user_data, GError **error)
{
_gdk_debug_flags &= ~g_parse_debug_string (value,
(GDebugKey *) gdk_debug_keys,
gdk_ndebug_keys);
guint debug_value = g_parse_debug_string (value,
(GDebugKey *) gdk_debug_keys,
gdk_ndebug_keys);
if (debug_value == 0 && value != NULL && strcmp (value, "") != 0)
{
g_set_error (error,
G_OPTION_ERROR, G_OPTION_ERROR_FAILED,
"Error parsing option --gdk-no-debug");
return FALSE;
}
_gdk_debug_flags &= ~debug_value;
return TRUE;
}
#endif /* G_ENABLE_DEBUG */