| 568 (node && node->name) ? node->name : "(NULL)"); |
568 (node && node->name) ? node->name : "(NULL)"); |
| 569 break; |
569 break; |
| 570 |
570 |
| 571 case XMLNODE_TYPE_DATA: |
571 case XMLNODE_TYPE_DATA: |
| 572 /* Literal text. */ |
572 /* Literal text. */ |
| 573 inner = g_new0(char, node->data_sz + 1); |
573 inner = g_strndup(node->data, node->data_sz); |
| 574 strncpy(inner, node->data, node->data_sz); |
|
| 575 inner[node->data_sz] = 0; |
|
| 576 |
|
| 577 purple_debug_info("msim", " ** node data=%s\n", |
574 purple_debug_info("msim", " ** node data=%s\n", |
| 578 inner ? inner : "(NULL)"); |
575 inner ? inner : "(NULL)"); |
| 579 break; |
576 break; |
| 580 |
577 |
| 581 default: |
578 default: |
| 584 inner = g_strdup(""); |
581 inner = g_strdup(""); |
| 585 } |
582 } |
| 586 |
583 |
| 587 if (inner) { |
584 if (inner) { |
| 588 g_string_append(final, inner); |
585 g_string_append(final, inner); |
| |
586 g_free(inner); |
| |
587 inner = NULL; |
| 589 } |
588 } |
| 590 } |
589 } |
| 591 |
590 |
| 592 /* TODO: Note that msim counts each piece of text enclosed by <f> as |
591 /* TODO: Note that msim counts each piece of text enclosed by <f> as |
| 593 * a paragraph and will display each on its own line. You actually have |
592 * a paragraph and will display each on its own line. You actually have |
| 594 * to _nest_ <f> tags to intersperse different text in one paragraph! |
593 * to _nest_ <f> tags to intersperse different text in one paragraph! |
| 595 * Comment out this line below to see. */ |
594 * Comment out this line below to see. */ |
| 596 g_string_append(final, end); |
595 g_string_append(final, end); |
| |
596 |
| |
597 g_free(begin); |
| |
598 g_free(end); |
| 597 |
599 |
| 598 purple_debug_info("msim", "msim_markup_xmlnode_to_gtkhtml: RETURNING %s\n", |
600 purple_debug_info("msim", "msim_markup_xmlnode_to_gtkhtml: RETURNING %s\n", |
| 599 (final && final->str) ? final->str : "(NULL)"); |
601 (final && final->str) ? final->str : "(NULL)"); |
| 600 |
602 |
| 601 return g_string_free(final, FALSE); |
603 return g_string_free(final, FALSE); |