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