comparison finch/libgnt/gntutils.c @ 30668:a472bc05fa55

Fix parsing XHTML.
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Sun, 04 Jul 2010 02:12:51 +0000
parents 95adf9fe2fe2
children
comparison
equal deleted inserted replaced
30667:f55609d9bea5 30668:a472bc05fa55
383 util_parse_html_to_tv(xmlNode *node, GntTextView *tv, GntTextFormatFlags flag) 383 util_parse_html_to_tv(xmlNode *node, GntTextView *tv, GntTextFormatFlags flag)
384 { 384 {
385 const char *name; 385 const char *name;
386 char *content; 386 char *content;
387 xmlNode *ch; 387 xmlNode *ch;
388 gboolean processed = FALSE;
389 char *url = NULL; 388 char *url = NULL;
390 gboolean insert_nl_s = FALSE, insert_nl_e = FALSE; 389 gboolean insert_nl_s = FALSE, insert_nl_e = FALSE;
391 390
392 if (node == NULL || node->name == NULL || node->type != XML_ELEMENT_NODE) 391 if (node == NULL || node->name == NULL || node->type != XML_ELEMENT_NODE)
393 return; 392 return;
424 if (insert_nl_s) 423 if (insert_nl_s)
425 gnt_text_view_append_text_with_flags(tv, "\n", flag); 424 gnt_text_view_append_text_with_flags(tv, "\n", flag);
426 425
427 for (ch = node->children; ch; ch = ch->next) { 426 for (ch = node->children; ch; ch = ch->next) {
428 if (ch->type == XML_ELEMENT_NODE) { 427 if (ch->type == XML_ELEMENT_NODE) {
429 processed = TRUE;
430 util_parse_html_to_tv(ch, tv, flag); 428 util_parse_html_to_tv(ch, tv, flag);
431 } 429 } else if (ch->type == XML_TEXT_NODE) {
432 } 430 content = (char*)xmlNodeGetContent(ch);
433 431 gnt_text_view_append_text_with_flags(tv, content, flag);
434 if (!processed) { 432 xmlFree(content);
435 content = (char*)xmlNodeGetContent(node); 433 }
436 gnt_text_view_append_text_with_flags(tv, content, flag);
437 xmlFree(content);
438 } 434 }
439 435
440 if (url) { 436 if (url) {
441 char *href = g_strdup_printf(" (%s)", url); 437 char *href = g_strdup_printf(" (%s)", url);
442 gnt_text_view_append_text_with_flags(tv, href, flag); 438 gnt_text_view_append_text_with_flags(tv, href, flag);