Annotation of embedaddon/libxml2/doc/tutorial/includeconvert.c, revision 1.1
1.1 ! misho 1: <![CDATA[
! 2: #include <string.h>
! 3: #include <libxml/parser.h>
! 4:
! 5:
! 6: unsigned char*
! 7: convert (unsigned char *in, char *encoding)
! 8: {
! 9: unsigned char *out;
! 10: int ret,size,out_size,temp;
! 11: xmlCharEncodingHandlerPtr handler;
! 12:
! 13: size = (int)strlen(in)+1;
! 14: out_size = size*2-1;
! 15: out = malloc((size_t)out_size);
! 16:
! 17: if (out) {
! 18: handler = xmlFindCharEncodingHandler(encoding);
! 19:
! 20: if (!handler) {
! 21: free(out);
! 22: out = NULL;
! 23: }
! 24: }
! 25: if (out) {
! 26: temp=size-1;
! 27: ret = handler->input(out, &out_size, in, &temp);
! 28: if (ret || temp-size+1) {
! 29: if (ret) {
! 30: printf("conversion wasn't successful.\n");
! 31: } else {
! 32: printf("conversion wasn't successful. converted: %i octets.\n",temp);
! 33: }
! 34: free(out);
! 35: out = NULL;
! 36: } else {
! 37: out = realloc(out,out_size+1);
! 38: out[out_size]=0; /*null terminating out*/
! 39:
! 40: }
! 41: } else {
! 42: printf("no mem\n");
! 43: }
! 44: return (out);
! 45: }
! 46:
! 47:
! 48: int
! 49: main(int argc, char **argv) {
! 50:
! 51: unsigned char *content, *out;
! 52: xmlDocPtr doc;
! 53: xmlNodePtr rootnode;
! 54: char *encoding = "ISO-8859-1";
! 55:
! 56:
! 57: if (argc <= 1) {
! 58: printf("Usage: %s content\n", argv[0]);
! 59: return(0);
! 60: }
! 61:
! 62: content = argv[1];
! 63:
! 64: out = convert(content, encoding);
! 65:
! 66: doc = xmlNewDoc ("1.0");
! 67: rootnode = xmlNewDocNode(doc, NULL, (const xmlChar*)"root", out);
! 68: xmlDocSetRootElement(doc, rootnode);
! 69:
! 70: xmlSaveFormatFileEnc("-", doc, encoding, 1);
! 71: return (1);
! 72: }
! 73: ]]>
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>