82 lines
2.8 KiB
Diff
82 lines
2.8 KiB
Diff
|
--- dbus/dbus-gparser.c 2006-09-27 08:27:24.000000000 -0400
|
||
|
+++ dbus/dbus-gparser.c 2008-03-13 08:54:14.000000000 -0400
|
||
|
@@ -128,13 +128,17 @@ locate_attributes (const char *element_
|
||
|
|
||
|
if (!found)
|
||
|
{
|
||
|
- g_set_error (error,
|
||
|
- G_MARKUP_ERROR,
|
||
|
- G_MARKUP_ERROR_PARSE,
|
||
|
- _("Attribute \"%s\" is invalid on <%s> element in this context"),
|
||
|
- attribute_names[i], element_name);
|
||
|
- retval = FALSE;
|
||
|
- goto out;
|
||
|
+ /* We want to passthrough namespaced XML nodes that we don't know anything about. */
|
||
|
+ if (strchr (attribute_names[i], ':') == NULL)
|
||
|
+ {
|
||
|
+ g_set_error (error,
|
||
|
+ G_MARKUP_ERROR,
|
||
|
+ G_MARKUP_ERROR_PARSE,
|
||
|
+ _("Attribute \"%s\" is invalid on <%s> element in this context"),
|
||
|
+ attribute_names[i], element_name);
|
||
|
+ retval = FALSE;
|
||
|
+ goto out;
|
||
|
+ }
|
||
|
}
|
||
|
|
||
|
++i;
|
||
|
@@ -177,6 +181,7 @@ struct Parser
|
||
|
PropertyInfo *property;
|
||
|
ArgInfo *arg;
|
||
|
gboolean in_annotation;
|
||
|
+ guint unknown_namespaced_depth;
|
||
|
};
|
||
|
|
||
|
Parser*
|
||
|
@@ -791,10 +796,14 @@ parser_start_element (Parser *parse
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
- g_set_error (error, G_MARKUP_ERROR,
|
||
|
- G_MARKUP_ERROR_PARSE,
|
||
|
- _("Element <%s> not recognized"),
|
||
|
- element_name);
|
||
|
+ if (strchr (element_name, ':') != NULL)
|
||
|
+ /* Passthrough XML-namespaced nodes */
|
||
|
+ parser->unknown_namespaced_depth += 1;
|
||
|
+ else if (parser->unknown_namespaced_depth == 0)
|
||
|
+ g_set_error (error, G_MARKUP_ERROR,
|
||
|
+ G_MARKUP_ERROR_PARSE,
|
||
|
+ _("Element <%s> not recognized"),
|
||
|
+ element_name);
|
||
|
}
|
||
|
|
||
|
return TRUE;
|
||
|
@@ -844,6 +853,15 @@ parser_end_element (Parser *parser,
|
||
|
if (parser->node_stack == NULL)
|
||
|
parser->result = top; /* We are done, store the result */
|
||
|
}
|
||
|
+ else if (strchr (element_name, ':') != NULL)
|
||
|
+ {
|
||
|
+ /* Passthrough XML-namespaced nodes */
|
||
|
+ parser->unknown_namespaced_depth -= 1;
|
||
|
+ }
|
||
|
+ else if (parser->unknown_namespaced_depth > 0)
|
||
|
+ {
|
||
|
+ /* pass through unknown elements underneath a namespace */
|
||
|
+ }
|
||
|
else
|
||
|
g_assert_not_reached (); /* should have had an error on start_element */
|
||
|
|
||
|
--- dbus/dbus-glib-tool.c 2008-03-13 08:31:21.000000000 -0400
|
||
|
+++ dbus/dbus-glib-tool.c 2008-03-13 08:32:15.000000000 -0400
|
||
|
@@ -414,7 +414,7 @@ main (int argc, char **argv)
|
||
|
&error);
|
||
|
if (node == NULL)
|
||
|
{
|
||
|
- lose_gerror (_("Unable to load \"%s\""), error);
|
||
|
+ lose (_("Unable to load \"%s\": %s"), filename, error->message);
|
||
|
}
|
||
|
else
|
||
|
{
|