libpurple/protocols/jabber/parser.c

branch
soc.2013.gobjectification.plugins
changeset 36692
324db2a53c4c
parent 34935
686fa55b0deb
child 35042
c284eef5cd26
equal deleted inserted replaced
36691:92122af1f083 36692:324db2a53c4c
36 const xmlChar *element_name, const xmlChar *prefix, const xmlChar *namespace, 36 const xmlChar *element_name, const xmlChar *prefix, const xmlChar *namespace,
37 int nb_namespaces, const xmlChar **namespaces, 37 int nb_namespaces, const xmlChar **namespaces,
38 int nb_attributes, int nb_defaulted, const xmlChar **attributes) 38 int nb_attributes, int nb_defaulted, const xmlChar **attributes)
39 { 39 {
40 JabberStream *js = user_data; 40 JabberStream *js = user_data;
41 xmlnode *node; 41 PurpleXmlNode *node;
42 int i, j; 42 int i, j;
43 43
44 if(!element_name) { 44 if(!element_name) {
45 return; 45 return;
46 } else if (js->stream_id == NULL) { 46 } else if (js->stream_id == NULL) {
113 #endif 113 #endif
114 } 114 }
115 } else { 115 } else {
116 116
117 if(js->current) 117 if(js->current)
118 node = xmlnode_new_child(js->current, (const char*) element_name); 118 node = purple_xmlnode_new_child(js->current, (const char*) element_name);
119 else 119 else
120 node = xmlnode_new((const char*) element_name); 120 node = purple_xmlnode_new((const char*) element_name);
121 xmlnode_set_namespace(node, (const char*) namespace); 121 purple_xmlnode_set_namespace(node, (const char*) namespace);
122 xmlnode_set_prefix(node, (const char *)prefix); 122 purple_xmlnode_set_prefix(node, (const char *)prefix);
123 123
124 if (nb_namespaces != 0) { 124 if (nb_namespaces != 0) {
125 node->namespace_map = g_hash_table_new_full( 125 node->namespace_map = g_hash_table_new_full(
126 g_str_hash, g_str_equal, g_free, g_free); 126 g_str_hash, g_str_equal, g_free, g_free);
127 127
141 char *attrib = g_strndup((gchar *)attributes[i+3], attrib_len); 141 char *attrib = g_strndup((gchar *)attributes[i+3], attrib_len);
142 142
143 txt = attrib; 143 txt = attrib;
144 attrib = purple_unescape_text(txt); 144 attrib = purple_unescape_text(txt);
145 g_free(txt); 145 g_free(txt);
146 xmlnode_set_attrib_full(node, name, attrib_ns, prefix, attrib); 146 purple_xmlnode_set_attrib_full(node, name, attrib_ns, prefix, attrib);
147 g_free(attrib); 147 g_free(attrib);
148 } 148 }
149 149
150 js->current = node; 150 js->current = node;
151 } 151 }
162 162
163 if(js->current->parent) { 163 if(js->current->parent) {
164 if(!xmlStrcmp((xmlChar*) js->current->name, element_name)) 164 if(!xmlStrcmp((xmlChar*) js->current->name, element_name))
165 js->current = js->current->parent; 165 js->current = js->current->parent;
166 } else { 166 } else {
167 xmlnode *packet = js->current; 167 PurpleXmlNode *packet = js->current;
168 js->current = NULL; 168 js->current = NULL;
169 jabber_process_packet(js, &packet); 169 jabber_process_packet(js, &packet);
170 if (packet != NULL) 170 if (packet != NULL)
171 xmlnode_free(packet); 171 purple_xmlnode_free(packet);
172 } 172 }
173 } 173 }
174 174
175 static void 175 static void
176 jabber_parser_element_text_libxml(void *user_data, const xmlChar *text, int text_len) 176 jabber_parser_element_text_libxml(void *user_data, const xmlChar *text, int text_len)
181 return; 181 return;
182 182
183 if(!text || !text_len) 183 if(!text || !text_len)
184 return; 184 return;
185 185
186 xmlnode_insert_data(js->current, (const char*) text, text_len); 186 purple_xmlnode_insert_data(js->current, (const char*) text, text_len);
187 } 187 }
188 188
189 static void 189 static void
190 jabber_parser_structured_error_handler(void *user_data, xmlErrorPtr error) 190 jabber_parser_structured_error_handler(void *user_data, xmlErrorPtr error)
191 { 191 {

mercurial