1ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/* 2ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmllint.c : a small tester program for XML input. 3ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 4ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * See Copyright for the status of this software. 5ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 6ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * daniel@veillard.com 7ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 8ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 9ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include "libxml.h" 10ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 11ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <string.h> 12ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <stdarg.h> 13ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <assert.h> 14ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 15ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#if defined (_WIN32) && !defined(__CYGWIN__) 16ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#if defined (_MSC_VER) || defined(__BORLANDC__) 17ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <winsock2.h> 18ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#pragma comment(lib, "ws2_32.lib") 19ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#define gettimeofday(p1,p2) 20ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* _MSC_VER */ 21ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* _WIN32 */ 22ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 23ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef HAVE_SYS_TIME_H 24ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <sys/time.h> 25ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 26ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef HAVE_TIME_H 27ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <time.h> 28ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 29ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 30ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef __MINGW32__ 31ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#define _WINSOCKAPI_ 32ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <wsockcompat.h> 33ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <winsock2.h> 34ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#undef XML_SOCKLEN_T 35ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#define XML_SOCKLEN_T unsigned int 36ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 37ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 38ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef HAVE_SYS_TIMEB_H 39ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <sys/timeb.h> 40ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 41ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 42ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef HAVE_SYS_TYPES_H 43ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <sys/types.h> 44ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 45ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef HAVE_SYS_STAT_H 46ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <sys/stat.h> 47ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 48ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef HAVE_FCNTL_H 49ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <fcntl.h> 50ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 51ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef HAVE_UNISTD_H 52ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <unistd.h> 53ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 54ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef HAVE_SYS_MMAN_H 55ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <sys/mman.h> 56ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/* seems needed for Solaris */ 57ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifndef MAP_FAILED 58ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#define MAP_FAILED ((void *) -1) 59ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 60ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 61ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef HAVE_STDLIB_H 62ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <stdlib.h> 63ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 64ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef HAVE_LIBREADLINE 65ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <readline/readline.h> 66ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef HAVE_LIBHISTORY 67ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <readline/history.h> 68ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 69ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 70ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 71ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/xmlmemory.h> 72ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/parser.h> 73ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/parserInternals.h> 74ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/HTMLparser.h> 75ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/HTMLtree.h> 76ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/tree.h> 77ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/xpath.h> 78ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/debugXML.h> 79ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/xmlerror.h> 80ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_XINCLUDE_ENABLED 81ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/xinclude.h> 82ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 83ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_CATALOG_ENABLED 84ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/catalog.h> 85ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 86ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/globals.h> 87ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/xmlreader.h> 88ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_SCHEMATRON_ENABLED 89ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/schematron.h> 90ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 91ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_SCHEMAS_ENABLED 92ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/relaxng.h> 93ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/xmlschemas.h> 94ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 95ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_PATTERN_ENABLED 96ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/pattern.h> 97ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 98ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_C14N_ENABLED 99ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/c14n.h> 100ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 101ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_OUTPUT_ENABLED 102ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/xmlsave.h> 103ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 104ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 105ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifndef XML_XML_DEFAULT_CATALOG 106ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#define XML_XML_DEFAULT_CATALOG "file:///etc/xml/catalog" 107ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 108ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 109ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projecttypedef enum { 110ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project XMLLINT_RETURN_OK = 0, /* No error */ 111df143a5041f03a22808b59c76698770b74692815Selim Gurun XMLLINT_ERR_UNCLASS = 1, /* Unclassified */ 112df143a5041f03a22808b59c76698770b74692815Selim Gurun XMLLINT_ERR_DTD = 2, /* Error in DTD */ 113df143a5041f03a22808b59c76698770b74692815Selim Gurun XMLLINT_ERR_VALID = 3, /* Validation error */ 114df143a5041f03a22808b59c76698770b74692815Selim Gurun XMLLINT_ERR_RDFILE = 4, /* CtxtReadFile error */ 115df143a5041f03a22808b59c76698770b74692815Selim Gurun XMLLINT_ERR_SCHEMACOMP = 5, /* Schema compilation */ 116df143a5041f03a22808b59c76698770b74692815Selim Gurun XMLLINT_ERR_OUT = 6, /* Error writing output */ 117df143a5041f03a22808b59c76698770b74692815Selim Gurun XMLLINT_ERR_SCHEMAPAT = 7, /* Error in schema pattern */ 118df143a5041f03a22808b59c76698770b74692815Selim Gurun XMLLINT_ERR_RDREGIS = 8, /* Error in Reader registration */ 119df143a5041f03a22808b59c76698770b74692815Selim Gurun XMLLINT_ERR_MEM = 9, /* Out of memory error */ 120df143a5041f03a22808b59c76698770b74692815Selim Gurun XMLLINT_ERR_XPATH = 10 /* XPath evaluation error */ 121ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} xmllintReturnCode; 122ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_DEBUG_ENABLED 123ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int shell = 0; 124ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int debugent = 0; 125ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 126ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int debug = 0; 127ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int maxmem = 0; 128ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_TREE_ENABLED 129ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int copy = 0; 130ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_TREE_ENABLED */ 131ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int recovery = 0; 132ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int noent = 0; 133df143a5041f03a22808b59c76698770b74692815Selim Gurunstatic int noenc = 0; 134ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int noblanks = 0; 135ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int noout = 0; 136ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int nowrap = 0; 137ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_OUTPUT_ENABLED 138ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int format = 0; 139ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic const char *output = NULL; 140ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int compress = 0; 141ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int oldout = 0; 142ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_OUTPUT_ENABLED */ 143ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_VALID_ENABLED 144ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int valid = 0; 145ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int postvalid = 0; 146ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic char * dtdvalid = NULL; 147ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic char * dtdvalidfpi = NULL; 148ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 149ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_SCHEMAS_ENABLED 150ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic char * relaxng = NULL; 151ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic xmlRelaxNGPtr relaxngschemas = NULL; 152ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic char * schema = NULL; 153ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic xmlSchemaPtr wxschemas = NULL; 154ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 155ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_SCHEMATRON_ENABLED 156ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic char * schematron = NULL; 157ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic xmlSchematronPtr wxschematron = NULL; 158ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 159ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int repeat = 0; 160ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int insert = 0; 161ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#if defined(LIBXML_HTML_ENABLED) || defined(LIBXML_VALID_ENABLED) 162ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int html = 0; 163ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int xmlout = 0; 164ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 165ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int htmlout = 0; 166df143a5041f03a22808b59c76698770b74692815Selim Gurun#if defined(LIBXML_HTML_ENABLED) 167df143a5041f03a22808b59c76698770b74692815Selim Gurunstatic int nodefdtd = 0; 168df143a5041f03a22808b59c76698770b74692815Selim Gurun#endif 169ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_PUSH_ENABLED 170ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int push = 0; 17194442ad4107000e6d49f9b85a46a591495a57632Selim Gurunstatic int pushsize = 4096; 172ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_PUSH_ENABLED */ 17394442ad4107000e6d49f9b85a46a591495a57632Selim Gurun#ifdef HAVE_MMAP 174ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int memory = 0; 175ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 176ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int testIO = 0; 177ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic char *encoding = NULL; 178ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_XINCLUDE_ENABLED 179ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int xinclude = 0; 180ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 181ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int dtdattrs = 0; 182ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int loaddtd = 0; 183ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic xmllintReturnCode progresult = XMLLINT_RETURN_OK; 184ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int timing = 0; 185ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int generate = 0; 186ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int dropdtd = 0; 187ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_CATALOG_ENABLED 188ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int catalogs = 0; 189ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int nocatalogs = 0; 190ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 191ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_C14N_ENABLED 192ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int canonical = 0; 193df143a5041f03a22808b59c76698770b74692815Selim Gurunstatic int canonical_11 = 0; 194ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int exc_canonical = 0; 195ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 196ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_READER_ENABLED 197ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int stream = 0; 198ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int walker = 0; 199ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_READER_ENABLED */ 200ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int chkregister = 0; 201ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int nbregister = 0; 202ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_SAX1_ENABLED 203ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int sax1 = 0; 204ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_SAX1_ENABLED */ 205ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_PATTERN_ENABLED 206ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic const char *pattern = NULL; 207ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic xmlPatternPtr patternc = NULL; 208ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic xmlStreamCtxtPtr patstream = NULL; 209ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 210df143a5041f03a22808b59c76698770b74692815Selim Gurun#ifdef LIBXML_XPATH_ENABLED 211df143a5041f03a22808b59c76698770b74692815Selim Gurunstatic const char *xpathquery = NULL; 212df143a5041f03a22808b59c76698770b74692815Selim Gurun#endif 21394442ad4107000e6d49f9b85a46a591495a57632Selim Gurunstatic int options = XML_PARSE_COMPACT | XML_PARSE_BIG_LINES; 214ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int sax = 0; 21560a4c356ee9ce5e9ccb23347c0381f0436192691Patrick Scottstatic int oldxml10 = 0; 216ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 217ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/************************************************************************ 218ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * * 219ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Entity loading control and customization. * 220ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * * 221ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ************************************************************************/ 222ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#define MAX_PATHS 64 223ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef _WIN32 224ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project# define PATH_SEPARATOR ';' 225ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#else 226ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project# define PATH_SEPARATOR ':' 227ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 228ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic xmlChar *paths[MAX_PATHS + 1]; 229ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int nbpaths = 0; 230ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int load_trace = 0; 231ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 232ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic 233ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid parsePath(const xmlChar *path) { 234ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const xmlChar *cur; 235ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 236ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (path == NULL) 237ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 238ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while (*path != 0) { 239ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (nbpaths >= MAX_PATHS) { 240ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "MAX_PATHS reached: too many paths\n"); 241ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 242ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 243ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cur = path; 244ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while ((*cur == ' ') || (*cur == PATH_SEPARATOR)) 245ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cur++; 246ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project path = cur; 247ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while ((*cur != 0) && (*cur != ' ') && (*cur != PATH_SEPARATOR)) 248ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cur++; 249ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (cur != path) { 250ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project paths[nbpaths] = xmlStrndup(path, cur - path); 251ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (paths[nbpaths] != NULL) 252ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project nbpaths++; 253ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project path = cur; 254ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 255ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 256ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 257ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 258ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic xmlExternalEntityLoader defaultEntityLoader = NULL; 259ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 260df143a5041f03a22808b59c76698770b74692815Selim Gurunstatic xmlParserInputPtr 261ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmllintExternalEntityLoader(const char *URL, const char *ID, 262ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserCtxtPtr ctxt) { 263ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserInputPtr ret; 264ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project warningSAXFunc warning = NULL; 265ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project errorSAXFunc err = NULL; 266ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 267ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int i; 268ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const char *lastsegment = URL; 269ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const char *iter = URL; 270ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 271ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((nbpaths > 0) && (iter != NULL)) { 272ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while (*iter != 0) { 273ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (*iter == '/') 274ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project lastsegment = iter + 1; 275ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project iter++; 276ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 277ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 278ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 279ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((ctxt != NULL) && (ctxt->sax != NULL)) { 280ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project warning = ctxt->sax->warning; 281ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project err = ctxt->sax->error; 282ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->sax->warning = NULL; 283ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->sax->error = NULL; 284ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 285ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 286ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (defaultEntityLoader != NULL) { 287ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ret = defaultEntityLoader(URL, ID, ctxt); 288ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ret != NULL) { 289ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (warning != NULL) 290ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->sax->warning = warning; 291ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (err != NULL) 292ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->sax->error = err; 293ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (load_trace) { 294ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf \ 295ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (stderr, 296ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Loaded URL=\"%s\" ID=\"%s\"\n", 297ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project URL ? URL : "(null)", 298ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ID ? ID : "(null)"); 299ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 300ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(ret); 301ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 302ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 303ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project for (i = 0;i < nbpaths;i++) { 304ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlChar *newURL; 305ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 306ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project newURL = xmlStrdup((const xmlChar *) paths[i]); 307ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project newURL = xmlStrcat(newURL, (const xmlChar *) "/"); 308ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project newURL = xmlStrcat(newURL, (const xmlChar *) lastsegment); 309ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (newURL != NULL) { 310ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ret = defaultEntityLoader((const char *)newURL, ID, ctxt); 311ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ret != NULL) { 312ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (warning != NULL) 313ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->sax->warning = warning; 314ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (err != NULL) 315ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->sax->error = err; 316ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (load_trace) { 317ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf \ 318df143a5041f03a22808b59c76698770b74692815Selim Gurun (stderr, 319df143a5041f03a22808b59c76698770b74692815Selim Gurun "Loaded URL=\"%s\" ID=\"%s\"\n", 320ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project newURL, 321df143a5041f03a22808b59c76698770b74692815Selim Gurun ID ? ID : "(null)"); 322ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 323ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFree(newURL); 324ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(ret); 325ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 326ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFree(newURL); 327ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 328ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 329ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (err != NULL) 330ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->sax->error = err; 331ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (warning != NULL) { 332ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->sax->warning = warning; 333ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (URL != NULL) 334ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project warning(ctxt, "failed to load external entity \"%s\"\n", URL); 335ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if (ID != NULL) 336ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project warning(ctxt, "failed to load external entity \"%s\"\n", ID); 337ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 338ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(NULL); 339ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 340ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/************************************************************************ 341df143a5041f03a22808b59c76698770b74692815Selim Gurun * * 342ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Memory allocation consumption debugging * 343df143a5041f03a22808b59c76698770b74692815Selim Gurun * * 344ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ************************************************************************/ 345ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 346ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 347ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectOOM(void) 348ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 349ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "Ran out of memory needs > %d bytes\n", maxmem); 350ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_MEM; 351ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 352ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 353ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 354ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectmyFreeFunc(void *mem) 355ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 356ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlMemFree(mem); 357ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 358ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void * 359ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectmyMallocFunc(size_t size) 360ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 361ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project void *ret; 362ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 363ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ret = xmlMemMalloc(size); 364ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ret != NULL) { 365ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (xmlMemUsed() > maxmem) { 366ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project OOM(); 367ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlMemFree(ret); 368ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (NULL); 369ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 370ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 371ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (ret); 372ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 373ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void * 374ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectmyReallocFunc(void *mem, size_t size) 375ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 376ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project void *ret; 377ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 378ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ret = xmlMemRealloc(mem, size); 379ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ret != NULL) { 380ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (xmlMemUsed() > maxmem) { 381ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project OOM(); 382ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlMemFree(ret); 383ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (NULL); 384ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 385ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 386ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (ret); 387ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 388ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic char * 389ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectmyStrdupFunc(const char *str) 390ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 391ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project char *ret; 392ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 393ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ret = xmlMemoryStrdup(str); 394ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ret != NULL) { 395ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (xmlMemUsed() > maxmem) { 396ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project OOM(); 397ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFree(ret); 398ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (NULL); 399ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 400ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 401ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (ret); 402ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 403ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/************************************************************************ 404df143a5041f03a22808b59c76698770b74692815Selim Gurun * * 405ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Internal timing routines to remove the necessity to have * 406ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * unix-specific function calls. * 407df143a5041f03a22808b59c76698770b74692815Selim Gurun * * 408ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ************************************************************************/ 409ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 410df143a5041f03a22808b59c76698770b74692815Selim Gurun#ifndef HAVE_GETTIMEOFDAY 411ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef HAVE_SYS_TIMEB_H 412ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef HAVE_SYS_TIME_H 413ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef HAVE_FTIME 414ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 415ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int 416ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectmy_gettimeofday(struct timeval *tvp, void *tzp) 417ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 418ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project struct timeb timebuffer; 419ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 420ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ftime(&timebuffer); 421ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (tvp) { 422ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project tvp->tv_sec = timebuffer.time; 423ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project tvp->tv_usec = timebuffer.millitm * 1000L; 424ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 425ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (0); 426ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 427ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#define HAVE_GETTIMEOFDAY 1 428ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#define gettimeofday my_gettimeofday 429ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 430ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* HAVE_FTIME */ 431ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* HAVE_SYS_TIME_H */ 432ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* HAVE_SYS_TIMEB_H */ 433ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* !HAVE_GETTIMEOFDAY */ 434ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 435ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#if defined(HAVE_GETTIMEOFDAY) 436ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic struct timeval begin, end; 437ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 438ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/* 439ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * startTimer: call where you want to start timing 440ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 441ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 442ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectstartTimer(void) 443ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 444ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project gettimeofday(&begin, NULL); 445ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 446ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 447ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/* 448ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * endTimer: call where you want to stop timing and to print out a 449ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * message about the timing performed; format is a printf 450ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * type argument 451ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 452ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void XMLCDECL 453ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectendTimer(const char *fmt, ...) 454ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 455ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project long msec; 456ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_list ap; 457ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 458ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project gettimeofday(&end, NULL); 459ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project msec = end.tv_sec - begin.tv_sec; 460ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project msec *= 1000; 461ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project msec += (end.tv_usec - begin.tv_usec) / 1000; 462ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 463ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifndef HAVE_STDARG_H 464ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#error "endTimer required stdarg functions" 465ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 466ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_start(ap, fmt); 467ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project vfprintf(stderr, fmt, ap); 468ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_end(ap); 469ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 470ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, " took %ld ms\n", msec); 471ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 472ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#elif defined(HAVE_TIME_H) 473ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/* 474ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * No gettimeofday function, so we have to make do with calling clock. 475ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * This is obviously less accurate, but there's little we can do about 476ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * that. 477ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 478ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifndef CLOCKS_PER_SEC 479ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#define CLOCKS_PER_SEC 100 480ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 481ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 482ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic clock_t begin, end; 483ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 484ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectstartTimer(void) 485ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 486ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project begin = clock(); 487ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 488ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void XMLCDECL 489ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectendTimer(const char *fmt, ...) 490ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 491ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project long msec; 492ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_list ap; 493ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 494ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project end = clock(); 495ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project msec = ((end - begin) * 1000) / CLOCKS_PER_SEC; 496ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 497ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifndef HAVE_STDARG_H 498ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#error "endTimer required stdarg functions" 499ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 500ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_start(ap, fmt); 501ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project vfprintf(stderr, fmt, ap); 502ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_end(ap); 503ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, " took %ld ms\n", msec); 504ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 505ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#else 506ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 507ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/* 508ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * We don't have a gettimeofday or time.h, so we just don't do timing 509ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 510ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 511ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectstartTimer(void) 512ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 513ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 514ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Do nothing 515ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 516ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 517ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void XMLCDECL 518ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectendTimer(char *format, ...) 519ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 520ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 521ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * We cannot do anything because we don't have a timing function 522ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 523ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef HAVE_STDARG_H 52494442ad4107000e6d49f9b85a46a591495a57632Selim Gurun va_list ap; 525ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_start(ap, format); 526ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project vfprintf(stderr, format, ap); 527ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_end(ap); 52894442ad4107000e6d49f9b85a46a591495a57632Selim Gurun fprintf(stderr, " was not timed\n"); 529ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#else 530ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* We don't have gettimeofday, time or stdarg.h, what crazy world is 531ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * this ?! 532ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 533ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 534ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 535ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 536ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/************************************************************************ 537df143a5041f03a22808b59c76698770b74692815Selim Gurun * * 538df143a5041f03a22808b59c76698770b74692815Selim Gurun * HTML ouput * 539df143a5041f03a22808b59c76698770b74692815Selim Gurun * * 540ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ************************************************************************/ 541ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic char buffer[50000]; 542ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 543ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 544ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlHTMLEncodeSend(void) { 545ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project char *result; 546ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 547ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project result = (char *) xmlEncodeEntitiesReentrant(NULL, BAD_CAST buffer); 548ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (result) { 549ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, "%s", result); 550ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFree(result); 551ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 552ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project buffer[0] = 0; 553ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 554ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 555ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 556ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlHTMLPrintFileInfo: 557ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @input: an xmlParserInputPtr input 558df143a5041f03a22808b59c76698770b74692815Selim Gurun * 559ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Displays the associated file and line informations for the current input 560ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 561ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 562ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 563ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlHTMLPrintFileInfo(xmlParserInputPtr input) { 564ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int len; 565ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, "<p>"); 566ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 567ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project len = strlen(buffer); 568ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (input != NULL) { 569ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (input->filename) { 570ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project snprintf(&buffer[len], sizeof(buffer) - len, "%s:%d: ", input->filename, 571ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project input->line); 572ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 573ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project snprintf(&buffer[len], sizeof(buffer) - len, "Entity: line %d: ", input->line); 574ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 575ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 576ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlHTMLEncodeSend(); 577ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 578ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 579ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 580ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlHTMLPrintFileContext: 581ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @input: an xmlParserInputPtr input 582df143a5041f03a22808b59c76698770b74692815Selim Gurun * 583ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Displays current context within the input content for error tracking 584ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 585ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 586ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 587ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlHTMLPrintFileContext(xmlParserInputPtr input) { 588ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const xmlChar *cur, *base; 589ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int len; 590ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int n; 591ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 592ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (input == NULL) return; 593ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, "<pre>\n"); 594ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cur = input->cur; 595ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project base = input->base; 596ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while ((cur > base) && ((*cur == '\n') || (*cur == '\r'))) { 597ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cur--; 598ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 599ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project n = 0; 600ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while ((n++ < 80) && (cur > base) && (*cur != '\n') && (*cur != '\r')) 601ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cur--; 602ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((*cur == '\n') || (*cur == '\r')) cur++; 603ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project base = cur; 604ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project n = 0; 605ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while ((*cur != 0) && (*cur != '\n') && (*cur != '\r') && (n < 79)) { 606ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project len = strlen(buffer); 607df143a5041f03a22808b59c76698770b74692815Selim Gurun snprintf(&buffer[len], sizeof(buffer) - len, "%c", 608ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (unsigned char) *cur++); 609ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project n++; 610ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 611ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project len = strlen(buffer); 612ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project snprintf(&buffer[len], sizeof(buffer) - len, "\n"); 613ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cur = input->cur; 614ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while ((*cur == '\n') || (*cur == '\r')) 615ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cur--; 616ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project n = 0; 617ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while ((cur != base) && (n++ < 80)) { 618ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project len = strlen(buffer); 619ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project snprintf(&buffer[len], sizeof(buffer) - len, " "); 620ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project base++; 621ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 622ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project len = strlen(buffer); 623ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project snprintf(&buffer[len], sizeof(buffer) - len, "^\n"); 624ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlHTMLEncodeSend(); 625ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, "</pre>"); 626ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 627ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 628ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 629ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlHTMLError: 630ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctx: an XML parser context 631ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @msg: the message to display/transmit 632ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @...: extra parameters for the message display 633df143a5041f03a22808b59c76698770b74692815Selim Gurun * 634ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Display and format an error messages, gives file, line, position and 635ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * extra parameters. 636ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 637ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void XMLCDECL 638ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlHTMLError(void *ctx, const char *msg, ...) 639ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 640ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; 641ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserInputPtr input; 642ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_list args; 643ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int len; 644ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 645ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project buffer[0] = 0; 646ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project input = ctxt->input; 647ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((input != NULL) && (input->filename == NULL) && (ctxt->inputNr > 1)) { 648ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project input = ctxt->inputTab[ctxt->inputNr - 2]; 649ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 650df143a5041f03a22808b59c76698770b74692815Selim Gurun 651ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlHTMLPrintFileInfo(input); 652ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 653ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, "<b>error</b>: "); 654ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_start(args, msg); 655ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project len = strlen(buffer); 656ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project vsnprintf(&buffer[len], sizeof(buffer) - len, msg, args); 657ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_end(args); 658ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlHTMLEncodeSend(); 659ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, "</p>\n"); 660ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 661ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlHTMLPrintFileContext(input); 662ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlHTMLEncodeSend(); 663ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 664ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 665ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 666ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlHTMLWarning: 667ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctx: an XML parser context 668ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @msg: the message to display/transmit 669ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @...: extra parameters for the message display 670df143a5041f03a22808b59c76698770b74692815Selim Gurun * 671ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Display and format a warning messages, gives file, line, position and 672ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * extra parameters. 673ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 674ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void XMLCDECL 675ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlHTMLWarning(void *ctx, const char *msg, ...) 676ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 677ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; 678ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserInputPtr input; 679ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_list args; 680ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int len; 681ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 682ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project buffer[0] = 0; 683ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project input = ctxt->input; 684ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((input != NULL) && (input->filename == NULL) && (ctxt->inputNr > 1)) { 685ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project input = ctxt->inputTab[ctxt->inputNr - 2]; 686ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 687df143a5041f03a22808b59c76698770b74692815Selim Gurun 688ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 689ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlHTMLPrintFileInfo(input); 690df143a5041f03a22808b59c76698770b74692815Selim Gurun 691ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, "<b>warning</b>: "); 692ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_start(args, msg); 693df143a5041f03a22808b59c76698770b74692815Selim Gurun len = strlen(buffer); 694ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project vsnprintf(&buffer[len], sizeof(buffer) - len, msg, args); 695ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_end(args); 696ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlHTMLEncodeSend(); 697ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, "</p>\n"); 698ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 699ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlHTMLPrintFileContext(input); 700ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlHTMLEncodeSend(); 701ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 702ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 703ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 704ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlHTMLValidityError: 705ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctx: an XML parser context 706ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @msg: the message to display/transmit 707ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @...: extra parameters for the message display 708df143a5041f03a22808b59c76698770b74692815Selim Gurun * 709ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Display and format an validity error messages, gives file, 710ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * line, position and extra parameters. 711ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 712ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void XMLCDECL 713ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlHTMLValidityError(void *ctx, const char *msg, ...) 714ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 715ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; 716ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserInputPtr input; 717ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_list args; 718ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int len; 719ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 720ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project buffer[0] = 0; 721ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project input = ctxt->input; 722ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((input->filename == NULL) && (ctxt->inputNr > 1)) 723ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project input = ctxt->inputTab[ctxt->inputNr - 2]; 724df143a5041f03a22808b59c76698770b74692815Selim Gurun 725ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlHTMLPrintFileInfo(input); 726ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 727ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, "<b>validity error</b>: "); 728ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project len = strlen(buffer); 729ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_start(args, msg); 730ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project vsnprintf(&buffer[len], sizeof(buffer) - len, msg, args); 731ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_end(args); 732ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlHTMLEncodeSend(); 733ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, "</p>\n"); 734ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 735ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlHTMLPrintFileContext(input); 736ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlHTMLEncodeSend(); 737ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_VALID; 738ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 739ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 740ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 741ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlHTMLValidityWarning: 742ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctx: an XML parser context 743ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @msg: the message to display/transmit 744ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @...: extra parameters for the message display 745df143a5041f03a22808b59c76698770b74692815Selim Gurun * 746ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Display and format a validity warning messages, gives file, line, 747ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * position and extra parameters. 748ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 749ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void XMLCDECL 750ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlHTMLValidityWarning(void *ctx, const char *msg, ...) 751ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 752ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; 753ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserInputPtr input; 754ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_list args; 755ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int len; 756ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 757ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project buffer[0] = 0; 758ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project input = ctxt->input; 759ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((input->filename == NULL) && (ctxt->inputNr > 1)) 760ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project input = ctxt->inputTab[ctxt->inputNr - 2]; 761ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 762ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlHTMLPrintFileInfo(input); 763df143a5041f03a22808b59c76698770b74692815Selim Gurun 764ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, "<b>validity warning</b>: "); 765ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_start(args, msg); 766df143a5041f03a22808b59c76698770b74692815Selim Gurun len = strlen(buffer); 767ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project vsnprintf(&buffer[len], sizeof(buffer) - len, msg, args); 768ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_end(args); 769ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlHTMLEncodeSend(); 770ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, "</p>\n"); 771ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 772ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlHTMLPrintFileContext(input); 773ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlHTMLEncodeSend(); 774ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 775ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 776ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/************************************************************************ 777df143a5041f03a22808b59c76698770b74692815Selim Gurun * * 778df143a5041f03a22808b59c76698770b74692815Selim Gurun * Shell Interface * 779df143a5041f03a22808b59c76698770b74692815Selim Gurun * * 780ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ************************************************************************/ 781ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_DEBUG_ENABLED 782ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_XPATH_ENABLED 783ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 784ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlShellReadline: 785ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @prompt: the prompt value 786ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 787ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Read a string 788df143a5041f03a22808b59c76698770b74692815Selim Gurun * 789ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns a pointer to it or NULL on EOF the caller is expected to 790ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * free the returned string. 791ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 792ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic char * 793ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlShellReadline(char *prompt) { 794ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef HAVE_LIBREADLINE 795ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project char *line_read; 796ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 797ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* Get a line from the user. */ 798ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project line_read = readline (prompt); 799ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 800ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* If the line has any text in it, save it on the history. */ 801ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (line_read && *line_read) 802ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project add_history (line_read); 803ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 804ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (line_read); 805ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#else 806ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project char line_read[501]; 807ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project char *ret; 808ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int len; 809ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 810ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (prompt != NULL) 811ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "%s", prompt); 812ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!fgets(line_read, 500, stdin)) 813ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(NULL); 814ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project line_read[500] = 0; 815ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project len = strlen(line_read); 816ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ret = (char *) malloc(len + 1); 817ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ret != NULL) { 818ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project memcpy (ret, line_read, len + 1); 819ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 820ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(ret); 821ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 822ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 823ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_XPATH_ENABLED */ 824ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_DEBUG_ENABLED */ 825ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 826ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/************************************************************************ 827df143a5041f03a22808b59c76698770b74692815Selim Gurun * * 828df143a5041f03a22808b59c76698770b74692815Selim Gurun * I/O Interfaces * 829df143a5041f03a22808b59c76698770b74692815Selim Gurun * * 830ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ************************************************************************/ 831ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 832ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int myRead(FILE *f, char * buf, int len) { 833ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(fread(buf, 1, len, f)); 834ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 835ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void myClose(FILE *f) { 836ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (f != stdin) { 837ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fclose(f); 838ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 839ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 840ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 841ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/************************************************************************ 842ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * * 843df143a5041f03a22808b59c76698770b74692815Selim Gurun * SAX based tests * 844ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * * 845ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ************************************************************************/ 846ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 847ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/* 848ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * empty SAX block 849ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 850ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic xmlSAXHandler emptySAXHandlerStruct = { 851ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, /* internalSubset */ 852ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, /* isStandalone */ 853ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, /* hasInternalSubset */ 854ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, /* hasExternalSubset */ 855ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, /* resolveEntity */ 856ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, /* getEntity */ 857ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, /* entityDecl */ 858ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, /* notationDecl */ 859ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, /* attributeDecl */ 860ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, /* elementDecl */ 861ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, /* unparsedEntityDecl */ 862ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, /* setDocumentLocator */ 863ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, /* startDocument */ 864ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, /* endDocument */ 865ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, /* startElement */ 866ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, /* endElement */ 867ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, /* reference */ 868ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, /* characters */ 869ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, /* ignorableWhitespace */ 870ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, /* processingInstruction */ 871ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, /* comment */ 872ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, /* xmlParserWarning */ 873ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, /* xmlParserError */ 874ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, /* xmlParserError */ 875ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, /* getParameterEntity */ 876ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, /* cdataBlock; */ 877ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, /* externalSubset; */ 878ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project XML_SAX2_MAGIC, 879ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, 880ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, /* startElementNs */ 881ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, /* endElementNs */ 882ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL /* xmlStructuredErrorFunc */ 883ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project}; 884ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 885ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic xmlSAXHandlerPtr emptySAXHandler = &emptySAXHandlerStruct; 886ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectextern xmlSAXHandlerPtr debugSAXHandler; 887ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int callbacks; 888ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 889ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 890ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * isStandaloneDebug: 891ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: An XML parser context 892ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 893ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Is this document tagged standalone ? 894ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 895ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns 1 if true 896ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 897ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int 898ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectisStandaloneDebug(void *ctx ATTRIBUTE_UNUSED) 899ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 900ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project callbacks++; 901ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout) 902ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(0); 903ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "SAX.isStandalone()\n"); 904ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(0); 905ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 906ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 907ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 908ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * hasInternalSubsetDebug: 909ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: An XML parser context 910ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 911ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Does this document has an internal subset 912ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 913ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns 1 if true 914ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 915ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int 916ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjecthasInternalSubsetDebug(void *ctx ATTRIBUTE_UNUSED) 917ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 918ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project callbacks++; 919ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout) 920ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(0); 921ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "SAX.hasInternalSubset()\n"); 922ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(0); 923ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 924ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 925ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 926ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * hasExternalSubsetDebug: 927ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: An XML parser context 928ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 929ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Does this document has an external subset 930ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 931ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns 1 if true 932ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 933ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int 934ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjecthasExternalSubsetDebug(void *ctx ATTRIBUTE_UNUSED) 935ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 936ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project callbacks++; 937ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout) 938ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(0); 939ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "SAX.hasExternalSubset()\n"); 940ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(0); 941ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 942ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 943ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 944ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * internalSubsetDebug: 945ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: An XML parser context 946ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 947ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Does this document has an internal subset 948ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 949ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 950ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectinternalSubsetDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name, 951ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const xmlChar *ExternalID, const xmlChar *SystemID) 952ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 953ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project callbacks++; 954ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout) 955ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 956ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "SAX.internalSubset(%s,", name); 957ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ExternalID == NULL) 958ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, " ,"); 959ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 960ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, " %s,", ExternalID); 961ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (SystemID == NULL) 962ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, " )\n"); 963ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 964ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, " %s)\n", SystemID); 965ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 966ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 967ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 968ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * externalSubsetDebug: 969ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: An XML parser context 970ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 971ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Does this document has an external subset 972ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 973ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 974ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectexternalSubsetDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name, 975ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const xmlChar *ExternalID, const xmlChar *SystemID) 976ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 977ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project callbacks++; 978ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout) 979ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 980ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "SAX.externalSubset(%s,", name); 981ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ExternalID == NULL) 982ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, " ,"); 983ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 984ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, " %s,", ExternalID); 985ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (SystemID == NULL) 986ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, " )\n"); 987ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 988ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, " %s)\n", SystemID); 989ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 990ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 991ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 992ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * resolveEntityDebug: 993ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: An XML parser context 994ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @publicId: The public ID of the entity 995ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @systemId: The system ID of the entity 996ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 997ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Special entity resolver, better left to the parser, it has 998ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * more context than the application layer. 999ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * The default behaviour is to NOT resolve the entities, in that case 1000ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * the ENTITY_REF nodes are built in the structure (and the parameter 1001ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * values). 1002ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1003ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour. 1004ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1005ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic xmlParserInputPtr 1006ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectresolveEntityDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *publicId, const xmlChar *systemId) 1007ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1008ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project callbacks++; 1009ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout) 1010ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(NULL); 1011ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; */ 1012ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1013df143a5041f03a22808b59c76698770b74692815Selim Gurun 1014ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "SAX.resolveEntity("); 1015ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (publicId != NULL) 1016ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "%s", (char *)publicId); 1017ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 1018ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, " "); 1019ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (systemId != NULL) 1020ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, ", %s)\n", (char *)systemId); 1021ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 1022ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, ", )\n"); 1023ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(NULL); 1024ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1025ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1026ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1027ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * getEntityDebug: 1028ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: An XML parser context 1029ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @name: The entity name 1030ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1031ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Get an entity by name 1032ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1033ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour. 1034ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1035ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic xmlEntityPtr 1036ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectgetEntityDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name) 1037ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1038ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project callbacks++; 1039ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout) 1040ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(NULL); 1041ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "SAX.getEntity(%s)\n", name); 1042ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(NULL); 1043ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1044ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1045ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1046ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * getParameterEntityDebug: 1047ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: An XML parser context 1048ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @name: The entity name 1049ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1050ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Get a parameter entity by name 1051ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1052ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns the xmlParserInputPtr 1053ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1054ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic xmlEntityPtr 1055ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectgetParameterEntityDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name) 1056ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1057ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project callbacks++; 1058ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout) 1059ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(NULL); 1060ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "SAX.getParameterEntity(%s)\n", name); 1061ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(NULL); 1062ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1063ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1064ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1065ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1066ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * entityDeclDebug: 1067ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: An XML parser context 1068df143a5041f03a22808b59c76698770b74692815Selim Gurun * @name: the entity name 1069df143a5041f03a22808b59c76698770b74692815Selim Gurun * @type: the entity type 1070ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @publicId: The public ID of the entity 1071ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @systemId: The system ID of the entity 1072ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @content: the entity value (without processing). 1073ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1074ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * An entity definition has been parsed 1075ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1076ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 1077ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectentityDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name, int type, 1078ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const xmlChar *publicId, const xmlChar *systemId, xmlChar *content) 1079ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1080ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectconst xmlChar *nullstr = BAD_CAST "(null)"; 1081ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* not all libraries handle printing null pointers nicely */ 1082ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (publicId == NULL) 1083ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project publicId = nullstr; 1084ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (systemId == NULL) 1085ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project systemId = nullstr; 1086ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (content == NULL) 1087ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project content = (xmlChar *)nullstr; 1088ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project callbacks++; 1089ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout) 1090ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1091ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "SAX.entityDecl(%s, %d, %s, %s, %s)\n", 1092ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project name, type, publicId, systemId, content); 1093ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1094ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1095ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1096ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * attributeDeclDebug: 1097ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: An XML parser context 1098df143a5041f03a22808b59c76698770b74692815Selim Gurun * @name: the attribute name 1099df143a5041f03a22808b59c76698770b74692815Selim Gurun * @type: the attribute type 1100ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1101ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * An attribute definition has been parsed 1102ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1103ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 1104ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectattributeDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar * elem, 1105ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const xmlChar * name, int type, int def, 1106ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const xmlChar * defaultValue, xmlEnumerationPtr tree) 1107ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1108ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project callbacks++; 1109ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout) 1110ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1111ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (defaultValue == NULL) 1112ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "SAX.attributeDecl(%s, %s, %d, %d, NULL, ...)\n", 1113ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project elem, name, type, def); 1114ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 1115ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "SAX.attributeDecl(%s, %s, %d, %d, %s, ...)\n", 1116ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project elem, name, type, def, defaultValue); 1117ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFreeEnumeration(tree); 1118ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1119ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1120ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1121ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * elementDeclDebug: 1122ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: An XML parser context 1123df143a5041f03a22808b59c76698770b74692815Selim Gurun * @name: the element name 1124df143a5041f03a22808b59c76698770b74692815Selim Gurun * @type: the element type 1125ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @content: the element value (without processing). 1126ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1127ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * An element definition has been parsed 1128ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1129ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 1130ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectelementDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name, int type, 1131ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlElementContentPtr content ATTRIBUTE_UNUSED) 1132ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1133ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project callbacks++; 1134ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout) 1135ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1136ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "SAX.elementDecl(%s, %d, ...)\n", 1137ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project name, type); 1138ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1139ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1140ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1141ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * notationDeclDebug: 1142ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: An XML parser context 1143ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @name: The name of the notation 1144ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @publicId: The public ID of the entity 1145ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @systemId: The system ID of the entity 1146ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1147ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * What to do when a notation declaration has been parsed. 1148ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1149ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 1150ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectnotationDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name, 1151ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const xmlChar *publicId, const xmlChar *systemId) 1152ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1153ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project callbacks++; 1154ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout) 1155ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1156ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "SAX.notationDecl(%s, %s, %s)\n", 1157ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (char *) name, (char *) publicId, (char *) systemId); 1158ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1159ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1160ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1161ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * unparsedEntityDeclDebug: 1162ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: An XML parser context 1163ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @name: The name of the entity 1164ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @publicId: The public ID of the entity 1165ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @systemId: The system ID of the entity 1166ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @notationName: the name of the notation 1167ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1168ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * What to do when an unparsed entity declaration is parsed 1169ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1170ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 1171ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectunparsedEntityDeclDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name, 1172ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const xmlChar *publicId, const xmlChar *systemId, 1173ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const xmlChar *notationName) 1174ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1175ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectconst xmlChar *nullstr = BAD_CAST "(null)"; 1176ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1177ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (publicId == NULL) 1178ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project publicId = nullstr; 1179ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (systemId == NULL) 1180ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project systemId = nullstr; 1181ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (notationName == NULL) 1182ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project notationName = nullstr; 1183ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project callbacks++; 1184ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout) 1185ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1186ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "SAX.unparsedEntityDecl(%s, %s, %s, %s)\n", 1187ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (char *) name, (char *) publicId, (char *) systemId, 1188ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (char *) notationName); 1189ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1190ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1191ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1192ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * setDocumentLocatorDebug: 1193ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: An XML parser context 1194ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @loc: A SAX Locator 1195ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1196ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Receive the document locator at startup, actually xmlDefaultSAXLocator 1197ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Everything is available on the context, so this is useless in our case. 1198ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1199ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 1200ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectsetDocumentLocatorDebug(void *ctx ATTRIBUTE_UNUSED, xmlSAXLocatorPtr loc ATTRIBUTE_UNUSED) 1201ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1202ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project callbacks++; 1203ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout) 1204ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1205ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "SAX.setDocumentLocator()\n"); 1206ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1207ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1208ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1209ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * startDocumentDebug: 1210ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: An XML parser context 1211ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1212ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * called when the document start being processed. 1213ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1214ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 1215ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectstartDocumentDebug(void *ctx ATTRIBUTE_UNUSED) 1216ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1217ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project callbacks++; 1218ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout) 1219ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1220ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "SAX.startDocument()\n"); 1221ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1222ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1223ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1224ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * endDocumentDebug: 1225ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: An XML parser context 1226ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1227ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * called when the document end has been detected. 1228ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1229ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 1230ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectendDocumentDebug(void *ctx ATTRIBUTE_UNUSED) 1231ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1232ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project callbacks++; 1233ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout) 1234ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1235ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "SAX.endDocument()\n"); 1236ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1237ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1238ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1239ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * startElementDebug: 1240ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: An XML parser context 1241ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @name: The element name 1242ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1243ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * called when an opening tag has been processed. 1244ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1245ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 1246ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectstartElementDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name, const xmlChar **atts) 1247ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1248ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int i; 1249ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1250ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project callbacks++; 1251ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout) 1252ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1253ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "SAX.startElement(%s", (char *) name); 1254ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (atts != NULL) { 1255ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project for (i = 0;(atts[i] != NULL);i++) { 1256ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, ", %s='", atts[i++]); 1257ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (atts[i] != NULL) 1258ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "%s'", atts[i]); 1259ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1260ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1261ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, ")\n"); 1262ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1263ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1264ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1265ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * endElementDebug: 1266ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: An XML parser context 1267ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @name: The element name 1268ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1269ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * called when the end of an element has been detected. 1270ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1271ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 1272ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectendElementDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name) 1273ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1274ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project callbacks++; 1275ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout) 1276ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1277ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "SAX.endElement(%s)\n", (char *) name); 1278ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1279ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1280ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1281ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * charactersDebug: 1282ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: An XML parser context 1283ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ch: a xmlChar string 1284ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @len: the number of xmlChar 1285ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1286ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * receiving some chars from the parser. 1287ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Question: how much at a time ??? 1288ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1289ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 1290ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectcharactersDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *ch, int len) 1291ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1292ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project char out[40]; 1293ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int i; 1294ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1295ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project callbacks++; 1296ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout) 1297ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1298ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project for (i = 0;(i<len) && (i < 30);i++) 1299ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project out[i] = ch[i]; 1300ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project out[i] = 0; 1301ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1302ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "SAX.characters(%s, %d)\n", out, len); 1303ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1304ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1305ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1306ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * referenceDebug: 1307ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: An XML parser context 1308ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @name: The entity name 1309ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1310df143a5041f03a22808b59c76698770b74692815Selim Gurun * called when an entity reference is detected. 1311ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1312ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 1313ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectreferenceDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *name) 1314ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1315ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project callbacks++; 1316ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout) 1317ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1318ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "SAX.reference(%s)\n", name); 1319ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1320ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1321ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1322ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * ignorableWhitespaceDebug: 1323ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: An XML parser context 1324ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ch: a xmlChar string 1325ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @start: the first char in the string 1326ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @len: the number of xmlChar 1327ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1328ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * receiving some ignorable whitespaces from the parser. 1329ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Question: how much at a time ??? 1330ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1331ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 1332ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectignorableWhitespaceDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *ch, int len) 1333ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1334ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project char out[40]; 1335ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int i; 1336ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1337ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project callbacks++; 1338ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout) 1339ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1340ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project for (i = 0;(i<len) && (i < 30);i++) 1341ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project out[i] = ch[i]; 1342ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project out[i] = 0; 1343ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "SAX.ignorableWhitespace(%s, %d)\n", out, len); 1344ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1345ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1346ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1347ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * processingInstructionDebug: 1348ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: An XML parser context 1349ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @target: the target name 1350ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @data: the PI data's 1351ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @len: the number of xmlChar 1352ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1353ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * A processing instruction has been parsed. 1354ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1355ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 1356ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectprocessingInstructionDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *target, 1357ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const xmlChar *data) 1358ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1359ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project callbacks++; 1360ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout) 1361ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1362ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (data != NULL) 1363ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "SAX.processingInstruction(%s, %s)\n", 1364ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (char *) target, (char *) data); 1365ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 1366ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "SAX.processingInstruction(%s, NULL)\n", 1367ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (char *) target); 1368ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1369ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1370ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1371ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * cdataBlockDebug: 1372ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctx: the user data (XML parser context) 1373ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @value: The pcdata content 1374ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @len: the block length 1375ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1376ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * called when a pcdata block has been parsed 1377ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1378ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 1379ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectcdataBlockDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *value, int len) 1380ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1381ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project callbacks++; 1382ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout) 1383ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1384ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "SAX.pcdata(%.20s, %d)\n", 1385ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (char *) value, len); 1386ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1387ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1388ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1389ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * commentDebug: 1390ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: An XML parser context 1391ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @value: the comment content 1392ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1393ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * A comment has been parsed. 1394ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1395ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 1396ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectcommentDebug(void *ctx ATTRIBUTE_UNUSED, const xmlChar *value) 1397ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1398ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project callbacks++; 1399ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout) 1400ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1401ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "SAX.comment(%s)\n", value); 1402ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1403ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1404ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1405ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * warningDebug: 1406ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: An XML parser context 1407ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @msg: the message to display/transmit 1408ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @...: extra parameters for the message display 1409ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1410ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Display and format a warning messages, gives file, line, position and 1411ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * extra parameters. 1412ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1413ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void XMLCDECL 1414ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectwarningDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) 1415ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1416ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_list args; 1417ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1418ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project callbacks++; 1419ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout) 1420ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1421ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_start(args, msg); 1422ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "SAX.warning: "); 1423ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project vfprintf(stdout, msg, args); 1424ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_end(args); 1425ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1426ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1427ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1428ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * errorDebug: 1429ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: An XML parser context 1430ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @msg: the message to display/transmit 1431ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @...: extra parameters for the message display 1432ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1433ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Display and format a error messages, gives file, line, position and 1434ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * extra parameters. 1435ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1436ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void XMLCDECL 1437ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjecterrorDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) 1438ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1439ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_list args; 1440ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1441ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project callbacks++; 1442ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout) 1443ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1444ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_start(args, msg); 1445ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "SAX.error: "); 1446ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project vfprintf(stdout, msg, args); 1447ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_end(args); 1448ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1449ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1450ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1451ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * fatalErrorDebug: 1452ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: An XML parser context 1453ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @msg: the message to display/transmit 1454ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @...: extra parameters for the message display 1455ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1456ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Display and format a fatalError messages, gives file, line, position and 1457ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * extra parameters. 1458ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1459ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void XMLCDECL 1460ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectfatalErrorDebug(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) 1461ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1462ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_list args; 1463ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1464ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project callbacks++; 1465ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout) 1466ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1467ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_start(args, msg); 1468ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "SAX.fatalError: "); 1469ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project vfprintf(stdout, msg, args); 1470ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_end(args); 1471ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1472ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1473ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic xmlSAXHandler debugSAXHandlerStruct = { 1474ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project internalSubsetDebug, 1475ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project isStandaloneDebug, 1476ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project hasInternalSubsetDebug, 1477ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project hasExternalSubsetDebug, 1478ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project resolveEntityDebug, 1479ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project getEntityDebug, 1480ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project entityDeclDebug, 1481ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project notationDeclDebug, 1482ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project attributeDeclDebug, 1483ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project elementDeclDebug, 1484ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project unparsedEntityDeclDebug, 1485ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project setDocumentLocatorDebug, 1486ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project startDocumentDebug, 1487ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project endDocumentDebug, 1488ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project startElementDebug, 1489ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project endElementDebug, 1490ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project referenceDebug, 1491ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project charactersDebug, 1492ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ignorableWhitespaceDebug, 1493ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project processingInstructionDebug, 1494ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project commentDebug, 1495ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project warningDebug, 1496ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project errorDebug, 1497ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fatalErrorDebug, 1498ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project getParameterEntityDebug, 1499ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cdataBlockDebug, 1500ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project externalSubsetDebug, 1501ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1, 1502ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, 1503ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, 1504ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, 1505ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL 1506ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project}; 1507ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1508ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlSAXHandlerPtr debugSAXHandler = &debugSAXHandlerStruct; 1509ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1510ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/* 1511ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * SAX2 specific callbacks 1512ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1513ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1514ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * startElementNsDebug: 1515ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: An XML parser context 1516ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @name: The element name 1517ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1518ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * called when an opening tag has been processed. 1519ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1520ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 1521ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectstartElementNsDebug(void *ctx ATTRIBUTE_UNUSED, 1522ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const xmlChar *localname, 1523ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const xmlChar *prefix, 1524ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const xmlChar *URI, 1525ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int nb_namespaces, 1526ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const xmlChar **namespaces, 1527ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int nb_attributes, 1528ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int nb_defaulted, 1529ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const xmlChar **attributes) 1530ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1531ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int i; 1532ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1533ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project callbacks++; 1534ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout) 1535ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1536ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "SAX.startElementNs(%s", (char *) localname); 1537ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (prefix == NULL) 1538ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, ", NULL"); 1539ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 1540ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, ", %s", (char *) prefix); 1541ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (URI == NULL) 1542ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, ", NULL"); 1543ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 1544ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, ", '%s'", (char *) URI); 1545ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, ", %d", nb_namespaces); 1546df143a5041f03a22808b59c76698770b74692815Selim Gurun 1547ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (namespaces != NULL) { 1548ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project for (i = 0;i < nb_namespaces * 2;i++) { 1549ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, ", xmlns"); 1550ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (namespaces[i] != NULL) 1551ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, ":%s", namespaces[i]); 1552ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project i++; 1553ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "='%s'", namespaces[i]); 1554ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1555ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1556ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, ", %d, %d", nb_attributes, nb_defaulted); 1557ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (attributes != NULL) { 1558ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project for (i = 0;i < nb_attributes * 5;i += 5) { 1559ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (attributes[i + 1] != NULL) 1560ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, ", %s:%s='", attributes[i + 1], attributes[i]); 1561ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 1562ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, ", %s='", attributes[i]); 1563ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "%.4s...', %d", attributes[i + 3], 1564ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (int)(attributes[i + 4] - attributes[i + 3])); 1565ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1566ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1567ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, ")\n"); 1568ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1569ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1570ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1571ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * endElementDebug: 1572ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: An XML parser context 1573ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @name: The element name 1574ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1575ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * called when the end of an element has been detected. 1576ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1577ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 1578ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectendElementNsDebug(void *ctx ATTRIBUTE_UNUSED, 1579ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const xmlChar *localname, 1580ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const xmlChar *prefix, 1581ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const xmlChar *URI) 1582ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1583ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project callbacks++; 1584ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout) 1585ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1586ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, "SAX.endElementNs(%s", (char *) localname); 1587ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (prefix == NULL) 1588ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, ", NULL"); 1589ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 1590ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, ", %s", (char *) prefix); 1591ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (URI == NULL) 1592ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, ", NULL)\n"); 1593ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 1594ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stdout, ", '%s')\n", (char *) URI); 1595ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1596ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1597ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic xmlSAXHandler debugSAX2HandlerStruct = { 1598ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project internalSubsetDebug, 1599ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project isStandaloneDebug, 1600ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project hasInternalSubsetDebug, 1601ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project hasExternalSubsetDebug, 1602ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project resolveEntityDebug, 1603ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project getEntityDebug, 1604ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project entityDeclDebug, 1605ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project notationDeclDebug, 1606ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project attributeDeclDebug, 1607ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project elementDeclDebug, 1608ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project unparsedEntityDeclDebug, 1609ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project setDocumentLocatorDebug, 1610ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project startDocumentDebug, 1611ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project endDocumentDebug, 1612ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, 1613ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, 1614ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project referenceDebug, 1615ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project charactersDebug, 1616ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ignorableWhitespaceDebug, 1617ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project processingInstructionDebug, 1618ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project commentDebug, 1619ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project warningDebug, 1620ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project errorDebug, 1621ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fatalErrorDebug, 1622ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project getParameterEntityDebug, 1623ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cdataBlockDebug, 1624ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project externalSubsetDebug, 1625ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project XML_SAX2_MAGIC, 1626ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, 1627ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project startElementNsDebug, 1628ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project endElementNsDebug, 1629ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL 1630ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project}; 1631ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1632ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic xmlSAXHandlerPtr debugSAX2Handler = &debugSAX2HandlerStruct; 1633ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1634ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 1635ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjecttestSAX(const char *filename) { 1636ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlSAXHandlerPtr handler; 1637ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const char *user_data = "user_data"; /* mostly for debugging */ 1638ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserInputBufferPtr buf = NULL; 1639ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserInputPtr inputStream; 1640ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserCtxtPtr ctxt = NULL; 1641ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlSAXHandlerPtr old_sax = NULL; 1642ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1643ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project callbacks = 0; 1644ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1645ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout) { 1646ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project handler = emptySAXHandler; 1647ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_SAX1_ENABLED 1648ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (sax1) { 1649ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project handler = debugSAXHandler; 1650ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 1651ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 1652ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project handler = debugSAX2Handler; 1653ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1654ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1655ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 1656ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * it's not the simplest code but the most generic in term of I/O 1657ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1658ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project buf = xmlParserInputBufferCreateFilename(filename, XML_CHAR_ENCODING_NONE); 1659ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (buf == NULL) { 1660ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project goto error; 1661ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1662ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1663ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_SCHEMAS_ENABLED 1664ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (wxschemas != NULL) { 1665ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int ret; 1666ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlSchemaValidCtxtPtr vctxt; 1667ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1668ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project vctxt = xmlSchemaNewValidCtxt(wxschemas); 1669ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlSchemaSetValidErrors(vctxt, 1670ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (xmlSchemaValidityErrorFunc) fprintf, 1671ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (xmlSchemaValidityWarningFunc) fprintf, 1672ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project stderr); 167394442ad4107000e6d49f9b85a46a591495a57632Selim Gurun xmlSchemaValidateSetFilename(vctxt, filename); 1674ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1675ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ret = xmlSchemaValidateStream(vctxt, buf, 0, handler, 1676ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (void *)user_data); 1677ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (repeat == 0) { 1678ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ret == 0) { 1679ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "%s validates\n", filename); 1680ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (ret > 0) { 1681ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "%s fails to validate\n", filename); 1682ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_VALID; 1683ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 1684ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "%s validation generated an internal error\n", 1685ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project filename); 1686ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_VALID; 1687ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1688ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1689ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlSchemaFreeValidCtxt(vctxt); 1690ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else 1691ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 1692ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project { 1693ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 1694ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Create the parser context amd hook the input 1695ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1696ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt = xmlNewParserCtxt(); 1697ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt == NULL) { 1698ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFreeParserInputBuffer(buf); 1699ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project goto error; 1700ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1701ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project old_sax = ctxt->sax; 1702ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->sax = handler; 1703ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->userData = (void *) user_data; 1704ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project inputStream = xmlNewIOInputStream(ctxt, buf, XML_CHAR_ENCODING_NONE); 1705ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (inputStream == NULL) { 1706ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFreeParserInputBuffer(buf); 1707ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project goto error; 1708ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1709ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project inputPush(ctxt, inputStream); 1710df143a5041f03a22808b59c76698770b74692815Selim Gurun 1711ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* do the parsing */ 1712ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParseDocument(ctxt); 1713ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1714ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt->myDoc != NULL) { 1715ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "SAX generated a doc !\n"); 1716ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFreeDoc(ctxt->myDoc); 1717ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->myDoc = NULL; 1718ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1719ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1720ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1721ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projecterror: 1722ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt != NULL) { 1723ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->sax = old_sax; 1724ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFreeParserCtxt(ctxt); 1725ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1726ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1727ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1728ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/************************************************************************ 1729df143a5041f03a22808b59c76698770b74692815Selim Gurun * * 1730df143a5041f03a22808b59c76698770b74692815Selim Gurun * Stream Test processing * 1731df143a5041f03a22808b59c76698770b74692815Selim Gurun * * 1732ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ************************************************************************/ 1733ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_READER_ENABLED 1734ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void processNode(xmlTextReaderPtr reader) { 1735ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const xmlChar *name, *value; 1736ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int type, empty; 1737ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1738ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project type = xmlTextReaderNodeType(reader); 1739ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project empty = xmlTextReaderIsEmptyElement(reader); 1740ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1741ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (debug) { 1742ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project name = xmlTextReaderConstName(reader); 1743ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (name == NULL) 1744ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project name = BAD_CAST "--"; 1745ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1746ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project value = xmlTextReaderConstValue(reader); 1747ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1748df143a5041f03a22808b59c76698770b74692815Selim Gurun 1749df143a5041f03a22808b59c76698770b74692815Selim Gurun printf("%d %d %s %d %d", 1750ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlTextReaderDepth(reader), 1751ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project type, 1752ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project name, 1753ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project empty, 1754ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlTextReaderHasValue(reader)); 1755ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (value == NULL) 1756ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\n"); 1757ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else { 1758ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf(" %s\n", value); 1759ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1760ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1761ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_PATTERN_ENABLED 1762ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (patternc) { 1763ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlChar *path = NULL; 1764ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int match = -1; 1765df143a5041f03a22808b59c76698770b74692815Selim Gurun 1766ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (type == XML_READER_TYPE_ELEMENT) { 1767ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* do the check only on element start */ 1768ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project match = xmlPatternMatch(patternc, xmlTextReaderCurrentNode(reader)); 1769ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1770ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (match) { 1771df143a5041f03a22808b59c76698770b74692815Selim Gurun#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED) 1772ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project path = xmlGetNodePath(xmlTextReaderCurrentNode(reader)); 1773ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("Node %s matches pattern %s\n", path, pattern); 1774df143a5041f03a22808b59c76698770b74692815Selim Gurun#else 1775df143a5041f03a22808b59c76698770b74692815Selim Gurun printf("Node %s matches pattern %s\n", 1776df143a5041f03a22808b59c76698770b74692815Selim Gurun xmlTextReaderConstName(reader), pattern); 1777df143a5041f03a22808b59c76698770b74692815Selim Gurun#endif 1778ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1779ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1780ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (patstream != NULL) { 1781ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int ret; 1782ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1783ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (type == XML_READER_TYPE_ELEMENT) { 1784ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ret = xmlStreamPush(patstream, 1785ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlTextReaderConstLocalName(reader), 1786ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlTextReaderConstNamespaceUri(reader)); 1787ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ret < 0) { 1788ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "xmlStreamPush() failure\n"); 1789ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFreeStreamCtxt(patstream); 1790ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project patstream = NULL; 1791ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (ret != match) { 1792df143a5041f03a22808b59c76698770b74692815Selim Gurun#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED) 1793ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (path == NULL) { 1794ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project path = xmlGetNodePath( 1795ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlTextReaderCurrentNode(reader)); 1796ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1797df143a5041f03a22808b59c76698770b74692815Selim Gurun#endif 1798ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, 1799ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "xmlPatternMatch and xmlStreamPush disagree\n"); 1800df143a5041f03a22808b59c76698770b74692815Selim Gurun if (path != NULL) 1801df143a5041f03a22808b59c76698770b74692815Selim Gurun fprintf(stderr, " pattern %s node %s\n", 1802df143a5041f03a22808b59c76698770b74692815Selim Gurun pattern, path); 1803df143a5041f03a22808b59c76698770b74692815Selim Gurun else 1804df143a5041f03a22808b59c76698770b74692815Selim Gurun fprintf(stderr, " pattern %s node %s\n", 1805df143a5041f03a22808b59c76698770b74692815Selim Gurun pattern, xmlTextReaderConstName(reader)); 1806ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1807ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1808df143a5041f03a22808b59c76698770b74692815Selim Gurun } 1809ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((type == XML_READER_TYPE_END_ELEMENT) || 1810ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ((type == XML_READER_TYPE_ELEMENT) && (empty))) { 1811ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ret = xmlStreamPop(patstream); 1812ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ret < 0) { 1813ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "xmlStreamPop() failure\n"); 1814ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFreeStreamCtxt(patstream); 1815ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project patstream = NULL; 1816ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1817ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1818ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1819ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (path != NULL) 1820ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFree(path); 1821ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1822ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 1823ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1824ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1825ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void streamFile(char *filename) { 1826ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlTextReaderPtr reader; 1827ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int ret; 182894442ad4107000e6d49f9b85a46a591495a57632Selim Gurun#ifdef HAVE_MMAP 1829ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int fd = -1; 1830ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project struct stat info; 1831ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const char *base = NULL; 1832ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserInputBufferPtr input = NULL; 1833ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1834ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (memory) { 1835df143a5041f03a22808b59c76698770b74692815Selim Gurun if (stat(filename, &info) < 0) 1836ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1837ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((fd = open(filename, O_RDONLY)) < 0) 1838ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1839ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project base = mmap(NULL, info.st_size, PROT_READ, MAP_SHARED, fd, 0) ; 1840ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (base == (void *) MAP_FAILED) 1841ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1842ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1843ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project reader = xmlReaderForMemory(base, info.st_size, filename, 1844ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, options); 1845ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else 1846ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 1847ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project reader = xmlReaderForFile(filename, NULL, options); 1848ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_PATTERN_ENABLED 1849ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (pattern != NULL) { 1850ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project patternc = xmlPatterncompile((const xmlChar *) pattern, NULL, 0, NULL); 1851ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (patternc == NULL) { 1852ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 1853ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Pattern %s failed to compile\n", pattern); 1854ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_SCHEMAPAT; 1855ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project pattern = NULL; 1856ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1857ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1858ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (patternc != NULL) { 1859ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project patstream = xmlPatternGetStreamCtxt(patternc); 1860ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (patstream != NULL) { 1861ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ret = xmlStreamPush(patstream, NULL, NULL); 1862ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ret < 0) { 1863ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "xmlStreamPush() failure\n"); 1864ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFreeStreamCtxt(patstream); 1865ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project patstream = NULL; 1866ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1867ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1868ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1869ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 1870ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1871ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1872ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (reader != NULL) { 1873ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_VALID_ENABLED 1874ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (valid) 1875ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlTextReaderSetParserProp(reader, XML_PARSER_VALIDATE, 1); 1876ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 1877ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_VALID_ENABLED */ 187894442ad4107000e6d49f9b85a46a591495a57632Selim Gurun if (loaddtd) 187994442ad4107000e6d49f9b85a46a591495a57632Selim Gurun xmlTextReaderSetParserProp(reader, XML_PARSER_LOADDTD, 1); 1880ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_SCHEMAS_ENABLED 1881ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (relaxng != NULL) { 1882ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((timing) && (!repeat)) { 1883ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project startTimer(); 1884ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1885ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ret = xmlTextReaderRelaxNGValidate(reader, relaxng); 1886ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ret < 0) { 1887ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 1888ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Relax-NG schema %s failed to compile\n", relaxng); 1889ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_SCHEMACOMP; 1890ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project relaxng = NULL; 1891ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1892ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((timing) && (!repeat)) { 1893ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project endTimer("Compiling the schemas"); 1894ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1895ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1896ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (schema != NULL) { 1897ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((timing) && (!repeat)) { 1898ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project startTimer(); 1899ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1900ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ret = xmlTextReaderSchemaValidate(reader, schema); 1901ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ret < 0) { 1902ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 1903ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "XSD schema %s failed to compile\n", schema); 1904ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_SCHEMACOMP; 1905ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project schema = NULL; 1906ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1907ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((timing) && (!repeat)) { 1908ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project endTimer("Compiling the schemas"); 1909ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1910ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1911ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 1912ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1913ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 1914ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Process all nodes in sequence 1915ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1916ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((timing) && (!repeat)) { 1917ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project startTimer(); 1918ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1919ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ret = xmlTextReaderRead(reader); 1920ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while (ret == 1) { 1921ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((debug) 1922ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_PATTERN_ENABLED 1923ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project || (patternc) 1924ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 1925ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ) 1926ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project processNode(reader); 1927ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ret = xmlTextReaderRead(reader); 1928ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1929ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((timing) && (!repeat)) { 1930ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_SCHEMAS_ENABLED 1931ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (relaxng != NULL) 1932ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project endTimer("Parsing and validating"); 1933ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 1934ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 1935ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_VALID_ENABLED 1936ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (valid) 1937ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project endTimer("Parsing and validating"); 1938ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 1939ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 1940ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project endTimer("Parsing"); 1941ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1942ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1943ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_VALID_ENABLED 1944ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (valid) { 1945ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (xmlTextReaderIsValid(reader) != 1) { 1946ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 1947ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Document %s does not validate\n", filename); 1948ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_VALID; 1949ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1950ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1951ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_VALID_ENABLED */ 1952ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_SCHEMAS_ENABLED 1953ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((relaxng != NULL) || (schema != NULL)) { 1954ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (xmlTextReaderIsValid(reader) != 1) { 1955ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "%s fails to validate\n", filename); 1956ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_VALID; 1957ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 1958ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "%s validates\n", filename); 1959ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1960ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1961ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 1962ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 1963ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Done, cleanup and status 1964ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1965ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFreeTextReader(reader); 1966ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ret != 0) { 1967ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "%s : failed to parse\n", filename); 1968ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_UNCLASS; 1969ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1970ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 1971ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "Unable to open %s\n", filename); 1972ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_UNCLASS; 1973ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1974ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_PATTERN_ENABLED 1975ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (patstream != NULL) { 1976ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFreeStreamCtxt(patstream); 1977ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project patstream = NULL; 1978ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1979ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 198094442ad4107000e6d49f9b85a46a591495a57632Selim Gurun#ifdef HAVE_MMAP 1981ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (memory) { 1982ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFreeParserInputBuffer(input); 1983ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project munmap((char *) base, info.st_size); 1984ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project close(fd); 1985ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1986ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 1987ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1988ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1989ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void walkDoc(xmlDocPtr doc) { 1990ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlTextReaderPtr reader; 1991ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int ret; 1992ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1993ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_PATTERN_ENABLED 1994ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr root; 1995ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const xmlChar *namespaces[22]; 1996ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int i; 1997ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNsPtr ns; 1998ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1999ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project root = xmlDocGetRootElement(doc); 2000ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project for (ns = root->nsDef, i = 0;ns != NULL && i < 20;ns=ns->next) { 2001ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project namespaces[i++] = ns->href; 2002ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project namespaces[i++] = ns->prefix; 2003ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2004ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project namespaces[i++] = NULL; 2005df143a5041f03a22808b59c76698770b74692815Selim Gurun namespaces[i] = NULL; 2006ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2007ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (pattern != NULL) { 2008ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project patternc = xmlPatterncompile((const xmlChar *) pattern, doc->dict, 2009ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 0, &namespaces[0]); 2010ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (patternc == NULL) { 2011ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 2012ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Pattern %s failed to compile\n", pattern); 2013ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_SCHEMAPAT; 2014ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project pattern = NULL; 2015ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2016ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2017ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (patternc != NULL) { 2018ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project patstream = xmlPatternGetStreamCtxt(patternc); 2019ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (patstream != NULL) { 2020ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ret = xmlStreamPush(patstream, NULL, NULL); 2021ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ret < 0) { 2022ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "xmlStreamPush() failure\n"); 2023ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFreeStreamCtxt(patstream); 2024ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project patstream = NULL; 2025ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2026ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2027ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2028ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_PATTERN_ENABLED */ 2029ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project reader = xmlReaderWalker(doc); 2030ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (reader != NULL) { 2031ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((timing) && (!repeat)) { 2032ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project startTimer(); 2033ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2034ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ret = xmlTextReaderRead(reader); 2035ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while (ret == 1) { 2036ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((debug) 2037ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_PATTERN_ENABLED 2038ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project || (patternc) 2039ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 2040ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ) 2041ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project processNode(reader); 2042ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ret = xmlTextReaderRead(reader); 2043ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2044ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((timing) && (!repeat)) { 2045ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project endTimer("walking through the doc"); 2046ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2047ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFreeTextReader(reader); 2048ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ret != 0) { 2049ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "failed to walk through the doc\n"); 2050ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_UNCLASS; 2051ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2052ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2053ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "Failed to crate a reader from the document\n"); 2054ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_UNCLASS; 2055ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2056ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_PATTERN_ENABLED 2057ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (patstream != NULL) { 2058ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFreeStreamCtxt(patstream); 2059ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project patstream = NULL; 2060ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2061ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 2062ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 2063ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_READER_ENABLED */ 2064ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2065df143a5041f03a22808b59c76698770b74692815Selim Gurun#ifdef LIBXML_XPATH_ENABLED 2066df143a5041f03a22808b59c76698770b74692815Selim Gurun/************************************************************************ 2067df143a5041f03a22808b59c76698770b74692815Selim Gurun * * 2068df143a5041f03a22808b59c76698770b74692815Selim Gurun * XPath Query * 2069df143a5041f03a22808b59c76698770b74692815Selim Gurun * * 2070df143a5041f03a22808b59c76698770b74692815Selim Gurun ************************************************************************/ 2071df143a5041f03a22808b59c76698770b74692815Selim Gurun 2072df143a5041f03a22808b59c76698770b74692815Selim Gurunstatic void doXPathDump(xmlXPathObjectPtr cur) { 2073df143a5041f03a22808b59c76698770b74692815Selim Gurun switch(cur->type) { 2074df143a5041f03a22808b59c76698770b74692815Selim Gurun case XPATH_NODESET: { 2075df143a5041f03a22808b59c76698770b74692815Selim Gurun int i; 2076df143a5041f03a22808b59c76698770b74692815Selim Gurun xmlNodePtr node; 2077df143a5041f03a22808b59c76698770b74692815Selim Gurun#ifdef LIBXML_OUTPUT_ENABLED 2078df143a5041f03a22808b59c76698770b74692815Selim Gurun xmlSaveCtxtPtr ctxt; 2079df143a5041f03a22808b59c76698770b74692815Selim Gurun 208094442ad4107000e6d49f9b85a46a591495a57632Selim Gurun if ((cur->nodesetval == NULL) || (cur->nodesetval->nodeNr <= 0)) { 2081df143a5041f03a22808b59c76698770b74692815Selim Gurun fprintf(stderr, "XPath set is empty\n"); 2082df143a5041f03a22808b59c76698770b74692815Selim Gurun progresult = XMLLINT_ERR_XPATH; 2083df143a5041f03a22808b59c76698770b74692815Selim Gurun break; 2084df143a5041f03a22808b59c76698770b74692815Selim Gurun } 2085df143a5041f03a22808b59c76698770b74692815Selim Gurun ctxt = xmlSaveToFd(1, NULL, 0); 2086df143a5041f03a22808b59c76698770b74692815Selim Gurun if (ctxt == NULL) { 2087df143a5041f03a22808b59c76698770b74692815Selim Gurun fprintf(stderr, "Out of memory for XPath\n"); 2088df143a5041f03a22808b59c76698770b74692815Selim Gurun progresult = XMLLINT_ERR_MEM; 2089df143a5041f03a22808b59c76698770b74692815Selim Gurun return; 2090df143a5041f03a22808b59c76698770b74692815Selim Gurun } 2091df143a5041f03a22808b59c76698770b74692815Selim Gurun for (i = 0;i < cur->nodesetval->nodeNr;i++) { 2092df143a5041f03a22808b59c76698770b74692815Selim Gurun node = cur->nodesetval->nodeTab[i]; 2093df143a5041f03a22808b59c76698770b74692815Selim Gurun xmlSaveTree(ctxt, node); 2094df143a5041f03a22808b59c76698770b74692815Selim Gurun } 2095df143a5041f03a22808b59c76698770b74692815Selim Gurun xmlSaveClose(ctxt); 2096df143a5041f03a22808b59c76698770b74692815Selim Gurun#else 2097df143a5041f03a22808b59c76698770b74692815Selim Gurun printf("xpath returned %d nodes\n", cur->nodesetval->nodeNr); 2098df143a5041f03a22808b59c76698770b74692815Selim Gurun#endif 2099df143a5041f03a22808b59c76698770b74692815Selim Gurun break; 2100df143a5041f03a22808b59c76698770b74692815Selim Gurun } 2101df143a5041f03a22808b59c76698770b74692815Selim Gurun case XPATH_BOOLEAN: 2102df143a5041f03a22808b59c76698770b74692815Selim Gurun if (cur->boolval) printf("true"); 2103df143a5041f03a22808b59c76698770b74692815Selim Gurun else printf("false"); 2104df143a5041f03a22808b59c76698770b74692815Selim Gurun break; 2105df143a5041f03a22808b59c76698770b74692815Selim Gurun case XPATH_NUMBER: 2106df143a5041f03a22808b59c76698770b74692815Selim Gurun switch (xmlXPathIsInf(cur->floatval)) { 2107df143a5041f03a22808b59c76698770b74692815Selim Gurun case 1: 2108df143a5041f03a22808b59c76698770b74692815Selim Gurun printf("Infinity"); 2109df143a5041f03a22808b59c76698770b74692815Selim Gurun break; 2110df143a5041f03a22808b59c76698770b74692815Selim Gurun case -1: 2111df143a5041f03a22808b59c76698770b74692815Selim Gurun printf("-Infinity"); 2112df143a5041f03a22808b59c76698770b74692815Selim Gurun break; 2113df143a5041f03a22808b59c76698770b74692815Selim Gurun default: 2114df143a5041f03a22808b59c76698770b74692815Selim Gurun if (xmlXPathIsNaN(cur->floatval)) { 2115df143a5041f03a22808b59c76698770b74692815Selim Gurun printf("NaN"); 2116df143a5041f03a22808b59c76698770b74692815Selim Gurun } else { 2117df143a5041f03a22808b59c76698770b74692815Selim Gurun printf("%0g", cur->floatval); 2118df143a5041f03a22808b59c76698770b74692815Selim Gurun } 2119df143a5041f03a22808b59c76698770b74692815Selim Gurun } 2120df143a5041f03a22808b59c76698770b74692815Selim Gurun break; 2121df143a5041f03a22808b59c76698770b74692815Selim Gurun case XPATH_STRING: 2122df143a5041f03a22808b59c76698770b74692815Selim Gurun printf("%s", (const char *) cur->stringval); 2123df143a5041f03a22808b59c76698770b74692815Selim Gurun break; 2124df143a5041f03a22808b59c76698770b74692815Selim Gurun case XPATH_UNDEFINED: 2125df143a5041f03a22808b59c76698770b74692815Selim Gurun fprintf(stderr, "XPath Object is uninitialized\n"); 2126df143a5041f03a22808b59c76698770b74692815Selim Gurun progresult = XMLLINT_ERR_XPATH; 2127df143a5041f03a22808b59c76698770b74692815Selim Gurun break; 2128df143a5041f03a22808b59c76698770b74692815Selim Gurun default: 2129df143a5041f03a22808b59c76698770b74692815Selim Gurun fprintf(stderr, "XPath object of unexpected type\n"); 2130df143a5041f03a22808b59c76698770b74692815Selim Gurun progresult = XMLLINT_ERR_XPATH; 2131df143a5041f03a22808b59c76698770b74692815Selim Gurun break; 2132df143a5041f03a22808b59c76698770b74692815Selim Gurun } 2133df143a5041f03a22808b59c76698770b74692815Selim Gurun} 2134df143a5041f03a22808b59c76698770b74692815Selim Gurun 2135df143a5041f03a22808b59c76698770b74692815Selim Gurunstatic void doXPathQuery(xmlDocPtr doc, const char *query) { 2136df143a5041f03a22808b59c76698770b74692815Selim Gurun xmlXPathContextPtr ctxt; 2137df143a5041f03a22808b59c76698770b74692815Selim Gurun xmlXPathObjectPtr res; 2138df143a5041f03a22808b59c76698770b74692815Selim Gurun 2139df143a5041f03a22808b59c76698770b74692815Selim Gurun ctxt = xmlXPathNewContext(doc); 2140df143a5041f03a22808b59c76698770b74692815Selim Gurun if (ctxt == NULL) { 2141df143a5041f03a22808b59c76698770b74692815Selim Gurun fprintf(stderr, "Out of memory for XPath\n"); 2142df143a5041f03a22808b59c76698770b74692815Selim Gurun progresult = XMLLINT_ERR_MEM; 2143df143a5041f03a22808b59c76698770b74692815Selim Gurun return; 2144df143a5041f03a22808b59c76698770b74692815Selim Gurun } 214594442ad4107000e6d49f9b85a46a591495a57632Selim Gurun ctxt->node = (xmlNodePtr) doc; 2146df143a5041f03a22808b59c76698770b74692815Selim Gurun res = xmlXPathEval(BAD_CAST query, ctxt); 2147df143a5041f03a22808b59c76698770b74692815Selim Gurun xmlXPathFreeContext(ctxt); 2148df143a5041f03a22808b59c76698770b74692815Selim Gurun 2149df143a5041f03a22808b59c76698770b74692815Selim Gurun if (res == NULL) { 2150df143a5041f03a22808b59c76698770b74692815Selim Gurun fprintf(stderr, "XPath evaluation failure\n"); 2151df143a5041f03a22808b59c76698770b74692815Selim Gurun progresult = XMLLINT_ERR_XPATH; 2152df143a5041f03a22808b59c76698770b74692815Selim Gurun return; 2153df143a5041f03a22808b59c76698770b74692815Selim Gurun } 2154df143a5041f03a22808b59c76698770b74692815Selim Gurun doXPathDump(res); 2155df143a5041f03a22808b59c76698770b74692815Selim Gurun xmlXPathFreeObject(res); 2156df143a5041f03a22808b59c76698770b74692815Selim Gurun} 2157df143a5041f03a22808b59c76698770b74692815Selim Gurun#endif /* LIBXML_XPATH_ENABLED */ 2158df143a5041f03a22808b59c76698770b74692815Selim Gurun 2159ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/************************************************************************ 2160df143a5041f03a22808b59c76698770b74692815Selim Gurun * * 2161df143a5041f03a22808b59c76698770b74692815Selim Gurun * Tree Test processing * 2162df143a5041f03a22808b59c76698770b74692815Selim Gurun * * 2163ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ************************************************************************/ 2164ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void parseAndPrintFile(char *filename, xmlParserCtxtPtr rectxt) { 2165ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDocPtr doc = NULL; 2166ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_TREE_ENABLED 2167ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDocPtr tmp; 2168ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_TREE_ENABLED */ 2169ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2170ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((timing) && (!repeat)) 2171ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project startTimer(); 2172df143a5041f03a22808b59c76698770b74692815Selim Gurun 2173ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2174ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_TREE_ENABLED 2175ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (filename == NULL) { 2176ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (generate) { 2177ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr n; 2178ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2179ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project doc = xmlNewDoc(BAD_CAST "1.0"); 2180ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project n = xmlNewDocNode(doc, NULL, BAD_CAST "info", NULL); 2181ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodeSetContent(n, BAD_CAST "abc"); 2182ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDocSetRootElement(doc, n); 2183ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2184ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2185ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_TREE_ENABLED */ 2186ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_HTML_ENABLED 2187ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_PUSH_ENABLED 2188ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((html) && (push)) { 2189ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project FILE *f; 2190ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2191ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__) 2192ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project f = fopen(filename, "rb"); 2193ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#else 2194ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project f = fopen(filename, "r"); 2195ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 2196ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (f != NULL) { 219794442ad4107000e6d49f9b85a46a591495a57632Selim Gurun int res; 2198ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project char chars[4096]; 2199ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project htmlParserCtxtPtr ctxt; 2200ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2201ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project res = fread(chars, 1, 4, f); 2202ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (res > 0) { 2203ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt = htmlCreatePushParserCtxt(NULL, NULL, 2204ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project chars, res, filename, XML_CHAR_ENCODING_NONE); 220594442ad4107000e6d49f9b85a46a591495a57632Selim Gurun while ((res = fread(chars, 1, pushsize, f)) > 0) { 2206ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project htmlParseChunk(ctxt, chars, res, 0); 2207ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2208ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project htmlParseChunk(ctxt, chars, 0, 1); 2209ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project doc = ctxt->myDoc; 2210ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project htmlFreeParserCtxt(ctxt); 2211ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2212ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fclose(f); 2213ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2214ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2215ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_PUSH_ENABLED */ 221694442ad4107000e6d49f9b85a46a591495a57632Selim Gurun#ifdef HAVE_MMAP 2217ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((html) && (memory)) { 2218ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int fd; 2219ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project struct stat info; 2220ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const char *base; 2221df143a5041f03a22808b59c76698770b74692815Selim Gurun if (stat(filename, &info) < 0) 2222ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 2223ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((fd = open(filename, O_RDONLY)) < 0) 2224ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 2225ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project base = mmap(NULL, info.st_size, PROT_READ, MAP_SHARED, fd, 0) ; 2226ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (base == (void *) MAP_FAILED) 2227ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 2228ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2229ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project doc = htmlReadMemory((char *) base, info.st_size, filename, 2230ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, options); 2231df143a5041f03a22808b59c76698770b74692815Selim Gurun 2232ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project munmap((char *) base, info.st_size); 2233ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project close(fd); 2234ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2235ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 2236ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if (html) { 2237ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project doc = htmlReadFile(filename, NULL, options); 2238ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2239ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_HTML_ENABLED */ 2240ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else { 2241ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_PUSH_ENABLED 2242ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 2243ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * build an XML tree from a string; 2244ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 2245ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (push) { 2246ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project FILE *f; 2247ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2248ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* '-' Usually means stdin -<sven@zen.org> */ 2249ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((filename[0] == '-') && (filename[1] == 0)) { 2250ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project f = stdin; 2251ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2252ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__) 2253ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project f = fopen(filename, "rb"); 2254ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#else 2255ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project f = fopen(filename, "r"); 2256ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 2257ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2258ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (f != NULL) { 2259ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int ret; 2260ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int res, size = 1024; 2261ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project char chars[1024]; 2262ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserCtxtPtr ctxt; 2263ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2264ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* if (repeat) size = 1024; */ 2265ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project res = fread(chars, 1, 4, f); 2266ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (res > 0) { 2267ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt = xmlCreatePushParserCtxt(NULL, NULL, 2268ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project chars, res, filename); 2269ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtUseOptions(ctxt, options); 2270ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while ((res = fread(chars, 1, size, f)) > 0) { 2271ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParseChunk(ctxt, chars, res, 0); 2272ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2273ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParseChunk(ctxt, chars, 0, 1); 2274ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project doc = ctxt->myDoc; 2275ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ret = ctxt->wellFormed; 2276ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFreeParserCtxt(ctxt); 2277ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ret) { 2278ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFreeDoc(doc); 2279ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project doc = NULL; 2280ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2281ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2282df143a5041f03a22808b59c76698770b74692815Selim Gurun if (f != stdin) 2283df143a5041f03a22808b59c76698770b74692815Selim Gurun fclose(f); 2284ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2285ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else 2286ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_PUSH_ENABLED */ 2287ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (testIO) { 2288ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((filename[0] == '-') && (filename[1] == 0)) { 2289ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project doc = xmlReadFd(0, NULL, NULL, options); 2290ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2291ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project FILE *f; 2292ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2293ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#if defined(_WIN32) || defined (__DJGPP__) && !defined (__CYGWIN__) 2294ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project f = fopen(filename, "rb"); 2295ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#else 2296ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project f = fopen(filename, "r"); 2297ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 2298ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (f != NULL) { 2299ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (rectxt == NULL) 2300ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project doc = xmlReadIO((xmlInputReadCallback) myRead, 2301ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (xmlInputCloseCallback) myClose, f, 2302ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project filename, NULL, options); 2303ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 2304ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project doc = xmlCtxtReadIO(rectxt, 2305ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (xmlInputReadCallback) myRead, 2306ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (xmlInputCloseCallback) myClose, f, 2307ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project filename, NULL, options); 2308ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else 2309ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project doc = NULL; 2310ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2311ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (htmlout) { 2312ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserCtxtPtr ctxt; 2313ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2314ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (rectxt == NULL) 2315ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt = xmlNewParserCtxt(); 2316ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 2317ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt = rectxt; 2318df143a5041f03a22808b59c76698770b74692815Selim Gurun if (ctxt == NULL) { 2319ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project doc = NULL; 2320ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2321ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->sax->error = xmlHTMLError; 2322ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->sax->warning = xmlHTMLWarning; 2323ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->vctxt.error = xmlHTMLValidityError; 2324ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->vctxt.warning = xmlHTMLValidityWarning; 2325ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2326ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project doc = xmlCtxtReadFile(ctxt, filename, NULL, options); 2327ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2328ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (rectxt == NULL) 2329ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFreeParserCtxt(ctxt); 2330ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 233194442ad4107000e6d49f9b85a46a591495a57632Selim Gurun#ifdef HAVE_MMAP 2332ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (memory) { 2333ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int fd; 2334ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project struct stat info; 2335ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const char *base; 2336df143a5041f03a22808b59c76698770b74692815Selim Gurun if (stat(filename, &info) < 0) 2337ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 2338ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((fd = open(filename, O_RDONLY)) < 0) 2339ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 2340ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project base = mmap(NULL, info.st_size, PROT_READ, MAP_SHARED, fd, 0) ; 2341ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (base == (void *) MAP_FAILED) 2342ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 2343ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2344ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (rectxt == NULL) 2345ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project doc = xmlReadMemory((char *) base, info.st_size, 2346ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project filename, NULL, options); 2347ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 2348ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project doc = xmlCtxtReadMemory(rectxt, (char *) base, info.st_size, 2349ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project filename, NULL, options); 2350df143a5041f03a22808b59c76698770b74692815Selim Gurun 2351ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project munmap((char *) base, info.st_size); 2352ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project close(fd); 2353ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 2354ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_VALID_ENABLED 2355ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (valid) { 2356ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserCtxtPtr ctxt = NULL; 2357ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2358ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (rectxt == NULL) 2359ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt = xmlNewParserCtxt(); 2360ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 2361ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt = rectxt; 2362df143a5041f03a22808b59c76698770b74692815Selim Gurun if (ctxt == NULL) { 2363ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project doc = NULL; 2364ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2365ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project doc = xmlCtxtReadFile(ctxt, filename, NULL, options); 2366ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2367ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt->valid == 0) 2368ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_RDFILE; 2369ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (rectxt == NULL) 2370ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFreeParserCtxt(ctxt); 2371ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2372ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_VALID_ENABLED */ 2373ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2374ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (rectxt != NULL) 2375ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project doc = xmlCtxtReadFile(rectxt, filename, NULL, options); 2376ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else { 2377ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_SAX1_ENABLED 2378ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (sax1) 2379ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project doc = xmlParseFile(filename); 2380ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 2381ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_SAX1_ENABLED */ 2382ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project doc = xmlReadFile(filename, NULL, options); 2383ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2384ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2385ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2386ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2387ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 2388ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * If we don't have a document we might as well give up. Do we 2389ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * want an error message here? <sven@zen.org> */ 2390ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (doc == NULL) { 2391ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_UNCLASS; 2392ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 2393ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2394ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2395ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((timing) && (!repeat)) { 2396ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project endTimer("Parsing"); 2397ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2398ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2399ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 2400ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Remove DOCTYPE nodes 2401ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 2402ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (dropdtd) { 2403ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDtdPtr dtd; 2404ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2405ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project dtd = xmlGetIntSubset(doc); 2406ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (dtd != NULL) { 2407ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlUnlinkNode((xmlNodePtr)dtd); 2408ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFreeDtd(dtd); 2409ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2410ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2411ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2412ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_XINCLUDE_ENABLED 2413ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (xinclude) { 2414ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((timing) && (!repeat)) { 2415ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project startTimer(); 2416ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2417ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (xmlXIncludeProcessFlags(doc, options) < 0) 2418ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_UNCLASS; 2419ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((timing) && (!repeat)) { 2420ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project endTimer("Xinclude processing"); 2421ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2422ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2423ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 2424ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2425df143a5041f03a22808b59c76698770b74692815Selim Gurun#ifdef LIBXML_XPATH_ENABLED 2426df143a5041f03a22808b59c76698770b74692815Selim Gurun if (xpathquery != NULL) { 2427df143a5041f03a22808b59c76698770b74692815Selim Gurun doXPathQuery(doc, xpathquery); 2428df143a5041f03a22808b59c76698770b74692815Selim Gurun } 2429df143a5041f03a22808b59c76698770b74692815Selim Gurun#endif 2430df143a5041f03a22808b59c76698770b74692815Selim Gurun 2431ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_DEBUG_ENABLED 2432ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_XPATH_ENABLED 2433ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 2434ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * shell interaction 2435ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 2436ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (shell) { 2437ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlXPathOrderDocElems(doc); 2438ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlShell(doc, filename, xmlShellReadline, stdout); 2439ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2440ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 2441ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 2442ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2443ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_TREE_ENABLED 2444ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 2445ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * test intermediate copy if needed. 2446ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 2447ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (copy) { 2448ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project tmp = doc; 2449ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (timing) { 2450ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project startTimer(); 2451ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2452ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project doc = xmlCopyDoc(doc, 1); 2453ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (timing) { 2454ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project endTimer("Copying"); 2455ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2456ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (timing) { 2457ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project startTimer(); 2458ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2459ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFreeDoc(tmp); 2460ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (timing) { 2461ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project endTimer("Freeing original"); 2462ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2463ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2464ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_TREE_ENABLED */ 2465ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2466ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_VALID_ENABLED 2467ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((insert) && (!html)) { 2468ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const xmlChar* list[256]; 2469ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int nb, i; 2470ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr node; 2471ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2472ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (doc->children != NULL) { 2473ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project node = doc->children; 2474ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while ((node != NULL) && (node->last == NULL)) node = node->next; 2475ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node != NULL) { 2476ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project nb = xmlValidGetValidElements(node->last, NULL, list, 256); 2477ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (nb < 0) { 2478ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "could not get valid list of elements\n"); 2479ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (nb == 0) { 2480ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "No element can be inserted under root\n"); 2481ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2482ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "%d element types can be inserted under root:\n", 2483ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project nb); 2484ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project for (i = 0;i < nb;i++) { 2485ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "%s\n", (char *) list[i]); 2486ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2487ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2488ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2489df143a5041f03a22808b59c76698770b74692815Selim Gurun } 2490ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project }else 2491ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_VALID_ENABLED */ 2492ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_READER_ENABLED 2493ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (walker) { 2494ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project walkDoc(doc); 2495ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2496ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_READER_ENABLED */ 2497ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_OUTPUT_ENABLED 2498ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout == 0) { 2499ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int ret; 2500ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2501ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 2502ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * print it. 2503ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 2504ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_DEBUG_ENABLED 2505ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!debug) { 2506ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 2507ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((timing) && (!repeat)) { 2508ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project startTimer(); 2509ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2510ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_HTML_ENABLED 2511ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((html) && (!xmlout)) { 2512ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (compress) { 2513ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project htmlSaveFile(output ? output : "-", doc); 2514ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2515ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if (encoding != NULL) { 2516df143a5041f03a22808b59c76698770b74692815Selim Gurun if (format == 1) { 2517ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project htmlSaveFileFormat(output ? output : "-", doc, encoding, 1); 2518ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2519ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else { 2520ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project htmlSaveFileFormat(output ? output : "-", doc, encoding, 0); 2521ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2522ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2523df143a5041f03a22808b59c76698770b74692815Selim Gurun else if (format == 1) { 2524ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project htmlSaveFileFormat(output ? output : "-", doc, NULL, 1); 2525ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2526ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else { 2527ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project FILE *out; 2528ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (output == NULL) 2529ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project out = stdout; 2530ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else { 2531ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project out = fopen(output,"wb"); 2532ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2533ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (out != NULL) { 2534ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (htmlDocDump(out, doc) < 0) 2535ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_OUT; 2536ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2537ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (output != NULL) 2538ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fclose(out); 2539ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2540ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "failed to open %s\n", output); 2541ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_OUT; 2542ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2543ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2544ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((timing) && (!repeat)) { 2545ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project endTimer("Saving"); 2546ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2547ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else 2548ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 2549ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_C14N_ENABLED 2550ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (canonical) { 2551ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlChar *result = NULL; 2552ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int size; 2553ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2554df143a5041f03a22808b59c76698770b74692815Selim Gurun size = xmlC14NDocDumpMemory(doc, NULL, XML_C14N_1_0, NULL, 1, &result); 2555ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (size >= 0) { 2556df143a5041f03a22808b59c76698770b74692815Selim Gurun if (write(1, result, size) == -1) { 2557df143a5041f03a22808b59c76698770b74692815Selim Gurun fprintf(stderr, "Can't write data\n"); 2558df143a5041f03a22808b59c76698770b74692815Selim Gurun } 2559df143a5041f03a22808b59c76698770b74692815Selim Gurun xmlFree(result); 2560df143a5041f03a22808b59c76698770b74692815Selim Gurun } else { 2561df143a5041f03a22808b59c76698770b74692815Selim Gurun fprintf(stderr, "Failed to canonicalize\n"); 2562df143a5041f03a22808b59c76698770b74692815Selim Gurun progresult = XMLLINT_ERR_OUT; 2563df143a5041f03a22808b59c76698770b74692815Selim Gurun } 2564df143a5041f03a22808b59c76698770b74692815Selim Gurun } else if (canonical) { 2565df143a5041f03a22808b59c76698770b74692815Selim Gurun xmlChar *result = NULL; 2566df143a5041f03a22808b59c76698770b74692815Selim Gurun int size; 2567df143a5041f03a22808b59c76698770b74692815Selim Gurun 2568df143a5041f03a22808b59c76698770b74692815Selim Gurun size = xmlC14NDocDumpMemory(doc, NULL, XML_C14N_1_1, NULL, 1, &result); 2569df143a5041f03a22808b59c76698770b74692815Selim Gurun if (size >= 0) { 2570df143a5041f03a22808b59c76698770b74692815Selim Gurun if (write(1, result, size) == -1) { 2571df143a5041f03a22808b59c76698770b74692815Selim Gurun fprintf(stderr, "Can't write data\n"); 2572df143a5041f03a22808b59c76698770b74692815Selim Gurun } 2573ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFree(result); 2574ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2575ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "Failed to canonicalize\n"); 2576ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_OUT; 2577ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2578ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else 2579ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (exc_canonical) { 2580ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlChar *result = NULL; 2581ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int size; 2582ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2583df143a5041f03a22808b59c76698770b74692815Selim Gurun size = xmlC14NDocDumpMemory(doc, NULL, XML_C14N_EXCLUSIVE_1_0, NULL, 1, &result); 2584ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (size >= 0) { 2585df143a5041f03a22808b59c76698770b74692815Selim Gurun if (write(1, result, size) == -1) { 2586df143a5041f03a22808b59c76698770b74692815Selim Gurun fprintf(stderr, "Can't write data\n"); 2587df143a5041f03a22808b59c76698770b74692815Selim Gurun } 2588ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFree(result); 2589ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2590ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "Failed to canonicalize\n"); 2591ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_OUT; 2592ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2593ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else 2594ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 259594442ad4107000e6d49f9b85a46a591495a57632Selim Gurun#ifdef HAVE_MMAP 2596ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (memory) { 2597ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlChar *result; 2598ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int len; 2599ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2600ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (encoding != NULL) { 2601df143a5041f03a22808b59c76698770b74692815Selim Gurun if (format == 1) { 2602ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDocDumpFormatMemoryEnc(doc, &result, &len, encoding, 1); 2603df143a5041f03a22808b59c76698770b74692815Selim Gurun } else { 2604ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDocDumpMemoryEnc(doc, &result, &len, encoding); 2605ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2606ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2607df143a5041f03a22808b59c76698770b74692815Selim Gurun if (format == 1) 2608ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDocDumpFormatMemory(doc, &result, &len, 1); 2609ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 2610ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDocDumpMemory(doc, &result, &len); 2611ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2612ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (result == NULL) { 2613ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "Failed to save\n"); 2614ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_OUT; 2615ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2616df143a5041f03a22808b59c76698770b74692815Selim Gurun if (write(1, result, len) == -1) { 2617df143a5041f03a22808b59c76698770b74692815Selim Gurun fprintf(stderr, "Can't write data\n"); 2618df143a5041f03a22808b59c76698770b74692815Selim Gurun } 2619ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFree(result); 2620ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2621ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2622ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else 262394442ad4107000e6d49f9b85a46a591495a57632Selim Gurun#endif /* HAVE_MMAP */ 2624ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (compress) { 2625ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlSaveFile(output ? output : "-", doc); 2626ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (oldout) { 2627ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (encoding != NULL) { 2628df143a5041f03a22808b59c76698770b74692815Selim Gurun if (format == 1) { 2629ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ret = xmlSaveFormatFileEnc(output ? output : "-", doc, 2630ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project encoding, 1); 2631ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2632ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else { 2633ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ret = xmlSaveFileEnc(output ? output : "-", doc, 2634ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project encoding); 2635ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2636ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ret < 0) { 2637ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "failed save to %s\n", 2638ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project output ? output : "-"); 2639ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_OUT; 2640ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2641df143a5041f03a22808b59c76698770b74692815Selim Gurun } else if (format == 1) { 2642ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ret = xmlSaveFormatFile(output ? output : "-", doc, 1); 2643ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ret < 0) { 2644ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "failed save to %s\n", 2645ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project output ? output : "-"); 2646ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_OUT; 2647ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2648ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2649ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project FILE *out; 2650ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (output == NULL) 2651ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project out = stdout; 2652ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else { 2653ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project out = fopen(output,"wb"); 2654ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2655ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (out != NULL) { 2656ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (xmlDocDump(out, doc) < 0) 2657ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_OUT; 2658ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2659ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (output != NULL) 2660ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fclose(out); 2661ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2662ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "failed to open %s\n", output); 2663ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_OUT; 2664ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2665ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2666ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2667ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlSaveCtxtPtr ctxt; 2668ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int saveOpts = 0; 2669ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2670df143a5041f03a22808b59c76698770b74692815Selim Gurun if (format == 1) 2671ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project saveOpts |= XML_SAVE_FORMAT; 2672df143a5041f03a22808b59c76698770b74692815Selim Gurun else if (format == 2) 2673df143a5041f03a22808b59c76698770b74692815Selim Gurun saveOpts |= XML_SAVE_WSNONSIG; 2674df143a5041f03a22808b59c76698770b74692815Selim Gurun 2675df143a5041f03a22808b59c76698770b74692815Selim Gurun#if defined(LIBXML_HTML_ENABLED) || defined(LIBXML_VALID_ENABLED) 2676df143a5041f03a22808b59c76698770b74692815Selim Gurun if (xmlout) 2677df143a5041f03a22808b59c76698770b74692815Selim Gurun saveOpts |= XML_SAVE_AS_XML; 2678df143a5041f03a22808b59c76698770b74692815Selim Gurun#endif 2679ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2680ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (output == NULL) 2681ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt = xmlSaveToFd(1, encoding, saveOpts); 2682ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 2683ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt = xmlSaveToFilename(output, encoding, saveOpts); 2684ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2685ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt != NULL) { 2686ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (xmlSaveDoc(ctxt, doc) < 0) { 2687ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "failed save to %s\n", 2688ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project output ? output : "-"); 2689ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_OUT; 2690ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2691ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlSaveClose(ctxt); 2692ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2693ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_OUT; 2694ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2695ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2696ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((timing) && (!repeat)) { 2697ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project endTimer("Saving"); 2698ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2699ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_DEBUG_ENABLED 2700ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2701ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project FILE *out; 2702ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (output == NULL) 2703ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project out = stdout; 2704ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else { 2705ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project out = fopen(output,"wb"); 2706ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2707ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (out != NULL) { 2708ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugDumpDocument(out, doc); 2709ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2710ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (output != NULL) 2711ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fclose(out); 2712ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2713ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "failed to open %s\n", output); 2714ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_OUT; 2715ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2716ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2717ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 2718ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2719ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_OUTPUT_ENABLED */ 2720ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2721ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_VALID_ENABLED 2722ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 2723ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * A posteriori validation test 2724ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 2725ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((dtdvalid != NULL) || (dtdvalidfpi != NULL)) { 2726ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDtdPtr dtd; 2727ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2728ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((timing) && (!repeat)) { 2729ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project startTimer(); 2730ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2731ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (dtdvalid != NULL) 2732df143a5041f03a22808b59c76698770b74692815Selim Gurun dtd = xmlParseDTD(NULL, (const xmlChar *)dtdvalid); 2733ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 2734df143a5041f03a22808b59c76698770b74692815Selim Gurun dtd = xmlParseDTD((const xmlChar *)dtdvalidfpi, NULL); 2735ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((timing) && (!repeat)) { 2736ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project endTimer("Parsing DTD"); 2737ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2738ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (dtd == NULL) { 2739ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (dtdvalid != NULL) 2740ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 2741ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Could not parse DTD %s\n", dtdvalid); 2742ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 2743ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 2744ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Could not parse DTD %s\n", dtdvalidfpi); 2745ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_DTD; 2746ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2747ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlValidCtxtPtr cvp; 2748ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2749ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((cvp = xmlNewValidCtxt()) == NULL) { 2750ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 2751ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Couldn't allocate validation context\n"); 2752ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project exit(-1); 2753ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2754ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cvp->userData = (void *) stderr; 2755ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cvp->error = (xmlValidityErrorFunc) fprintf; 2756ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cvp->warning = (xmlValidityWarningFunc) fprintf; 2757ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2758ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((timing) && (!repeat)) { 2759ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project startTimer(); 2760ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2761ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!xmlValidateDtd(cvp, doc, dtd)) { 2762ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (dtdvalid != NULL) 2763ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 2764ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Document %s does not validate against %s\n", 2765ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project filename, dtdvalid); 2766ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 2767ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 2768ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Document %s does not validate against %s\n", 2769ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project filename, dtdvalidfpi); 2770ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_VALID; 2771ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2772ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((timing) && (!repeat)) { 2773ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project endTimer("Validating against DTD"); 2774ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2775ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFreeValidCtxt(cvp); 2776ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFreeDtd(dtd); 2777ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2778ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (postvalid) { 2779ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlValidCtxtPtr cvp; 2780ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2781ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((cvp = xmlNewValidCtxt()) == NULL) { 2782ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 2783ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Couldn't allocate validation context\n"); 2784ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project exit(-1); 2785ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2786ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2787ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((timing) && (!repeat)) { 2788ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project startTimer(); 2789ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2790ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cvp->userData = (void *) stderr; 2791ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cvp->error = (xmlValidityErrorFunc) fprintf; 2792ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cvp->warning = (xmlValidityWarningFunc) fprintf; 2793ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!xmlValidateDocument(cvp, doc)) { 2794ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 2795ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Document %s does not validate\n", filename); 2796ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_VALID; 2797ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2798ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((timing) && (!repeat)) { 2799ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project endTimer("Validating"); 2800ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2801ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFreeValidCtxt(cvp); 2802ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2803ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_VALID_ENABLED */ 2804ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_SCHEMATRON_ENABLED 2805ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (wxschematron != NULL) { 2806ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlSchematronValidCtxtPtr ctxt; 2807ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int ret; 2808ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int flag; 2809ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2810ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((timing) && (!repeat)) { 2811ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project startTimer(); 2812ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2813ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2814ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (debug) 2815ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project flag = XML_SCHEMATRON_OUT_XML; 2816ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 2817ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project flag = XML_SCHEMATRON_OUT_TEXT; 2818ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noout) 2819ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project flag |= XML_SCHEMATRON_OUT_QUIET; 2820ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt = xmlSchematronNewValidCtxt(wxschematron, flag); 2821ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#if 0 2822ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlSchematronSetValidErrors(ctxt, 2823ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (xmlSchematronValidityErrorFunc) fprintf, 2824ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (xmlSchematronValidityWarningFunc) fprintf, 2825ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project stderr); 2826ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 2827ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ret = xmlSchematronValidateDoc(ctxt, doc); 2828ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ret == 0) { 2829ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "%s validates\n", filename); 2830ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (ret > 0) { 2831ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "%s fails to validate\n", filename); 2832ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_VALID; 2833ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2834ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "%s validation generated an internal error\n", 2835ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project filename); 2836ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_VALID; 2837ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2838ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlSchematronFreeValidCtxt(ctxt); 2839ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((timing) && (!repeat)) { 2840ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project endTimer("Validating"); 2841ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2842ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2843ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 2844ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_SCHEMAS_ENABLED 2845ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (relaxngschemas != NULL) { 2846ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlRelaxNGValidCtxtPtr ctxt; 2847ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int ret; 2848ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2849ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((timing) && (!repeat)) { 2850ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project startTimer(); 2851ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2852ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2853ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt = xmlRelaxNGNewValidCtxt(relaxngschemas); 2854ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlRelaxNGSetValidErrors(ctxt, 2855ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (xmlRelaxNGValidityErrorFunc) fprintf, 2856ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (xmlRelaxNGValidityWarningFunc) fprintf, 2857ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project stderr); 2858ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ret = xmlRelaxNGValidateDoc(ctxt, doc); 2859ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ret == 0) { 2860ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "%s validates\n", filename); 2861ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (ret > 0) { 2862ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "%s fails to validate\n", filename); 2863ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_VALID; 2864ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2865ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "%s validation generated an internal error\n", 2866ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project filename); 2867ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_VALID; 2868ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2869ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlRelaxNGFreeValidCtxt(ctxt); 2870ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((timing) && (!repeat)) { 2871ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project endTimer("Validating"); 2872ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2873ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (wxschemas != NULL) { 2874ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlSchemaValidCtxtPtr ctxt; 2875ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int ret; 2876ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2877ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((timing) && (!repeat)) { 2878ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project startTimer(); 2879ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2880ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2881ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt = xmlSchemaNewValidCtxt(wxschemas); 2882ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlSchemaSetValidErrors(ctxt, 2883ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (xmlSchemaValidityErrorFunc) fprintf, 2884ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (xmlSchemaValidityWarningFunc) fprintf, 2885ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project stderr); 2886ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ret = xmlSchemaValidateDoc(ctxt, doc); 2887ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ret == 0) { 2888ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "%s validates\n", filename); 2889ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (ret > 0) { 2890ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "%s fails to validate\n", filename); 2891ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_VALID; 2892ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2893ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "%s validation generated an internal error\n", 2894ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project filename); 2895ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_VALID; 2896ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2897ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlSchemaFreeValidCtxt(ctxt); 2898ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((timing) && (!repeat)) { 2899ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project endTimer("Validating"); 2900ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2901ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2902ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 2903ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2904ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_DEBUG_ENABLED 290560a4c356ee9ce5e9ccb23347c0381f0436192691Patrick Scott#if defined(LIBXML_HTML_ENABLED) || defined(LIBXML_VALID_ENABLED) 2906ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((debugent) && (!html)) 2907ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugDumpEntities(stderr, doc); 2908ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 290960a4c356ee9ce5e9ccb23347c0381f0436192691Patrick Scott#endif 2910ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2911ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 2912ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * free it. 2913ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 2914ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((timing) && (!repeat)) { 2915ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project startTimer(); 2916ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2917ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFreeDoc(doc); 2918ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((timing) && (!repeat)) { 2919ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project endTimer("Freeing"); 2920ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2921ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 2922ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2923ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/************************************************************************ 2924df143a5041f03a22808b59c76698770b74692815Selim Gurun * * 2925df143a5041f03a22808b59c76698770b74692815Selim Gurun * Usage and Main * 2926df143a5041f03a22808b59c76698770b74692815Selim Gurun * * 2927ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ************************************************************************/ 2928ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2929ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void showVersion(const char *name) { 2930ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "%s: using libxml version %s\n", name, xmlParserVersion); 2931ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, " compiled with: "); 2932ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (xmlHasFeature(XML_WITH_THREAD)) fprintf(stderr, "Threads "); 2933ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (xmlHasFeature(XML_WITH_TREE)) fprintf(stderr, "Tree "); 2934ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (xmlHasFeature(XML_WITH_OUTPUT)) fprintf(stderr, "Output "); 2935ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (xmlHasFeature(XML_WITH_PUSH)) fprintf(stderr, "Push "); 2936ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (xmlHasFeature(XML_WITH_READER)) fprintf(stderr, "Reader "); 2937ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (xmlHasFeature(XML_WITH_PATTERN)) fprintf(stderr, "Patterns "); 2938ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (xmlHasFeature(XML_WITH_WRITER)) fprintf(stderr, "Writer "); 2939ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (xmlHasFeature(XML_WITH_SAX1)) fprintf(stderr, "SAXv1 "); 2940df143a5041f03a22808b59c76698770b74692815Selim Gurun if (xmlHasFeature(XML_WITH_FTP)) fprintf(stderr, "FTP "); 2941df143a5041f03a22808b59c76698770b74692815Selim Gurun if (xmlHasFeature(XML_WITH_HTTP)) fprintf(stderr, "HTTP "); 2942ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (xmlHasFeature(XML_WITH_VALID)) fprintf(stderr, "DTDValid "); 2943df143a5041f03a22808b59c76698770b74692815Selim Gurun if (xmlHasFeature(XML_WITH_HTML)) fprintf(stderr, "HTML "); 2944df143a5041f03a22808b59c76698770b74692815Selim Gurun if (xmlHasFeature(XML_WITH_LEGACY)) fprintf(stderr, "Legacy "); 2945df143a5041f03a22808b59c76698770b74692815Selim Gurun if (xmlHasFeature(XML_WITH_C14N)) fprintf(stderr, "C14N "); 2946df143a5041f03a22808b59c76698770b74692815Selim Gurun if (xmlHasFeature(XML_WITH_CATALOG)) fprintf(stderr, "Catalog "); 2947df143a5041f03a22808b59c76698770b74692815Selim Gurun if (xmlHasFeature(XML_WITH_XPATH)) fprintf(stderr, "XPath "); 2948df143a5041f03a22808b59c76698770b74692815Selim Gurun if (xmlHasFeature(XML_WITH_XPTR)) fprintf(stderr, "XPointer "); 2949df143a5041f03a22808b59c76698770b74692815Selim Gurun if (xmlHasFeature(XML_WITH_XINCLUDE)) fprintf(stderr, "XInclude "); 2950df143a5041f03a22808b59c76698770b74692815Selim Gurun if (xmlHasFeature(XML_WITH_ICONV)) fprintf(stderr, "Iconv "); 2951df143a5041f03a22808b59c76698770b74692815Selim Gurun if (xmlHasFeature(XML_WITH_ISO8859X)) fprintf(stderr, "ISO8859X "); 2952df143a5041f03a22808b59c76698770b74692815Selim Gurun if (xmlHasFeature(XML_WITH_UNICODE)) fprintf(stderr, "Unicode "); 2953df143a5041f03a22808b59c76698770b74692815Selim Gurun if (xmlHasFeature(XML_WITH_REGEXP)) fprintf(stderr, "Regexps "); 2954df143a5041f03a22808b59c76698770b74692815Selim Gurun if (xmlHasFeature(XML_WITH_AUTOMATA)) fprintf(stderr, "Automata "); 2955df143a5041f03a22808b59c76698770b74692815Selim Gurun if (xmlHasFeature(XML_WITH_EXPR)) fprintf(stderr, "Expr "); 2956df143a5041f03a22808b59c76698770b74692815Selim Gurun if (xmlHasFeature(XML_WITH_SCHEMAS)) fprintf(stderr, "Schemas "); 2957df143a5041f03a22808b59c76698770b74692815Selim Gurun if (xmlHasFeature(XML_WITH_SCHEMATRON)) fprintf(stderr, "Schematron "); 2958df143a5041f03a22808b59c76698770b74692815Selim Gurun if (xmlHasFeature(XML_WITH_MODULES)) fprintf(stderr, "Modules "); 2959df143a5041f03a22808b59c76698770b74692815Selim Gurun if (xmlHasFeature(XML_WITH_DEBUG)) fprintf(stderr, "Debug "); 2960df143a5041f03a22808b59c76698770b74692815Selim Gurun if (xmlHasFeature(XML_WITH_DEBUG_MEM)) fprintf(stderr, "MemDebug "); 2961df143a5041f03a22808b59c76698770b74692815Selim Gurun if (xmlHasFeature(XML_WITH_DEBUG_RUN)) fprintf(stderr, "RunDebug "); 2962ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (xmlHasFeature(XML_WITH_ZLIB)) fprintf(stderr, "Zlib "); 2963df143a5041f03a22808b59c76698770b74692815Selim Gurun if (xmlHasFeature(XML_WITH_LZMA)) fprintf(stderr, "Lzma "); 2964ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "\n"); 2965ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 2966ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2967ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void usage(const char *name) { 2968ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("Usage : %s [options] XMLfiles ...\n", name); 2969ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_OUTPUT_ENABLED 2970ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\tParse the XML files and output the result of the parsing\n"); 2971ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#else 2972ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\tParse the XML files\n"); 2973ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_OUTPUT_ENABLED */ 2974ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--version : display the version of the XML library used\n"); 2975ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_DEBUG_ENABLED 2976ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--debug : dump a debug tree of the in-memory document\n"); 2977ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--shell : run a navigating shell\n"); 2978ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--debugent : debug the entities defined in the document\n"); 2979ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#else 2980ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_READER_ENABLED 2981ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--debug : dump the nodes content when using --stream\n"); 2982ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_READER_ENABLED */ 2983ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 2984ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_TREE_ENABLED 2985ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--copy : used to test the internal copy implementation\n"); 2986ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_TREE_ENABLED */ 2987ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--recover : output what was parsable on broken XML documents\n"); 298860a4c356ee9ce5e9ccb23347c0381f0436192691Patrick Scott printf("\t--huge : remove any internal arbitrary parser limits\n"); 2989ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--noent : substitute entity references by their value\n"); 2990df143a5041f03a22808b59c76698770b74692815Selim Gurun printf("\t--noenc : ignore any encoding specified inside the document\n"); 2991ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--noout : don't output the result tree\n"); 2992ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--path 'paths': provide a set of paths for resources\n"); 2993ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--load-trace : print trace of all external entites loaded\n"); 2994ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--nonet : refuse to fetch DTDs or entities over network\n"); 2995ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--nocompact : do not generate compact text nodes\n"); 2996ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--htmlout : output results as HTML\n"); 2997ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--nowrap : do not put HTML doc wrapper\n"); 2998ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_VALID_ENABLED 2999ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--valid : validate the document in addition to std well-formed check\n"); 3000ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--postvalid : do a posteriori validation, i.e after parsing\n"); 3001ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--dtdvalid URL : do a posteriori validation against a given DTD\n"); 3002ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--dtdvalidfpi FPI : same but name the DTD with a Public Identifier\n"); 3003ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_VALID_ENABLED */ 3004ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--timing : print some timings\n"); 3005ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--output file or -o file: save to a given file\n"); 3006ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--repeat : repeat 100 times, for timing or profiling\n"); 3007ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--insert : ad-hoc test for valid insertions\n"); 3008ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_OUTPUT_ENABLED 3009ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef HAVE_ZLIB_H 3010ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--compress : turn on gzip compression of output\n"); 3011ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3012ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_OUTPUT_ENABLED */ 3013ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_HTML_ENABLED 3014ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--html : use the HTML parser\n"); 3015ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--xmlout : force to use the XML serializer when using --html\n"); 3016df143a5041f03a22808b59c76698770b74692815Selim Gurun printf("\t--nodefdtd : do not default HTML doctype\n"); 3017ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3018ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_PUSH_ENABLED 3019ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--push : use the push mode of the parser\n"); 302094442ad4107000e6d49f9b85a46a591495a57632Selim Gurun printf("\t--pushsmall : use the push mode of the parser using tiny increments\n"); 3021ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_PUSH_ENABLED */ 302294442ad4107000e6d49f9b85a46a591495a57632Selim Gurun#ifdef HAVE_MMAP 3023ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--memory : parse from memory\n"); 3024ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3025ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--maxmem nbbytes : limits memory allocation to nbbytes bytes\n"); 3026ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--nowarning : do not emit warnings from parser/validator\n"); 3027ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--noblanks : drop (ignorable?) blanks spaces\n"); 3028ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--nocdata : replace cdata section with text nodes\n"); 3029ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_OUTPUT_ENABLED 3030ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--format : reformat/reindent the input\n"); 3031ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--encode encoding : output in the given encoding\n"); 3032ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--dropdtd : remove the DOCTYPE of the input docs\n"); 3033df143a5041f03a22808b59c76698770b74692815Selim Gurun printf("\t--pretty STYLE : pretty-print in a particular style\n"); 3034df143a5041f03a22808b59c76698770b74692815Selim Gurun printf("\t 0 Do not pretty print\n"); 3035df143a5041f03a22808b59c76698770b74692815Selim Gurun printf("\t 1 Format the XML content, as --format\n"); 3036df143a5041f03a22808b59c76698770b74692815Selim Gurun printf("\t 2 Add whitespace inside tags, preserving content\n"); 3037ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_OUTPUT_ENABLED */ 3038df143a5041f03a22808b59c76698770b74692815Selim Gurun printf("\t--c14n : save in W3C canonical format v1.0 (with comments)\n"); 3039df143a5041f03a22808b59c76698770b74692815Selim Gurun printf("\t--c14n11 : save in W3C canonical format v1.1 (with comments)\n"); 3040ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--exc-c14n : save in W3C exclusive canonical format (with comments)\n"); 3041ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_C14N_ENABLED 3042ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_C14N_ENABLED */ 3043ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--nsclean : remove redundant namespace declarations\n"); 3044ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--testIO : test user I/O support\n"); 3045ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_CATALOG_ENABLED 3046ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--catalogs : use SGML catalogs from $SGML_CATALOG_FILES\n"); 3047ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t otherwise XML Catalogs starting from \n"); 3048ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t %s are activated by default\n", XML_XML_DEFAULT_CATALOG); 3049ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--nocatalogs: deactivate all catalogs\n"); 3050ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3051ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--auto : generate a small doc on the fly\n"); 3052ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_XINCLUDE_ENABLED 3053ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--xinclude : do XInclude processing\n"); 3054ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--noxincludenode : same but do not generate XInclude nodes\n"); 305560a4c356ee9ce5e9ccb23347c0381f0436192691Patrick Scott printf("\t--nofixup-base-uris : do not fixup xml:base uris\n"); 3056ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3057ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--loaddtd : fetch external DTD\n"); 3058ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--dtdattr : loaddtd + populate the tree with inherited attributes \n"); 3059ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_READER_ENABLED 3060ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--stream : use the streaming interface to process very large files\n"); 3061ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--walker : create a reader and walk though the resulting doc\n"); 3062ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_READER_ENABLED */ 3063ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_PATTERN_ENABLED 3064ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--pattern pattern_value : test the pattern support\n"); 3065ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3066ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--chkregister : verify the node registration code\n"); 3067ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_SCHEMAS_ENABLED 3068ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--relaxng schema : do RelaxNG validation against the schema\n"); 3069ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--schema schema : do validation against the WXS schema\n"); 3070ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3071ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_SCHEMATRON_ENABLED 3072ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--schematron schema : do validation against a schematron\n"); 3073ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3074ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_SAX1_ENABLED 3075ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--sax1: use the old SAX1 interfaces for processing\n"); 3076ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3077ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\t--sax: do not build a tree but work just at the SAX level\n"); 307860a4c356ee9ce5e9ccb23347c0381f0436192691Patrick Scott printf("\t--oldxml10: use XML-1.0 parsing rules before the 5th edition\n"); 3079df143a5041f03a22808b59c76698770b74692815Selim Gurun#ifdef LIBXML_XPATH_ENABLED 308094442ad4107000e6d49f9b85a46a591495a57632Selim Gurun printf("\t--xpath expr: evaluate the XPath expression, imply --noout\n"); 3081df143a5041f03a22808b59c76698770b74692815Selim Gurun#endif 3082ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 3083ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("\nLibxml project home page: http://xmlsoft.org/\n"); 3084ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project printf("To report bugs or get some help check: http://xmlsoft.org/bugs.html\n"); 3085ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 3086ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 3087ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void registerNode(xmlNodePtr node) 3088ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 3089ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project node->_private = malloc(sizeof(long)); 3090ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project *(long*)node->_private = (long) 0x81726354; 3091ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project nbregister++; 3092ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 3093ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 3094ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void deregisterNode(xmlNodePtr node) 3095ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 3096ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project assert(node->_private != NULL); 3097ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project assert(*(long*)node->_private == (long) 0x81726354); 3098ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project free(node->_private); 3099ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project nbregister--; 3100ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 3101ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 3102ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectint 3103ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectmain(int argc, char **argv) { 3104ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int i, acount; 3105ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int files = 0; 3106ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int version = 0; 3107ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const char* indent; 3108df143a5041f03a22808b59c76698770b74692815Selim Gurun 3109ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (argc <= 1) { 3110ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project usage(argv[0]); 3111ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(1); 3112ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3113ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project LIBXML_TEST_VERSION 3114ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project for (i = 1; i < argc ; i++) { 3115ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!strcmp(argv[i], "-")) 3116ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3117ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 3118ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (argv[i][0] != '-') 3119ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project continue; 3120ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((!strcmp(argv[i], "-debug")) || (!strcmp(argv[i], "--debug"))) 3121ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project debug++; 3122ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 3123ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_DEBUG_ENABLED 3124ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((!strcmp(argv[i], "-shell")) || 3125ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--shell"))) { 3126ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project shell++; 3127ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project noout = 1; 3128df143a5041f03a22808b59c76698770b74692815Selim Gurun } else 3129ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3130ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_TREE_ENABLED 3131ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((!strcmp(argv[i], "-copy")) || (!strcmp(argv[i], "--copy"))) 3132ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project copy++; 3133ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 3134ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_TREE_ENABLED */ 3135ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((!strcmp(argv[i], "-recover")) || 3136ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--recover"))) { 3137ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project recovery++; 3138ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project options |= XML_PARSE_RECOVER; 313960a4c356ee9ce5e9ccb23347c0381f0436192691Patrick Scott } else if ((!strcmp(argv[i], "-huge")) || 314060a4c356ee9ce5e9ccb23347c0381f0436192691Patrick Scott (!strcmp(argv[i], "--huge"))) { 314160a4c356ee9ce5e9ccb23347c0381f0436192691Patrick Scott options |= XML_PARSE_HUGE; 3142ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if ((!strcmp(argv[i], "-noent")) || 3143ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--noent"))) { 3144ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project noent++; 3145ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project options |= XML_PARSE_NOENT; 3146df143a5041f03a22808b59c76698770b74692815Selim Gurun } else if ((!strcmp(argv[i], "-noenc")) || 3147df143a5041f03a22808b59c76698770b74692815Selim Gurun (!strcmp(argv[i], "--noenc"))) { 3148df143a5041f03a22808b59c76698770b74692815Selim Gurun noenc++; 3149df143a5041f03a22808b59c76698770b74692815Selim Gurun options |= XML_PARSE_IGNORE_ENC; 3150ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if ((!strcmp(argv[i], "-nsclean")) || 3151ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--nsclean"))) { 3152ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project options |= XML_PARSE_NSCLEAN; 3153ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if ((!strcmp(argv[i], "-nocdata")) || 3154ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--nocdata"))) { 3155ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project options |= XML_PARSE_NOCDATA; 3156ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if ((!strcmp(argv[i], "-nodict")) || 3157ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--nodict"))) { 3158ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project options |= XML_PARSE_NODICT; 3159ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if ((!strcmp(argv[i], "-version")) || 3160ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--version"))) { 3161ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project showVersion(argv[0]); 3162ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project version = 1; 3163ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if ((!strcmp(argv[i], "-noout")) || 3164ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--noout"))) 3165ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project noout++; 3166ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_OUTPUT_ENABLED 3167ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-o")) || 3168ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "-output")) || 3169ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--output"))) { 3170ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project i++; 3171ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project output = argv[i]; 3172ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3173ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_OUTPUT_ENABLED */ 3174ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-htmlout")) || 3175ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--htmlout"))) 3176ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project htmlout++; 3177ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-nowrap")) || 3178ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--nowrap"))) 3179ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project nowrap++; 3180ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_HTML_ENABLED 3181ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-html")) || 3182ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--html"))) { 3183ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project html++; 3184ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3185ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-xmlout")) || 3186ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--xmlout"))) { 3187ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlout++; 3188df143a5041f03a22808b59c76698770b74692815Selim Gurun } else if ((!strcmp(argv[i], "-nodefdtd")) || 3189df143a5041f03a22808b59c76698770b74692815Selim Gurun (!strcmp(argv[i], "--nodefdtd"))) { 3190df143a5041f03a22808b59c76698770b74692815Selim Gurun nodefdtd++; 3191df143a5041f03a22808b59c76698770b74692815Selim Gurun options |= HTML_PARSE_NODEFDTD; 3192ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3193ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_HTML_ENABLED */ 3194ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-loaddtd")) || 3195ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--loaddtd"))) { 3196ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project loaddtd++; 3197ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project options |= XML_PARSE_DTDLOAD; 3198ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if ((!strcmp(argv[i], "-dtdattr")) || 3199ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--dtdattr"))) { 3200ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project loaddtd++; 3201ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project dtdattrs++; 3202ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project options |= XML_PARSE_DTDATTR; 3203ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3204ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_VALID_ENABLED 3205ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-valid")) || 3206ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--valid"))) { 3207ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project valid++; 3208ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project options |= XML_PARSE_DTDVALID; 3209ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if ((!strcmp(argv[i], "-postvalid")) || 3210ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--postvalid"))) { 3211ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project postvalid++; 3212ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project loaddtd++; 3213ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project options |= XML_PARSE_DTDLOAD; 3214ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if ((!strcmp(argv[i], "-dtdvalid")) || 3215ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--dtdvalid"))) { 3216ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project i++; 3217ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project dtdvalid = argv[i]; 3218ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project loaddtd++; 3219ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project options |= XML_PARSE_DTDLOAD; 3220ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if ((!strcmp(argv[i], "-dtdvalidfpi")) || 3221ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--dtdvalidfpi"))) { 3222ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project i++; 3223ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project dtdvalidfpi = argv[i]; 3224ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project loaddtd++; 3225ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project options |= XML_PARSE_DTDLOAD; 3226ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3227ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_VALID_ENABLED */ 3228ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-dropdtd")) || 3229ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--dropdtd"))) 3230ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project dropdtd++; 3231ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-insert")) || 3232ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--insert"))) 3233ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project insert++; 3234ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-timing")) || 3235ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--timing"))) 3236ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project timing++; 3237ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-auto")) || 3238ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--auto"))) 3239ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project generate++; 3240ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-repeat")) || 3241ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--repeat"))) { 3242ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (repeat) 3243ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project repeat *= 10; 3244ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 3245ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project repeat = 100; 3246ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3247ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_PUSH_ENABLED 3248ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-push")) || 3249ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--push"))) 3250ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project push++; 325194442ad4107000e6d49f9b85a46a591495a57632Selim Gurun else if ((!strcmp(argv[i], "-pushsmall")) || 325294442ad4107000e6d49f9b85a46a591495a57632Selim Gurun (!strcmp(argv[i], "--pushsmall"))) { 325394442ad4107000e6d49f9b85a46a591495a57632Selim Gurun push++; 325494442ad4107000e6d49f9b85a46a591495a57632Selim Gurun pushsize = 10; 325594442ad4107000e6d49f9b85a46a591495a57632Selim Gurun } 3256ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_PUSH_ENABLED */ 325794442ad4107000e6d49f9b85a46a591495a57632Selim Gurun#ifdef HAVE_MMAP 3258ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-memory")) || 3259ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--memory"))) 3260ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project memory++; 3261ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3262ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-testIO")) || 3263ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--testIO"))) 3264ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project testIO++; 3265ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_XINCLUDE_ENABLED 3266ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-xinclude")) || 3267ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--xinclude"))) { 3268ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xinclude++; 3269ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project options |= XML_PARSE_XINCLUDE; 3270ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3271ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-noxincludenode")) || 3272ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--noxincludenode"))) { 3273ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xinclude++; 3274ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project options |= XML_PARSE_XINCLUDE; 3275ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project options |= XML_PARSE_NOXINCNODE; 3276ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 327760a4c356ee9ce5e9ccb23347c0381f0436192691Patrick Scott else if ((!strcmp(argv[i], "-nofixup-base-uris")) || 327860a4c356ee9ce5e9ccb23347c0381f0436192691Patrick Scott (!strcmp(argv[i], "--nofixup-base-uris"))) { 327960a4c356ee9ce5e9ccb23347c0381f0436192691Patrick Scott xinclude++; 328060a4c356ee9ce5e9ccb23347c0381f0436192691Patrick Scott options |= XML_PARSE_XINCLUDE; 328160a4c356ee9ce5e9ccb23347c0381f0436192691Patrick Scott options |= XML_PARSE_NOBASEFIX; 328260a4c356ee9ce5e9ccb23347c0381f0436192691Patrick Scott } 3283ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3284ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_OUTPUT_ENABLED 3285ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef HAVE_ZLIB_H 3286ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-compress")) || 3287ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--compress"))) { 3288ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project compress++; 3289ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlSetCompressMode(9); 3290ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3291ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3292ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_OUTPUT_ENABLED */ 3293ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-nowarning")) || 3294ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--nowarning"))) { 3295ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGetWarningsDefaultValue = 0; 3296ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlPedanticParserDefault(0); 3297ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project options |= XML_PARSE_NOWARNING; 3298ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3299ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-pedantic")) || 3300ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--pedantic"))) { 3301ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGetWarningsDefaultValue = 1; 3302ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlPedanticParserDefault(1); 3303ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project options |= XML_PARSE_PEDANTIC; 3304ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3305ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_DEBUG_ENABLED 3306ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-debugent")) || 3307ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--debugent"))) { 3308ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project debugent++; 3309ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserDebugEntities = 1; 3310df143a5041f03a22808b59c76698770b74692815Selim Gurun } 3311ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3312ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_C14N_ENABLED 3313ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-c14n")) || 3314ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--c14n"))) { 3315ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project canonical++; 3316ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project options |= XML_PARSE_NOENT | XML_PARSE_DTDATTR | XML_PARSE_DTDLOAD; 3317df143a5041f03a22808b59c76698770b74692815Selim Gurun } 3318df143a5041f03a22808b59c76698770b74692815Selim Gurun else if ((!strcmp(argv[i], "-c14n11")) || 3319df143a5041f03a22808b59c76698770b74692815Selim Gurun (!strcmp(argv[i], "--c14n11"))) { 3320df143a5041f03a22808b59c76698770b74692815Selim Gurun canonical_11++; 3321df143a5041f03a22808b59c76698770b74692815Selim Gurun options |= XML_PARSE_NOENT | XML_PARSE_DTDATTR | XML_PARSE_DTDLOAD; 3322df143a5041f03a22808b59c76698770b74692815Selim Gurun } 3323ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-exc-c14n")) || 3324ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--exc-c14n"))) { 3325ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project exc_canonical++; 3326ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project options |= XML_PARSE_NOENT | XML_PARSE_DTDATTR | XML_PARSE_DTDLOAD; 3327df143a5041f03a22808b59c76698770b74692815Selim Gurun } 3328ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3329ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_CATALOG_ENABLED 3330ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-catalogs")) || 3331ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--catalogs"))) { 3332ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project catalogs++; 3333ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if ((!strcmp(argv[i], "-nocatalogs")) || 3334ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--nocatalogs"))) { 3335ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project nocatalogs++; 3336df143a5041f03a22808b59c76698770b74692815Selim Gurun } 3337ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3338ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-encode")) || 3339ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--encode"))) { 3340ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project i++; 3341ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project encoding = argv[i]; 3342ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 3343ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * OK it's for testing purposes 3344ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 3345ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlAddEncodingAlias("UTF-8", "DVEnc"); 3346ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3347ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-noblanks")) || 3348ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--noblanks"))) { 334994442ad4107000e6d49f9b85a46a591495a57632Selim Gurun noblanks++; 335094442ad4107000e6d49f9b85a46a591495a57632Selim Gurun xmlKeepBlanksDefault(0); 335194442ad4107000e6d49f9b85a46a591495a57632Selim Gurun options |= XML_PARSE_NOBLANKS; 3352ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3353ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-maxmem")) || 3354ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--maxmem"))) { 3355ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project i++; 3356ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (sscanf(argv[i], "%d", &maxmem) == 1) { 3357ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlMemSetup(myFreeFunc, myMallocFunc, myReallocFunc, 3358ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project myStrdupFunc); 3359ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 3360ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project maxmem = 0; 3361ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3362ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3363ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-format")) || 3364ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--format"))) { 3365ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project noblanks++; 3366ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_OUTPUT_ENABLED 3367df143a5041f03a22808b59c76698770b74692815Selim Gurun format = 1; 3368ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_OUTPUT_ENABLED */ 3369ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlKeepBlanksDefault(0); 3370ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3371df143a5041f03a22808b59c76698770b74692815Selim Gurun else if ((!strcmp(argv[i], "-pretty")) || 3372df143a5041f03a22808b59c76698770b74692815Selim Gurun (!strcmp(argv[i], "--pretty"))) { 3373df143a5041f03a22808b59c76698770b74692815Selim Gurun i++; 3374df143a5041f03a22808b59c76698770b74692815Selim Gurun#ifdef LIBXML_OUTPUT_ENABLED 3375df143a5041f03a22808b59c76698770b74692815Selim Gurun format = atoi(argv[i]); 3376df143a5041f03a22808b59c76698770b74692815Selim Gurun if (format == 1) { 3377df143a5041f03a22808b59c76698770b74692815Selim Gurun noblanks++; 3378df143a5041f03a22808b59c76698770b74692815Selim Gurun xmlKeepBlanksDefault(0); 3379df143a5041f03a22808b59c76698770b74692815Selim Gurun } 338094442ad4107000e6d49f9b85a46a591495a57632Selim Gurun#endif /* LIBXML_OUTPUT_ENABLED */ 3381df143a5041f03a22808b59c76698770b74692815Selim Gurun } 3382ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_READER_ENABLED 3383ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-stream")) || 3384ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--stream"))) { 3385ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project stream++; 3386ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3387ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-walker")) || 3388ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--walker"))) { 3389ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project walker++; 3390ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project noout++; 3391ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3392ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_READER_ENABLED */ 3393ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_SAX1_ENABLED 3394ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-sax1")) || 3395ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--sax1"))) { 3396df143a5041f03a22808b59c76698770b74692815Selim Gurun sax1++; 3397df143a5041f03a22808b59c76698770b74692815Selim Gurun options |= XML_PARSE_SAX1; 3398ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3399ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_SAX1_ENABLED */ 3400ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-sax")) || 3401ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--sax"))) { 3402df143a5041f03a22808b59c76698770b74692815Selim Gurun sax++; 3403ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3404ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((!strcmp(argv[i], "-chkregister")) || 3405ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--chkregister"))) { 3406df143a5041f03a22808b59c76698770b74692815Selim Gurun chkregister++; 3407ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_SCHEMAS_ENABLED 3408ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if ((!strcmp(argv[i], "-relaxng")) || 3409ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--relaxng"))) { 3410ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project i++; 3411ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project relaxng = argv[i]; 3412ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project noent++; 3413ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project options |= XML_PARSE_NOENT; 3414ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if ((!strcmp(argv[i], "-schema")) || 3415ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--schema"))) { 3416ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project i++; 3417ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project schema = argv[i]; 3418ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project noent++; 3419ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3420ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_SCHEMATRON_ENABLED 3421ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if ((!strcmp(argv[i], "-schematron")) || 3422ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--schematron"))) { 3423ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project i++; 3424ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project schematron = argv[i]; 3425ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project noent++; 3426ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3427ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if ((!strcmp(argv[i], "-nonet")) || 3428ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--nonet"))) { 3429ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project options |= XML_PARSE_NONET; 3430ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlSetExternalEntityLoader(xmlNoNetExternalEntityLoader); 3431ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if ((!strcmp(argv[i], "-nocompact")) || 3432ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--nocompact"))) { 3433ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project options &= ~XML_PARSE_COMPACT; 3434ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if ((!strcmp(argv[i], "-load-trace")) || 3435ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--load-trace"))) { 3436ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project load_trace++; 3437ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if ((!strcmp(argv[i], "-path")) || 3438ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--path"))) { 3439ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project i++; 3440ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project parsePath(BAD_CAST argv[i]); 3441ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_PATTERN_ENABLED 3442ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if ((!strcmp(argv[i], "-pattern")) || 3443ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--pattern"))) { 3444ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project i++; 3445ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project pattern = argv[i]; 3446ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3447df143a5041f03a22808b59c76698770b74692815Selim Gurun#ifdef LIBXML_XPATH_ENABLED 3448df143a5041f03a22808b59c76698770b74692815Selim Gurun } else if ((!strcmp(argv[i], "-xpath")) || 3449df143a5041f03a22808b59c76698770b74692815Selim Gurun (!strcmp(argv[i], "--xpath"))) { 3450df143a5041f03a22808b59c76698770b74692815Selim Gurun i++; 3451df143a5041f03a22808b59c76698770b74692815Selim Gurun noout++; 3452df143a5041f03a22808b59c76698770b74692815Selim Gurun xpathquery = argv[i]; 3453df143a5041f03a22808b59c76698770b74692815Selim Gurun#endif 345460a4c356ee9ce5e9ccb23347c0381f0436192691Patrick Scott } else if ((!strcmp(argv[i], "-oldxml10")) || 345560a4c356ee9ce5e9ccb23347c0381f0436192691Patrick Scott (!strcmp(argv[i], "--oldxml10"))) { 345660a4c356ee9ce5e9ccb23347c0381f0436192691Patrick Scott oldxml10++; 345760a4c356ee9ce5e9ccb23347c0381f0436192691Patrick Scott options |= XML_PARSE_OLD10; 3458ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 3459ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "Unknown option %s\n", argv[i]); 3460ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project usage(argv[0]); 3461ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(1); 3462ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3463ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3464ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 3465ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_CATALOG_ENABLED 3466ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (nocatalogs == 0) { 3467ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (catalogs) { 3468ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const char *catal; 3469ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 3470ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project catal = getenv("SGML_CATALOG_FILES"); 3471ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (catal != NULL) { 3472ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlLoadCatalogs(catal); 3473ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 3474ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "Variable $SGML_CATALOG_FILES not set\n"); 3475ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3476ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3477ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3478ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3479ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 3480ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_SAX1_ENABLED 3481ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (sax1) 3482ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlSAXDefaultVersion(1); 3483ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 3484ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlSAXDefaultVersion(2); 3485ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_SAX1_ENABLED */ 3486ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 3487ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (chkregister) { 3488ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlRegisterNodeDefault(registerNode); 3489ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDeregisterNodeDefault(deregisterNode); 3490ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3491df143a5041f03a22808b59c76698770b74692815Selim Gurun 3492ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project indent = getenv("XMLLINT_INDENT"); 3493ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if(indent != NULL) { 3494ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlTreeIndentString = indent; 3495ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3496df143a5041f03a22808b59c76698770b74692815Selim Gurun 3497ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 3498ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project defaultEntityLoader = xmlGetExternalEntityLoader(); 3499ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlSetExternalEntityLoader(xmllintExternalEntityLoader); 3500ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 3501ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlLineNumbersDefault(1); 3502ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (loaddtd != 0) 3503ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlLoadExtDtdDefaultValue |= XML_DETECT_IDS; 3504ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (dtdattrs) 3505ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlLoadExtDtdDefaultValue |= XML_COMPLETE_ATTRS; 3506ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (noent != 0) xmlSubstituteEntitiesDefault(1); 3507ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_VALID_ENABLED 3508ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (valid != 0) xmlDoValidityCheckingDefaultValue = 1; 3509ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_VALID_ENABLED */ 3510ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((htmlout) && (!nowrap)) { 3511ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3512ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"\n"); 3513ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3514ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "\t\"http://www.w3.org/TR/REC-html40/loose.dtd\">\n"); 3515ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3516ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "<html><head><title>%s output</title></head>\n", 3517ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project argv[0]); 3518df143a5041f03a22808b59c76698770b74692815Selim Gurun xmlGenericError(xmlGenericErrorContext, 3519ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "<body bgcolor=\"#ffffff\"><h1 align=\"center\">%s output</h1>\n", 3520ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project argv[0]); 3521ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3522ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 3523ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_SCHEMATRON_ENABLED 3524ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((schematron != NULL) && (sax == 0) 3525ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_READER_ENABLED 3526ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project && (stream == 0) 3527ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_READER_ENABLED */ 3528ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ) { 3529ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlSchematronParserCtxtPtr ctxt; 3530ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 3531ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* forces loading the DTDs */ 3532df143a5041f03a22808b59c76698770b74692815Selim Gurun xmlLoadExtDtdDefaultValue |= 1; 3533ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project options |= XML_PARSE_DTDLOAD; 3534ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (timing) { 3535ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project startTimer(); 3536ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3537ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt = xmlSchematronNewParserCtxt(schematron); 3538ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#if 0 3539ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlSchematronSetParserErrors(ctxt, 3540ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (xmlSchematronValidityErrorFunc) fprintf, 3541ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (xmlSchematronValidityWarningFunc) fprintf, 3542ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project stderr); 3543ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3544ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project wxschematron = xmlSchematronParse(ctxt); 3545ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (wxschematron == NULL) { 3546ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3547ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Schematron schema %s failed to compile\n", schematron); 3548ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_SCHEMACOMP; 3549ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project schematron = NULL; 3550ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3551ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlSchematronFreeParserCtxt(ctxt); 3552ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (timing) { 3553ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project endTimer("Compiling the schemas"); 3554ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3555ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3556ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3557ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_SCHEMAS_ENABLED 3558ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((relaxng != NULL) && (sax == 0) 3559ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_READER_ENABLED 3560ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project && (stream == 0) 3561ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_READER_ENABLED */ 3562ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ) { 3563ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlRelaxNGParserCtxtPtr ctxt; 3564ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 3565ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* forces loading the DTDs */ 3566df143a5041f03a22808b59c76698770b74692815Selim Gurun xmlLoadExtDtdDefaultValue |= 1; 3567ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project options |= XML_PARSE_DTDLOAD; 3568ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (timing) { 3569ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project startTimer(); 3570ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3571ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt = xmlRelaxNGNewParserCtxt(relaxng); 3572ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlRelaxNGSetParserErrors(ctxt, 3573ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (xmlRelaxNGValidityErrorFunc) fprintf, 3574ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (xmlRelaxNGValidityWarningFunc) fprintf, 3575ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project stderr); 3576ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project relaxngschemas = xmlRelaxNGParse(ctxt); 3577ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (relaxngschemas == NULL) { 3578ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3579ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Relax-NG schema %s failed to compile\n", relaxng); 3580ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_SCHEMACOMP; 3581ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project relaxng = NULL; 3582ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3583ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlRelaxNGFreeParserCtxt(ctxt); 3584ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (timing) { 3585ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project endTimer("Compiling the schemas"); 3586ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3587ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if ((schema != NULL) 3588ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_READER_ENABLED 3589ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project && (stream == 0) 3590ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3591ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ) { 3592ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlSchemaParserCtxtPtr ctxt; 3593ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 3594ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (timing) { 3595ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project startTimer(); 3596ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3597ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt = xmlSchemaNewParserCtxt(schema); 3598ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlSchemaSetParserErrors(ctxt, 3599ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (xmlSchemaValidityErrorFunc) fprintf, 3600ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (xmlSchemaValidityWarningFunc) fprintf, 3601ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project stderr); 3602ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project wxschemas = xmlSchemaParse(ctxt); 3603ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (wxschemas == NULL) { 3604ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3605ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "WXS schema %s failed to compile\n", schema); 3606ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_SCHEMACOMP; 3607ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project schema = NULL; 3608ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3609ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlSchemaFreeParserCtxt(ctxt); 3610ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (timing) { 3611ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project endTimer("Compiling the schemas"); 3612ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3613ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3614ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_SCHEMAS_ENABLED */ 3615ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_PATTERN_ENABLED 3616ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((pattern != NULL) 3617ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_READER_ENABLED 3618ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project && (walker == 0) 3619ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3620ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ) { 3621ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project patternc = xmlPatterncompile((const xmlChar *) pattern, NULL, 0, NULL); 3622ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (patternc == NULL) { 3623ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3624ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Pattern %s failed to compile\n", pattern); 3625ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_SCHEMAPAT; 3626ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project pattern = NULL; 3627ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3628ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3629ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_PATTERN_ENABLED */ 3630ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project for (i = 1; i < argc ; i++) { 3631ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((!strcmp(argv[i], "-encode")) || 3632ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--encode"))) { 3633ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project i++; 3634ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project continue; 3635ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if ((!strcmp(argv[i], "-o")) || 3636ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "-output")) || 3637ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--output"))) { 3638ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project i++; 3639ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project continue; 3640ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3641ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_VALID_ENABLED 3642ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((!strcmp(argv[i], "-dtdvalid")) || 3643ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--dtdvalid"))) { 3644ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project i++; 3645ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project continue; 3646df143a5041f03a22808b59c76698770b74692815Selim Gurun } 3647ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((!strcmp(argv[i], "-path")) || 3648ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--path"))) { 3649ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project i++; 3650ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project continue; 3651ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3652ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((!strcmp(argv[i], "-dtdvalidfpi")) || 3653ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--dtdvalidfpi"))) { 3654ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project i++; 3655ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project continue; 3656ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3657ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_VALID_ENABLED */ 3658ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((!strcmp(argv[i], "-relaxng")) || 3659ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--relaxng"))) { 3660ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project i++; 3661ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project continue; 3662ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3663ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((!strcmp(argv[i], "-maxmem")) || 3664ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--maxmem"))) { 3665ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project i++; 3666ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project continue; 3667ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3668df143a5041f03a22808b59c76698770b74692815Selim Gurun if ((!strcmp(argv[i], "-pretty")) || 3669df143a5041f03a22808b59c76698770b74692815Selim Gurun (!strcmp(argv[i], "--pretty"))) { 3670df143a5041f03a22808b59c76698770b74692815Selim Gurun i++; 3671df143a5041f03a22808b59c76698770b74692815Selim Gurun continue; 3672df143a5041f03a22808b59c76698770b74692815Selim Gurun } 3673ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((!strcmp(argv[i], "-schema")) || 3674ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--schema"))) { 3675ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project i++; 3676ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project continue; 3677ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3678ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((!strcmp(argv[i], "-schematron")) || 3679ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--schematron"))) { 3680ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project i++; 3681ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project continue; 3682ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3683ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_PATTERN_ENABLED 3684ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((!strcmp(argv[i], "-pattern")) || 3685ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!strcmp(argv[i], "--pattern"))) { 3686ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project i++; 3687ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project continue; 3688ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3689ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3690df143a5041f03a22808b59c76698770b74692815Selim Gurun#ifdef LIBXML_XPATH_ENABLED 3691df143a5041f03a22808b59c76698770b74692815Selim Gurun if ((!strcmp(argv[i], "-xpath")) || 3692df143a5041f03a22808b59c76698770b74692815Selim Gurun (!strcmp(argv[i], "--xpath"))) { 3693df143a5041f03a22808b59c76698770b74692815Selim Gurun i++; 3694df143a5041f03a22808b59c76698770b74692815Selim Gurun continue; 3695df143a5041f03a22808b59c76698770b74692815Selim Gurun } 3696df143a5041f03a22808b59c76698770b74692815Selim Gurun#endif 3697ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((timing) && (repeat)) 3698ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project startTimer(); 3699ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* Remember file names. "-" means stdin. <sven@zen.org> */ 3700ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((argv[i][0] != '-') || (strcmp(argv[i], "-") == 0)) { 3701ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (repeat) { 3702ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserCtxtPtr ctxt = NULL; 3703ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 3704ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project for (acount = 0;acount < repeat;acount++) { 3705ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_READER_ENABLED 3706ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (stream != 0) { 3707ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project streamFile(argv[i]); 3708ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 3709ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_READER_ENABLED */ 3710ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (sax) { 3711ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project testSAX(argv[i]); 3712ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 3713ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt == NULL) 3714ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt = xmlNewParserCtxt(); 3715ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project parseAndPrintFile(argv[i], ctxt); 3716ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3717ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_READER_ENABLED 3718ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3719ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_READER_ENABLED */ 3720ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3721ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt != NULL) 3722ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFreeParserCtxt(ctxt); 3723ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 3724ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project nbregister = 0; 3725ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 3726ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_READER_ENABLED 3727ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (stream != 0) 3728ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project streamFile(argv[i]); 3729ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 3730ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_READER_ENABLED */ 3731ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (sax) { 3732ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project testSAX(argv[i]); 3733ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 3734ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project parseAndPrintFile(argv[i], NULL); 3735ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3736ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 3737ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((chkregister) && (nbregister != 0)) { 3738ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "Registration count off: %d\n", nbregister); 3739ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project progresult = XMLLINT_ERR_RDREGIS; 3740ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3741ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3742ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project files ++; 3743ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((timing) && (repeat)) { 3744ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project endTimer("%d iterations", repeat); 3745ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3746ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3747ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3748df143a5041f03a22808b59c76698770b74692815Selim Gurun if (generate) 3749ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project parseAndPrintFile(NULL, NULL); 3750ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((htmlout) && (!nowrap)) { 3751ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, "</body></html>\n"); 3752ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3753ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((files == 0) && (!generate) && (version == 0)) { 3754ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project usage(argv[0]); 3755ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3756ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_SCHEMATRON_ENABLED 3757ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (wxschematron != NULL) 3758ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlSchematronFree(wxschematron); 3759ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3760ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_SCHEMAS_ENABLED 3761ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (relaxngschemas != NULL) 3762ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlRelaxNGFree(relaxngschemas); 3763ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (wxschemas != NULL) 3764ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlSchemaFree(wxschemas); 3765ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlRelaxNGCleanupTypes(); 3766ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3767ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_PATTERN_ENABLED 3768ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (patternc != NULL) 3769ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFreePattern(patternc); 3770ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3771ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCleanupParser(); 3772ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlMemoryDump(); 3773ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 3774ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(progresult); 3775ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 3776ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 3777