Mercurial > pidgin.yaz
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); |