Annotation of XML/testHTML.c, revision 1.1

1.1     ! daniel      1: /*
        !             2:  * testHTML.c : a small tester program for HTML input.
        !             3:  *
        !             4:  * See Copyright for the status of this software.
        !             5:  *
        !             6:  * Daniel.Veillard@w3.org
        !             7:  */
        !             8: 
        !             9: #ifdef WIN32
        !            10: #define HAVE_FCNTL_H
        !            11: #include <io.h>
        !            12: #else
        !            13: #include <config.h>
        !            14: #endif
        !            15: #include <sys/types.h>
        !            16: #ifdef HAVE_SYS_STAT_H
        !            17: #include <sys/stat.h>
        !            18: #endif
        !            19: #ifdef HAVE_FCNTL_H
        !            20: #include <fcntl.h>
        !            21: #endif
        !            22: #ifdef HAVE_UNISTD_H
        !            23: #include <unistd.h>
        !            24: #endif
        !            25: #include <stdio.h>
        !            26: #include <string.h>
        !            27: #include <stdlib.h>
        !            28: 
        !            29: #include "HTMLparser.h"
        !            30: #include "HTMLtree.h"
        !            31: #include "debugXML.h"
        !            32: 
        !            33: static int debug = 0;
        !            34: static int copy = 0;
        !            35: 
        !            36: /*
        !            37:  * Note: this is perfectly clean HTML, i.e. not a useful test.
        !            38:  */
        !            39: static CHAR buffer[] = 
        !            40: "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"\n\
        !            41:                       \"http://www.w3.org/TR/REC-html40/loose.dtd\">\n\
        !            42: <html>\n\
        !            43: <head>\n\
        !            44:   <title>This service is temporary down</title>\n\
        !            45: </head>\n\
        !            46: \n\
        !            47: <body bgcolor=\"#FFFFFF\">\n\
        !            48: <h1 align=\"center\">Sorry, this service is temporary down</h1>\n\
        !            49: We are doing our best to get it back on-line,\n\
        !            50: \n\
        !            51: <p>The W3C system administrators</p>\n\
        !            52: </body>\n\
        !            53: </html>\n\
        !            54: ";
        !            55: 
        !            56: /************************************************************************
        !            57:  *                                                                     *
        !            58:  *                             Debug                                   *
        !            59:  *                                                                     *
        !            60:  ************************************************************************/
        !            61: 
        !            62: void parseAndPrintFile(char *filename) {
        !            63:     htmlDocPtr doc, tmp;
        !            64: 
        !            65:     /*
        !            66:      * build an HTML tree from a string;
        !            67:      */
        !            68:     doc = htmlParseFile(filename, NULL);
        !            69: 
        !            70:     /*
        !            71:      * test intermediate copy if needed.
        !            72:      */
        !            73:     if (copy) {
        !            74:         tmp = doc;
        !            75:        doc = xmlCopyDoc(doc, 1);
        !            76:        xmlFreeDoc(tmp);
        !            77:     }
        !            78: 
        !            79:     /*
        !            80:      * print it.
        !            81:      */
        !            82:     if (!debug)
        !            83:        htmlDocDump(stdout, doc);
        !            84:     else
        !            85:         xmlDebugDumpDocument(stdout, doc);
        !            86: 
        !            87:     /*
        !            88:      * free it.
        !            89:      */
        !            90:     xmlFreeDoc(doc);
        !            91: }
        !            92: 
        !            93: void parseAndPrintBuffer(CHAR *buf) {
        !            94:     htmlDocPtr doc, tmp;
        !            95: 
        !            96:     /*
        !            97:      * build an HTML tree from a string;
        !            98:      */
        !            99:     doc = htmlParseDoc(buf, NULL);
        !           100: 
        !           101:     /*
        !           102:      * test intermediate copy if needed.
        !           103:      */
        !           104:     if (copy) {
        !           105:         tmp = doc;
        !           106:        doc = xmlCopyDoc(doc, 1);
        !           107:        xmlFreeDoc(tmp);
        !           108:     }
        !           109: 
        !           110:     /*
        !           111:      * print it.
        !           112:      */
        !           113:     if (!debug)
        !           114:        htmlDocDump(stdout, doc);
        !           115:     else
        !           116:         xmlDebugDumpDocument(stdout, doc);
        !           117: 
        !           118:     /*
        !           119:      * free it.
        !           120:      */
        !           121:     xmlFreeDoc(doc);
        !           122: }
        !           123: 
        !           124: int main(int argc, char **argv) {
        !           125:     int i;
        !           126:     int files = 0;
        !           127: 
        !           128:     for (i = 1; i < argc ; i++) {
        !           129:        if ((!strcmp(argv[i], "-debug")) || (!strcmp(argv[i], "--debug")))
        !           130:            debug++;
        !           131:        else if ((!strcmp(argv[i], "-copy")) || (!strcmp(argv[i], "--copy")))
        !           132:            copy++;
        !           133:     }
        !           134:     for (i = 1; i < argc ; i++) {
        !           135:        if (argv[i][0] != '-') {
        !           136:            parseAndPrintFile(argv[i]);
        !           137:            files ++;
        !           138:        }
        !           139:     }
        !           140:     if (files == 0) {
        !           141:        printf("Usage : %s [--debug] [--copy] HTMLfiles ...\n",
        !           142:               argv[0]);
        !           143:        printf("\tParse the HTML files and output the result of the parsing\n");
        !           144:        printf("\t--debug : dump a debug tree of the in-memory document\n");
        !           145:        printf("\t--copy : used to test the internal copy implementation\n");
        !           146:     }
        !           147: 
        !           148:     return(0);
        !           149: }

Webmaster