diff --git a/dbus-glib-0.73-ignore-namespaces.patch b/dbus-glib-0.73-ignore-namespaces.patch new file mode 100644 index 0000000..0857fcf --- /dev/null +++ b/dbus-glib-0.73-ignore-namespaces.patch @@ -0,0 +1,69 @@ +diff --git a/dbus/dbus-gparser.c b/dbus/dbus-gparser.c +index f296f96..cdd4e53 100644 +--- a/dbus/dbus-gparser.c ++++ b/dbus/dbus-gparser.c +@@ -128,13 +128,17 @@ locate_attributes (const char *element_name, + + 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 *parser, + } + 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 ++ g_set_error (error, G_MARKUP_ERROR, ++ G_MARKUP_ERROR_PARSE, ++ _("Element <%s> not recognized"), ++ element_name); + } + + return TRUE; +@@ -844,6 +853,11 @@ 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 + g_assert_not_reached (); /* should have had an error on start_element */ + + diff --git a/dbus-glib.spec b/dbus-glib.spec index 0227669..5eb2354 100644 --- a/dbus-glib.spec +++ b/dbus-glib.spec @@ -8,12 +8,13 @@ Summary: GLib bindings for D-Bus Name: dbus-glib Version: 0.74 -Release: 2%{?dist} +Release: 3%{?dist} URL: http://www.freedesktop.org/software/dbus/ Source0: http://dbus.freedesktop.org/releases/dbus-glib/%{name}-%{version}.tar.gz Source1: dbus-bus-introspect.xml Patch0: broken-xml.patch Patch1: dbus-glib-proxy-signals-once.patch +Patch2: dbus-glib-0.73-ignore-namespaces.patch License: AFL/GPL Group: System Environment/Libraries BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) @@ -61,6 +62,7 @@ D-Bus tools written using the gtk+ GUI libaries %setup -q %patch0 -p1 -b .broken-xml %patch1 -p1 -b .proxy-signals-once +%patch2 -p1 -b .ignore-namespaces %build @@ -116,6 +118,9 @@ rm -rf %{buildroot} %endif %changelog +* Tue Feb 12 2008 Dan Williams - 0.74-3 +- Ignore namespaces in introspection XML + * Sun Nov 18 2007 Dan Williams - 0.74-2 - Actually apply the patch for fdo #12505