[girepository] Fix up error printing

We didn't show the right error message if we failed to find
the symbol; fix this by removing error printing from the
middle of the dumper, and add it correctly to the toplevel
dump entry point.
This commit is contained in:
Colin Walters 2010-07-31 06:22:52 -04:00
parent f552f46f88
commit 9b1bb64e83
2 changed files with 19 additions and 4 deletions

12
gdump.c
View File

@ -68,6 +68,7 @@ static GType
invoke_get_type (GModule *self, const char *symbol, GError **error)
{
GetTypeFunc sym;
GType ret;
if (!g_module_symbol (self, symbol, (void**)&sym))
{
@ -78,7 +79,15 @@ invoke_get_type (GModule *self, const char *symbol, GError **error)
return G_TYPE_INVALID;
}
return sym ();
ret = sym ();
if (ret == G_TYPE_INVALID)
{
g_set_error (error,
G_IO_ERROR,
G_IO_ERROR_FAILED,
"Function '%s' returned G_TYPE_INVALID", symbol);
}
return ret;
}
static void
@ -429,7 +438,6 @@ g_irepository_dump (const char *arg, GError **error)
if (type == G_TYPE_INVALID)
{
g_printerr ("Invalid GType: '%s'\n", line);
caught_error = TRUE;
g_free (line);
break;

View File

@ -1378,8 +1378,15 @@ g_irepository_introspect_cb (const char *option_name,
gpointer data,
GError **error)
{
gboolean ret = g_irepository_dump (value, error);
exit (ret ? 0 : 1);
GError *tmp_error = NULL;
gboolean ret = g_irepository_dump (value, &tmp_error);
if (!ret)
{
g_error ("Failed to extract GType data: %s",
tmp_error->message);
exit (1);
}
exit (0);
}
static const GOptionEntry introspection_args[] = {