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