| 643 va_start(args, msg); |
643 va_start(args, msg); |
| 644 vsnprintf(errmsg, sizeof(errmsg), msg, args); |
644 vsnprintf(errmsg, sizeof(errmsg), msg, args); |
| 645 va_end(args); |
645 va_end(args); |
| 646 |
646 |
| 647 purple_debug_error("xmlnode", "Error parsing xml file: %s", errmsg); |
647 purple_debug_error("xmlnode", "Error parsing xml file: %s", errmsg); |
| |
648 } |
| |
649 |
| |
650 static void |
| |
651 xmlnode_parser_structural_error_libxml(void *user_data, xmlErrorPtr error) |
| |
652 { |
| |
653 struct _xmlnode_parser_data *xpd = user_data; |
| |
654 |
| |
655 if (error && (error->level == XML_ERR_ERROR || |
| |
656 error->level == XML_ERR_FATAL)) { |
| |
657 xpd->error = TRUE; |
| |
658 purple_debug_error("xmlnode", "XML parser error for xmlnode %p: " |
| |
659 "Domain %i, code %i, level %i: %s", |
| |
660 user_data, error->domain, error->code, error->level, |
| |
661 error->message ? error->message : "(null)\n"); |
| |
662 } else if (error) |
| |
663 purple_debug_warning("xmlnode", "XML parser error for xmlnode %p: " |
| |
664 "Domain %i, code %i, level %i: %s", |
| |
665 user_data, error->domain, error->code, error->level, |
| |
666 error->message ? error->message : "(null)\n"); |
| |
667 else |
| |
668 purple_debug_warning("xmlnode", "XML parser error for xmlnode %p\n", |
| |
669 user_data); |
| 648 } |
670 } |
| 649 |
671 |
| 650 static xmlSAXHandler xmlnode_parser_libxml = { |
672 static xmlSAXHandler xmlnode_parser_libxml = { |
| 651 NULL, /* internalSubset */ |
673 NULL, /* internalSubset */ |
| 652 NULL, /* isStandalone */ |
674 NULL, /* isStandalone */ |
| 677 NULL, /* externalSubset */ |
699 NULL, /* externalSubset */ |
| 678 XML_SAX2_MAGIC, /* initialized */ |
700 XML_SAX2_MAGIC, /* initialized */ |
| 679 NULL, /* _private */ |
701 NULL, /* _private */ |
| 680 xmlnode_parser_element_start_libxml, /* startElementNs */ |
702 xmlnode_parser_element_start_libxml, /* startElementNs */ |
| 681 xmlnode_parser_element_end_libxml, /* endElementNs */ |
703 xmlnode_parser_element_end_libxml, /* endElementNs */ |
| 682 NULL, /* serror */ |
704 xmlnode_parser_structural_error_libxml, /* serror */ |
| 683 }; |
705 }; |
| 684 |
706 |
| 685 xmlnode * |
707 xmlnode * |
| 686 xmlnode_from_str(const char *str, gssize size) |
708 xmlnode_from_str(const char *str, gssize size) |
| 687 { |
709 { |