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>