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