aboutsummaryrefslogtreecommitdiffstats
path: root/src/xml.c
diff options
context:
space:
mode:
authorPaul Eggert2011-07-27 17:15:43 -0700
committerPaul Eggert2011-07-27 17:15:43 -0700
commit2573a8376a387d19af355f68622512ac3e07d57a (patch)
tree1ffa01d9e12395ebbb8c3f3181d3b9ffdc8c1487 /src/xml.c
parent49b602e24ecb3fe085d45ac385e1bfda82252090 (diff)
parentdbf38e02c9ade4979418f24a99962cfef170b957 (diff)
downloademacs-2573a8376a387d19af355f68622512ac3e07d57a.tar.gz
emacs-2573a8376a387d19af355f68622512ac3e07d57a.zip
Merge from trunk.
Diffstat (limited to 'src/xml.c')
-rw-r--r--src/xml.c28
1 files changed, 24 insertions, 4 deletions
diff --git a/src/xml.c b/src/xml.c
index 63041c96b24..55352baae3a 100644
--- a/src/xml.c
+++ b/src/xml.c
@@ -71,6 +71,14 @@ make_dom (xmlNode *node)
71 else 71 else
72 return Qnil; 72 return Qnil;
73 } 73 }
74 else if (node->type == XML_COMMENT_NODE)
75 {
76 if (node->content)
77 return list3 (intern ("comment"), Qnil,
78 build_string ((char *) node->content));
79 else
80 return Qnil;
81 }
74 else 82 else
75 return Qnil; 83 return Qnil;
76} 84}
@@ -79,7 +87,6 @@ static Lisp_Object
79parse_region (Lisp_Object start, Lisp_Object end, Lisp_Object base_url, int htmlp) 87parse_region (Lisp_Object start, Lisp_Object end, Lisp_Object base_url, int htmlp)
80{ 88{
81 xmlDoc *doc; 89 xmlDoc *doc;
82 xmlNode *node;
83 Lisp_Object result = Qnil; 90 Lisp_Object result = Qnil;
84 const char *burl = ""; 91 const char *burl = "";
85 EMACS_INT bytes; 92 EMACS_INT bytes;
@@ -117,9 +124,22 @@ parse_region (Lisp_Object start, Lisp_Object end, Lisp_Object base_url, int html
117 124
118 if (doc != NULL) 125 if (doc != NULL)
119 { 126 {
120 node = xmlDocGetRootElement (doc); 127 xmlNode *n = doc->children->next;
121 if (node != NULL) 128 Lisp_Object r = Qnil;
122 result = make_dom (node); 129
130 while (n) {
131 if (!NILP (r))
132 result = Fcons (r, result);
133 r = make_dom (n);
134 n = n->next;
135 }
136
137 if (NILP (result))
138 result = r;
139 else
140 result = Fcons (intern ("top"),
141 Fcons (Qnil, Fnreverse (Fcons (r, result))));
142
123 xmlFreeDoc (doc); 143 xmlFreeDoc (doc);
124 xmlCleanupParser (); 144 xmlCleanupParser ();
125 } 145 }