Changes in lib/xmltree.c [4452e69:daae10f]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
lib/xmltree.c
r4452e69 rdaae10f 141 141 /* Feed the parser, don't execute any handler. Returns -1 on errors, 0 on 142 142 end-of-stream and 1 otherwise. */ 143 int xt_feed( struct xt_parser *xt, c onst char *text, int text_len )143 int xt_feed( struct xt_parser *xt, char *text, int text_len ) 144 144 { 145 145 if( !g_markup_parse_context_parse( xt->parser, text, text_len, &xt->gerr ) ) … … 174 174 if( node->flags & XT_COMPLETE && !( node->flags & XT_SEEN ) ) 175 175 { 176 if( xt->handlers )for( i = 0; xt->handlers[i].func; i ++ )176 for( i = 0; xt->handlers[i].func; i ++ ) 177 177 { 178 178 /* This one is fun! \o/ */ 179 179 180 180 /* If handler.name == NULL it means it should always match. */ 181 181 if( ( xt->handlers[i].name == NULL || 182 182 /* If it's not, compare. There should always be a name. */ 183 183 g_strcasecmp( xt->handlers[i].name, node->name ) == 0 ) && 184 184 /* If handler.parent == NULL, it's a match. */ 185 185 ( xt->handlers[i].parent == NULL || 186 186 /* If there's a parent node, see if the name matches. */ 187 187 ( node->parent ? g_strcasecmp( xt->handlers[i].parent, node->parent->name ) == 0 : 188 189 strcmp( xt->handlers[i].parent, "<root>" ) == 0 ) ) )188 /* If there's no parent, the handler should mention <root> as a parent. */ 189 g_strcasecmp( xt->handlers[i].parent, "<root>" ) == 0 ) ) ) 190 190 { 191 191 st = xt->handlers[i].func( node, xt->data ); … … 260 260 } 261 261 262 struct xt_node *xt_from_string( const char *in )263 {264 struct xt_parser *parser;265 struct xt_node *ret;266 267 parser = xt_new( NULL, NULL );268 xt_feed( parser, in, strlen( in ) );269 ret = parser->root;270 parser->root = NULL;271 xt_free( parser );272 273 return ret;274 }275 276 262 static void xt_to_string_real( struct xt_node *node, GString *str ) 277 263 { … … 564 550 } 565 551 566 /* Same, but at the beginning. */567 void xt_insert_child( struct xt_node *parent, struct xt_node *child )568 {569 struct xt_node *node, *last;570 571 for( node = child; node; node = node->next )572 {573 if( node->parent != NULL )574 {575 /* ERROR CONDITION: They seem to have a parent already??? */576 }577 578 node->parent = parent;579 last = node;580 }581 582 last->next = parent->children;583 parent->children = child;584 }585 586 552 void xt_add_attr( struct xt_node *node, const char *key, const char *value ) 587 553 {
Note: See TracChangeset
for help on using the changeset viewer.