/* * testDtd.c : a small tester program for Dtd input. * * See Copyright for the status of this software. * * Daniel.Veillard@w3.org */ #ifdef WIN32 #include "win32config.h" #else #include "config.h" #endif #include "xmlversion.h" #include #include #include #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_STAT_H #include #endif #ifdef HAVE_FCNTL_H #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_STDLIB_H #include #endif #include #include #include #include #ifdef LIBXML_DEBUG_ENABLED static int debug = 0; #endif static int noout = 0; static char *encoding = NULL; /************************************************************************ * * * Debug * * * ************************************************************************/ void parseAndPrintFile(char *filename) { xmlDtdPtr dtd = NULL; /* * build an Dtd tree from a string; */ dtd = xmlParseDTD(NULL, (const xmlChar *) filename); if (dtd == NULL) { fprintf(stderr, "Could not parse %s\n", filename); return; } /* * print it. */ if (!noout) { #ifdef LIBXML_DEBUG_ENABLED if (!debug) { if (encoding) xmlSaveFileEnc("-", (xmlDocPtr) dtd, encoding); else xmlDocDump(stdout, (xmlDocPtr) dtd); } else xmlDebugDumpDTD(stdout, dtd); #else if (encoding) xmlSaveFileEnc("-", (xmlDocPtr) dtd, encoding); else xmlDocDump(stdout, (xmlDocPtr) dtd); #endif } /* * free it. */ xmlFreeDtd(dtd); } int main(int argc, char **argv) { int i; int files = 0; for (i = 1; i < argc ; i++) { #ifdef LIBXML_DEBUG_ENABLED if ((!strcmp(argv[i], "-debug")) || (!strcmp(argv[i], "--debug"))) debug++; else #endif if ((!strcmp(argv[i], "-noout")) || (!strcmp(argv[i], "--noout"))) noout++; else if ((!strcmp(argv[i], "-encode")) || (!strcmp(argv[i], "--encode"))) { i++; encoding = argv[i]; } } for (i = 1; i < argc ; i++) { if ((!strcmp(argv[i], "-encode")) || (!strcmp(argv[i], "--encode"))) { i++; continue; } if (argv[i][0] != '-') { parseAndPrintFile(argv[i]); files ++; } } if (files == 0) { printf("Usage : %s [--debug] [--noout] [--encode xxx] Dtdfiles ...\n", argv[0]); printf("\tParse the Dtd files and output the result of the parsing\n"); #ifdef LIBXML_DEBUG_ENABLED printf("\t--debug : dump a debug tree of the in-memory Dtd\n"); #endif printf("\t--noout : do not print the result\n"); printf("\t--encode encoding : output in the given encoding\n"); } xmlCleanupParser(); xmlMemoryDump(); return(0); }