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