Annotation of embedaddon/libxml2/doc/tutorial/includeconvert.c, revision 1.1.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>