]> git.pld-linux.org Git - packages/dbus-glib.git/blob - dbus-glib-bug14429.patch
- 0.76
[packages/dbus-glib.git] / dbus-glib-bug14429.patch
1 diff -up dbus-glib-0.73/dbus/dbus-gparser.c.ignore-namespaces dbus-glib-0.73/dbus/dbus-gparser.c
2 --- dbus-glib-0.73/dbus/dbus-gparser.c.ignore-namespaces        2006-09-27 08:27:24.000000000 -0400
3 +++ dbus-glib-0.73/dbus/dbus-gparser.c  2008-03-13 08:54:14.000000000 -0400
4 @@ -128,13 +128,17 @@ locate_attributes (const char  *element_
5  
6        if (!found)
7          {
8 -          g_set_error (error,
9 -                       G_MARKUP_ERROR,
10 -                       G_MARKUP_ERROR_PARSE,
11 -                       _("Attribute \"%s\" is invalid on <%s> element in this context"),
12 -                       attribute_names[i], element_name);
13 -          retval = FALSE;
14 -          goto out;
15 +          /* We want to passthrough namespaced XML nodes that we don't know anything about. */
16 +          if (strchr (attribute_names[i], ':') == NULL)
17 +            {
18 +              g_set_error (error,
19 +                           G_MARKUP_ERROR,
20 +                           G_MARKUP_ERROR_PARSE,
21 +                           _("Attribute \"%s\" is invalid on <%s> element in this context"),
22 +                           attribute_names[i], element_name);
23 +              retval = FALSE;
24 +              goto out;
25 +            }
26          }
27  
28        ++i;
29 @@ -177,6 +181,7 @@ struct Parser
30    PropertyInfo *property;
31    ArgInfo *arg;
32    gboolean in_annotation;
33 +  guint unknown_namespaced_depth;
34  };
35  
36  Parser*
37 @@ -791,10 +796,14 @@ parser_start_element (Parser      *parse
38      }
39    else
40      {
41 -      g_set_error (error, G_MARKUP_ERROR,
42 -                   G_MARKUP_ERROR_PARSE,
43 -                   _("Element <%s> not recognized"),
44 -                   element_name);
45 +      if (strchr (element_name, ':') != NULL)
46 +        /* Passthrough XML-namespaced nodes */
47 +        parser->unknown_namespaced_depth += 1;
48 +      else if (parser->unknown_namespaced_depth == 0)
49 +        g_set_error (error, G_MARKUP_ERROR,
50 +                     G_MARKUP_ERROR_PARSE,
51 +                     _("Element <%s> not recognized"),
52 +                     element_name);
53      }
54    
55    return TRUE;
56 @@ -844,6 +853,15 @@ parser_end_element (Parser      *parser,
57        if (parser->node_stack == NULL)
58          parser->result = top; /* We are done, store the result */      
59      }
60 +  else if (strchr (element_name, ':') != NULL)
61 +    {
62 +      /* Passthrough XML-namespaced nodes */
63 +      parser->unknown_namespaced_depth -= 1;
64 +    }
65 +  else if (parser->unknown_namespaced_depth > 0)
66 +    {
67 +               /* pass through unknown elements underneath a namespace */
68 +    }
69    else
70      g_assert_not_reached (); /* should have had an error on start_element */
71    
72 diff -up dbus-glib-0.73/dbus/dbus-glib-tool.c.ignore-namespaces dbus-glib-0.73/dbus/dbus-glib-tool.c
73 --- dbus-glib-0.73/dbus/dbus-glib-tool.c.ignore-namespaces      2008-03-13 08:31:21.000000000 -0400
74 +++ dbus-glib-0.73/dbus/dbus-glib-tool.c        2008-03-13 08:32:15.000000000 -0400
75 @@ -414,7 +414,7 @@ main (int argc, char **argv)
76                                           &error);
77        if (node == NULL)
78          {
79 -         lose_gerror (_("Unable to load \"%s\""), error);
80 +         lose (_("Unable to load \"%s\": %s"), filename, error->message);
81          }
82        else
83         {
This page took 0.061372 seconds and 3 git commands to generate.