1ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/* 2ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * debugXML.c : This is a set of routines used for debugging the tree 3ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * produced by the XML parser. 4ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 5ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * See Copyright for the status of this software. 6ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 7ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Daniel Veillard <daniel@veillard.com> 8ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 9ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 10ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#define IN_LIBXML 11ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include "libxml.h" 12ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_DEBUG_ENABLED 13ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 14ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <string.h> 15ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef HAVE_STDLIB_H 16ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <stdlib.h> 17ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 18ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef HAVE_STRING_H 19ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <string.h> 20ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 21ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/xmlmemory.h> 22ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/tree.h> 23ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/parser.h> 24ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/parserInternals.h> 25ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/valid.h> 26ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/debugXML.h> 27ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/HTMLtree.h> 28ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/HTMLparser.h> 29ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/xmlerror.h> 30ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/globals.h> 31ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/xpathInternals.h> 32ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/uri.h> 33ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_SCHEMAS_ENABLED 34ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/relaxng.h> 35ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 36ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 37ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#define DUMP_TEXT_TYPE 1 38ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 39ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projecttypedef struct _xmlDebugCtxt xmlDebugCtxt; 40ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projecttypedef xmlDebugCtxt *xmlDebugCtxtPtr; 41ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstruct _xmlDebugCtxt { 42ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project FILE *output; /* the output file */ 43ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project char shift[101]; /* used for indenting */ 44ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int depth; /* current depth */ 45ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDocPtr doc; /* current document */ 46ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr node; /* current node */ 47ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDictPtr dict; /* the doc dictionnary */ 48ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int check; /* do just checkings */ 49ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int errors; /* number of errors found */ 50ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int nodict; /* if the document has no dictionnary */ 51ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int options; /* options */ 52ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project}; 53ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 54ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void xmlCtxtDumpNodeList(xmlDebugCtxtPtr ctxt, xmlNodePtr node); 55ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 56ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 57ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlCtxtDumpInitCtxt(xmlDebugCtxtPtr ctxt) 58ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 59ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int i; 60ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 61ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->depth = 0; 62ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->check = 0; 63ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->errors = 0; 64ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->output = stdout; 65ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->doc = NULL; 66ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->node = NULL; 67ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->dict = NULL; 68ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->nodict = 0; 69ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->options = 0; 70ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project for (i = 0; i < 100; i++) 71ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->shift[i] = ' '; 72ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->shift[100] = 0; 73ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 74ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 75ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 76ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlCtxtDumpCleanCtxt(xmlDebugCtxtPtr ctxt ATTRIBUTE_UNUSED) 77ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 78ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* remove the ATTRIBUTE_UNUSED when this is added */ 79ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 80ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 81ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 82ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlNsCheckScope: 83ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node: the node 84ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ns: the namespace node 85ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 86ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Check that a given namespace is in scope on a node. 87ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 8894442ad4107000e6d49f9b85a46a591495a57632Selim Gurun * Returns 1 if in scope, -1 in case of argument error, 89ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * -2 if the namespace is not in scope, and -3 if not on 90ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * an ancestor node. 91ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 92ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int 93ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlNsCheckScope(xmlNodePtr node, xmlNsPtr ns) 94ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 95ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNsPtr cur; 96ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 97ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((node == NULL) || (ns == NULL)) 98ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(-1); 99ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 100ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((node->type != XML_ELEMENT_NODE) && 101ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (node->type != XML_ATTRIBUTE_NODE) && 102ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (node->type != XML_DOCUMENT_NODE) && 103ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (node->type != XML_TEXT_NODE) && 104ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (node->type != XML_HTML_DOCUMENT_NODE) && 105ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (node->type != XML_XINCLUDE_START)) 106ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(-2); 107ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 108ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while ((node != NULL) && 109ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ((node->type == XML_ELEMENT_NODE) || 110ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (node->type == XML_ATTRIBUTE_NODE) || 111ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (node->type == XML_TEXT_NODE) || 112ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (node->type == XML_XINCLUDE_START))) { 113ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((node->type == XML_ELEMENT_NODE) || 114ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (node->type == XML_XINCLUDE_START)) { 115ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cur = node->nsDef; 116ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while (cur != NULL) { 117ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (cur == ns) 118ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(1); 119ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (xmlStrEqual(cur->prefix, ns->prefix)) 120ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(-2); 121ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cur = cur->next; 122ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 123ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 124ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project node = node->parent; 125ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 126ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* the xml namespace may be declared on the document node */ 127ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((node != NULL) && 128ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ((node->type == XML_DOCUMENT_NODE) || 129ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (node->type == XML_HTML_DOCUMENT_NODE))) { 130ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNsPtr oldNs = ((xmlDocPtr) node)->oldNs; 131ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (oldNs == ns) 132ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(1); 133ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 134ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(-3); 135ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 136ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 137ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 138ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlCtxtDumpSpaces(xmlDebugCtxtPtr ctxt) 139ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 140ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt->check) 141ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 142ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((ctxt->output != NULL) && (ctxt->depth > 0)) { 143ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt->depth < 50) 14443ff9b493a5b9d65ae1661455a22fb2f62a3b352Nick Kralevich fprintf(ctxt->output, "%s", &ctxt->shift[100 - 2 * ctxt->depth]); 145ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 14643ff9b493a5b9d65ae1661455a22fb2f62a3b352Nick Kralevich fprintf(ctxt->output, "%s", ctxt->shift); 147ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 148ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 149ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 150ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 151ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlDebugErr: 152ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: a debug context 153ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @error: the error code 154ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 155ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Handle a debug error. 156ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 157ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 158ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlDebugErr(xmlDebugCtxtPtr ctxt, int error, const char *msg) 159ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 160ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->errors++; 161ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project __xmlRaiseError(NULL, NULL, NULL, 162ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, ctxt->node, XML_FROM_CHECK, 163ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project error, XML_ERR_ERROR, NULL, 0, 164ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, NULL, NULL, 0, 0, 16543ff9b493a5b9d65ae1661455a22fb2f62a3b352Nick Kralevich "%s", msg); 166ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 167ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 168ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlDebugErr2(xmlDebugCtxtPtr ctxt, int error, const char *msg, int extra) 169ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 170ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->errors++; 171ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project __xmlRaiseError(NULL, NULL, NULL, 172ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, ctxt->node, XML_FROM_CHECK, 173ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project error, XML_ERR_ERROR, NULL, 0, 174ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, NULL, NULL, 0, 0, 175ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project msg, extra); 176ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 177ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 178ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlDebugErr3(xmlDebugCtxtPtr ctxt, int error, const char *msg, const char *extra) 179ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 180ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->errors++; 181ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project __xmlRaiseError(NULL, NULL, NULL, 182ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, ctxt->node, XML_FROM_CHECK, 183ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project error, XML_ERR_ERROR, NULL, 0, 184ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, NULL, NULL, 0, 0, 185ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project msg, extra); 186ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 187ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 188ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 189ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlCtxtNsCheckScope: 190ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: the debugging context 191ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node: the node 192ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ns: the namespace node 193ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 194ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Report if a given namespace is is not in scope. 195ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 196ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 197ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlCtxtNsCheckScope(xmlDebugCtxtPtr ctxt, xmlNodePtr node, xmlNsPtr ns) 198ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 199ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int ret; 200ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 201ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ret = xmlNsCheckScope(node, ns); 202ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ret == -2) { 203ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ns->prefix == NULL) 204ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_NS_SCOPE, 205ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Reference to default namespace not in scope\n"); 206ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 207ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr3(ctxt, XML_CHECK_NS_SCOPE, 208ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Reference to namespace '%s' not in scope\n", 209ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (char *) ns->prefix); 210ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 211ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ret == -3) { 212ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ns->prefix == NULL) 213ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_NS_ANCESTOR, 214ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Reference to default namespace not on ancestor\n"); 215ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 216ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr3(ctxt, XML_CHECK_NS_ANCESTOR, 217ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Reference to namespace '%s' not on ancestor\n", 218ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (char *) ns->prefix); 219ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 220ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 221ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 222ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 223ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlCtxtCheckString: 224ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: the debug context 225ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @str: the string 226ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 227ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Do debugging on the string, currently it just checks the UTF-8 content 228ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 229ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 230ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlCtxtCheckString(xmlDebugCtxtPtr ctxt, const xmlChar * str) 231ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 232ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (str == NULL) return; 233ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt->check) { 234ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!xmlCheckUTF8(str)) { 235ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr3(ctxt, XML_CHECK_NOT_UTF8, 236ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "String is not UTF-8 %s", (const char *) str); 237ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 238ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 239ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 240ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 241ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 242ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlCtxtCheckName: 243ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: the debug context 244ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @name: the name 245ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 246ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Do debugging on the name, for example the dictionnary status and 247ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * conformance to the Name production. 248ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 249ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 250ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlCtxtCheckName(xmlDebugCtxtPtr ctxt, const xmlChar * name) 251ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 252ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt->check) { 253ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (name == NULL) { 254ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_NO_NAME, "Name is NULL"); 255ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 256ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 257ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (xmlValidateName(name, 0)) { 258ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr3(ctxt, XML_CHECK_NOT_NCNAME, 259ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Name is not an NCName '%s'", (const char *) name); 260ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 261ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((ctxt->dict != NULL) && 262df143a5041f03a22808b59c76698770b74692815Selim Gurun (!xmlDictOwns(ctxt->dict, name)) && 263df143a5041f03a22808b59c76698770b74692815Selim Gurun ((ctxt->doc == NULL) || 264df143a5041f03a22808b59c76698770b74692815Selim Gurun ((ctxt->doc->parseFlags & (XML_PARSE_SAX1 | XML_PARSE_NODICT)) == 0))) { 265ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr3(ctxt, XML_CHECK_OUTSIDE_DICT, 266ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Name is not from the document dictionnary '%s'", 267ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (const char *) name); 268ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 269ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 270ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 271ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 272ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 273ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlCtxtGenericNodeCheck(xmlDebugCtxtPtr ctxt, xmlNodePtr node) { 274ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDocPtr doc; 275ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDictPtr dict; 276ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 277ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project doc = node->doc; 278ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 279ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->parent == NULL) 280ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_NO_PARENT, 281ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Node has no parent\n"); 282ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->doc == NULL) { 283ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_NO_DOC, 284ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Node has no doc\n"); 285ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project dict = NULL; 286ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 287ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project dict = doc->dict; 288ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((dict == NULL) && (ctxt->nodict == 0)) { 289ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#if 0 290ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* desactivated right now as it raises too many errors */ 291ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (doc->type == XML_DOCUMENT_NODE) 292ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_NO_DICT, 293ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Document has no dictionnary\n"); 294ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 295ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->nodict = 1; 296ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 297ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt->doc == NULL) 298ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->doc = doc; 299ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 300ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt->dict == NULL) { 301ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->dict = dict; 302ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 303ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 304ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((node->parent != NULL) && (node->doc != node->parent->doc) && 305ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (!xmlStrEqual(node->name, BAD_CAST "pseudoroot"))) 306ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_WRONG_DOC, 307ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Node doc differs from parent's one\n"); 308ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->prev == NULL) { 309ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->type == XML_ATTRIBUTE_NODE) { 310ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((node->parent != NULL) && 311ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (node != (xmlNodePtr) node->parent->properties)) 312ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_NO_PREV, 313ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Attr has no prev and not first of attr list\n"); 31494442ad4107000e6d49f9b85a46a591495a57632Selim Gurun 315ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if ((node->parent != NULL) && (node->parent->children != node)) 316ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_NO_PREV, 317ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Node has no prev and not first of parent list\n"); 318ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 319ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->prev->next != node) 320ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_WRONG_PREV, 321ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Node prev->next : back link wrong\n"); 322ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 323ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->next == NULL) { 324ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((node->parent != NULL) && (node->type != XML_ATTRIBUTE_NODE) && 32560a4c356ee9ce5e9ccb23347c0381f0436192691Patrick Scott (node->parent->last != node) && 32660a4c356ee9ce5e9ccb23347c0381f0436192691Patrick Scott (node->parent->type == XML_ELEMENT_NODE)) 327ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_NO_NEXT, 328ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Node has no next and not last of parent list\n"); 329ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 330ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->next->prev != node) 331ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_WRONG_NEXT, 332ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Node next->prev : forward link wrong\n"); 333ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->next->parent != node->parent) 334ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_WRONG_PARENT, 335ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Node next->prev : forward link wrong\n"); 336ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 337ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->type == XML_ELEMENT_NODE) { 338ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNsPtr ns; 339ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 340ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ns = node->nsDef; 341ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while (ns != NULL) { 342ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtNsCheckScope(ctxt, node, ns); 343ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ns = ns->next; 344ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 345ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->ns != NULL) 346ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtNsCheckScope(ctxt, node, node->ns); 347ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (node->type == XML_ATTRIBUTE_NODE) { 348ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->ns != NULL) 349ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtNsCheckScope(ctxt, node, node->ns); 350ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 351ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 352ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((node->type != XML_ELEMENT_NODE) && 353ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (node->type != XML_ATTRIBUTE_NODE) && 354ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (node->type != XML_ELEMENT_DECL) && 355ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (node->type != XML_ATTRIBUTE_DECL) && 356ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (node->type != XML_DTD_NODE) && 357ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (node->type != XML_HTML_DOCUMENT_NODE) && 358ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (node->type != XML_DOCUMENT_NODE)) { 359ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->content != NULL) 360ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtCheckString(ctxt, (const xmlChar *) node->content); 361ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 362ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project switch (node->type) { 363ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ELEMENT_NODE: 364ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ATTRIBUTE_NODE: 365ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtCheckName(ctxt, node->name); 366ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 367ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_TEXT_NODE: 368ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((node->name == xmlStringText) || 369ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (node->name == xmlStringTextNoenc)) 370ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 371ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* some case of entity substitution can lead to this */ 372ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((ctxt->dict != NULL) && 373ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (node->name == xmlDictLookup(ctxt->dict, BAD_CAST "nbktext", 374ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 7))) 375ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 376ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 377ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr3(ctxt, XML_CHECK_WRONG_NAME, 378ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Text node has wrong name '%s'", 379ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (const char *) node->name); 380ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 381ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_COMMENT_NODE: 382ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->name == xmlStringComment) 383ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 384ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr3(ctxt, XML_CHECK_WRONG_NAME, 385ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Comment node has wrong name '%s'", 386ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (const char *) node->name); 387ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 388ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_PI_NODE: 389ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtCheckName(ctxt, node->name); 390ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 391ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_CDATA_SECTION_NODE: 392ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->name == NULL) 393ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 394ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr3(ctxt, XML_CHECK_NAME_NOT_NULL, 395ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "CData section has non NULL name '%s'", 396ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (const char *) node->name); 397ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 398ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ENTITY_REF_NODE: 399ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ENTITY_NODE: 400ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_DOCUMENT_TYPE_NODE: 401ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_DOCUMENT_FRAG_NODE: 402ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_NOTATION_NODE: 403ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_DTD_NODE: 404ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ELEMENT_DECL: 405ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ATTRIBUTE_DECL: 406ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ENTITY_DECL: 407ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_NAMESPACE_DECL: 408ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_XINCLUDE_START: 409ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_XINCLUDE_END: 410ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_DOCB_ENABLED 411ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_DOCB_DOCUMENT_NODE: 412ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 413ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_DOCUMENT_NODE: 414ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_HTML_DOCUMENT_NODE: 415ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 416ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 417ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 418ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 419ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 420ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlCtxtDumpString(xmlDebugCtxtPtr ctxt, const xmlChar * str) 421ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 422ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int i; 423ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 424ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt->check) { 425ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 426ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 427ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* TODO: check UTF8 content of the string */ 428ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (str == NULL) { 429ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "(NULL)"); 430ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 431ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 432ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project for (i = 0; i < 40; i++) 433ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (str[i] == 0) 434ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 435ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if (IS_BLANK_CH(str[i])) 436ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fputc(' ', ctxt->output); 437ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if (str[i] >= 0x80) 438ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "#%X", str[i]); 439ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 440ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fputc(str[i], ctxt->output); 441ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "..."); 442ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 443ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 444ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 445ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlCtxtDumpDtdNode(xmlDebugCtxtPtr ctxt, xmlDtdPtr dtd) 446ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 447ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 448ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 449ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (dtd == NULL) { 450ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) 451ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "DTD node is NULL\n"); 452ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 453ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 454ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 455ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (dtd->type != XML_DTD_NODE) { 456ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_NOT_DTD, 457ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Node is not a DTD"); 458ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 459ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 460ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) { 461ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (dtd->name != NULL) 462ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "DTD(%s)", (char *) dtd->name); 463ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 464ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "DTD"); 465ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (dtd->ExternalID != NULL) 466ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, ", PUBLIC %s", (char *) dtd->ExternalID); 467ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (dtd->SystemID != NULL) 468ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, ", SYSTEM %s", (char *) dtd->SystemID); 469ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\n"); 470ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 471ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 472ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Do a bit of checking 473ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 474ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtGenericNodeCheck(ctxt, (xmlNodePtr) dtd); 475ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 476ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 477ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 478ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlCtxtDumpAttrDecl(xmlDebugCtxtPtr ctxt, xmlAttributePtr attr) 479ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 480ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 481ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 482ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (attr == NULL) { 483ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) 484ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "Attribute declaration is NULL\n"); 485ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 486ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 487ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (attr->type != XML_ATTRIBUTE_DECL) { 488ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_NOT_ATTR_DECL, 489ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Node is not an attribute declaration"); 490ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 491ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 492ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (attr->name != NULL) { 493ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) 494ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "ATTRDECL(%s)", (char *) attr->name); 495ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else 496ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_NO_NAME, 497ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Node attribute declaration has no name"); 498ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (attr->elem != NULL) { 499ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) 500ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, " for %s", (char *) attr->elem); 501ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else 502ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_NO_ELEM, 503ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Node attribute declaration has no element name"); 504ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) { 505ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project switch (attr->atype) { 506ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ATTRIBUTE_CDATA: 507ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, " CDATA"); 508ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 509ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ATTRIBUTE_ID: 510ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, " ID"); 511ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 512ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ATTRIBUTE_IDREF: 513ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, " IDREF"); 514ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 515ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ATTRIBUTE_IDREFS: 516ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, " IDREFS"); 517ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 518ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ATTRIBUTE_ENTITY: 519ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, " ENTITY"); 520ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 521ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ATTRIBUTE_ENTITIES: 522ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, " ENTITIES"); 523ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 524ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ATTRIBUTE_NMTOKEN: 525ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, " NMTOKEN"); 526ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 527ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ATTRIBUTE_NMTOKENS: 528ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, " NMTOKENS"); 529ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 530ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ATTRIBUTE_ENUMERATION: 531ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, " ENUMERATION"); 532ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 533ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ATTRIBUTE_NOTATION: 534ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, " NOTATION "); 535ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 536ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 537ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (attr->tree != NULL) { 538ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int indx; 539ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlEnumerationPtr cur = attr->tree; 540ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 541ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project for (indx = 0; indx < 5; indx++) { 542ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (indx != 0) 543ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "|%s", (char *) cur->name); 544ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 545ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, " (%s", (char *) cur->name); 546ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cur = cur->next; 547ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (cur == NULL) 548ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 549ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 550ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (cur == NULL) 551ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, ")"); 552ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 553ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "...)"); 554ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 555ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project switch (attr->def) { 556ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ATTRIBUTE_NONE: 557ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 558ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ATTRIBUTE_REQUIRED: 559ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, " REQUIRED"); 560ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 561ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ATTRIBUTE_IMPLIED: 562ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, " IMPLIED"); 563ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 564ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ATTRIBUTE_FIXED: 565ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, " FIXED"); 566ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 567ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 568ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (attr->defaultValue != NULL) { 569ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\""); 570ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpString(ctxt, attr->defaultValue); 571ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\""); 572ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 573ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\n"); 574ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 575ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 576ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 577ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Do a bit of checking 578ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 579ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtGenericNodeCheck(ctxt, (xmlNodePtr) attr); 580ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 581ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 582ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 583ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlCtxtDumpElemDecl(xmlDebugCtxtPtr ctxt, xmlElementPtr elem) 584ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 585ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 586ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 587ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (elem == NULL) { 588ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) 589ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "Element declaration is NULL\n"); 590ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 591ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 592ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (elem->type != XML_ELEMENT_DECL) { 593ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_NOT_ELEM_DECL, 594ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Node is not an element declaration"); 595ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 596ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 597ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (elem->name != NULL) { 598ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) { 599ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "ELEMDECL("); 600ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpString(ctxt, elem->name); 601ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, ")"); 602ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 603ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else 604ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_NO_NAME, 605ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Element declaration has no name"); 606ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) { 607ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project switch (elem->etype) { 608ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ELEMENT_TYPE_UNDEFINED: 609ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, ", UNDEFINED"); 610ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 611ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ELEMENT_TYPE_EMPTY: 612ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, ", EMPTY"); 613ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 614ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ELEMENT_TYPE_ANY: 615ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, ", ANY"); 616ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 617ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ELEMENT_TYPE_MIXED: 618ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, ", MIXED "); 619ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 620ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ELEMENT_TYPE_ELEMENT: 621ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, ", MIXED "); 622ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 623ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 624ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((elem->type != XML_ELEMENT_NODE) && (elem->content != NULL)) { 625ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project char buf[5001]; 626ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 627ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project buf[0] = 0; 628ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlSnprintfElementContent(buf, 5000, elem->content, 1); 629ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project buf[5000] = 0; 630ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "%s", buf); 631ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 632ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\n"); 633ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 634ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 635ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 636ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Do a bit of checking 637ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 638ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtGenericNodeCheck(ctxt, (xmlNodePtr) elem); 639ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 640ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 641ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 642ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlCtxtDumpEntityDecl(xmlDebugCtxtPtr ctxt, xmlEntityPtr ent) 643ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 644ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 645ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 646ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ent == NULL) { 647ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) 648ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "Entity declaration is NULL\n"); 649ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 650ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 651ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ent->type != XML_ENTITY_DECL) { 652ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_NOT_ENTITY_DECL, 653ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Node is not an entity declaration"); 654ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 655ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 656ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ent->name != NULL) { 657ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) { 658ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "ENTITYDECL("); 659ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpString(ctxt, ent->name); 660ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, ")"); 661ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 662ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else 663ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_NO_NAME, 664ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Entity declaration has no name"); 665ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) { 666ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project switch (ent->etype) { 667ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_INTERNAL_GENERAL_ENTITY: 668ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, ", internal\n"); 669ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 670ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_EXTERNAL_GENERAL_PARSED_ENTITY: 671ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, ", external parsed\n"); 672ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 673ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_EXTERNAL_GENERAL_UNPARSED_ENTITY: 674ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, ", unparsed\n"); 675ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 676ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_INTERNAL_PARAMETER_ENTITY: 677ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, ", parameter\n"); 678ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 679ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_EXTERNAL_PARAMETER_ENTITY: 680ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, ", external parameter\n"); 681ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 682ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_INTERNAL_PREDEFINED_ENTITY: 683ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, ", predefined\n"); 684ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 685ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 686ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ent->ExternalID) { 687ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 688ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, " ExternalID=%s\n", 689ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (char *) ent->ExternalID); 690ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 691ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ent->SystemID) { 692ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 693ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, " SystemID=%s\n", 694ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (char *) ent->SystemID); 695ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 696ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ent->URI != NULL) { 697ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 698ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, " URI=%s\n", (char *) ent->URI); 699ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 700ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ent->content) { 701ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 702ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, " content="); 703ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpString(ctxt, ent->content); 704ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\n"); 705ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 706ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 707ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 708ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 709ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Do a bit of checking 710ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 711ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtGenericNodeCheck(ctxt, (xmlNodePtr) ent); 712ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 713ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 714ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 715ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlCtxtDumpNamespace(xmlDebugCtxtPtr ctxt, xmlNsPtr ns) 716ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 717ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 718ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 719ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ns == NULL) { 720ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) 721ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "namespace node is NULL\n"); 722ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 723ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 724ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ns->type != XML_NAMESPACE_DECL) { 725ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_NOT_NS_DECL, 726ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Node is not a namespace declaration"); 727ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 728ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 729ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ns->href == NULL) { 730ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ns->prefix != NULL) 731ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr3(ctxt, XML_CHECK_NO_HREF, 732ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Incomplete namespace %s href=NULL\n", 733ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (char *) ns->prefix); 734ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 735ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_NO_HREF, 736ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Incomplete default namespace href=NULL\n"); 737ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 738ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) { 739ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ns->prefix != NULL) 740ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "namespace %s href=", 741ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (char *) ns->prefix); 742ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 743ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "default namespace href="); 744ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 745ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpString(ctxt, ns->href); 746ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\n"); 747ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 748ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 749ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 750ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 751ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 752ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlCtxtDumpNamespaceList(xmlDebugCtxtPtr ctxt, xmlNsPtr ns) 753ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 754ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while (ns != NULL) { 755ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpNamespace(ctxt, ns); 756ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ns = ns->next; 757ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 758ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 759ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 760ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 761ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlCtxtDumpEntity(xmlDebugCtxtPtr ctxt, xmlEntityPtr ent) 762ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 763ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 764ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 765ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ent == NULL) { 766ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) 767ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "Entity is NULL\n"); 768ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 769ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 770ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) { 771ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project switch (ent->etype) { 772ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_INTERNAL_GENERAL_ENTITY: 773ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "INTERNAL_GENERAL_ENTITY "); 774ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 775ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_EXTERNAL_GENERAL_PARSED_ENTITY: 776ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "EXTERNAL_GENERAL_PARSED_ENTITY "); 777ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 778ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_EXTERNAL_GENERAL_UNPARSED_ENTITY: 779ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "EXTERNAL_GENERAL_UNPARSED_ENTITY "); 780ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 781ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_INTERNAL_PARAMETER_ENTITY: 782ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "INTERNAL_PARAMETER_ENTITY "); 783ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 784ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_EXTERNAL_PARAMETER_ENTITY: 785ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "EXTERNAL_PARAMETER_ENTITY "); 786ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 787ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project default: 788ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "ENTITY_%d ! ", (int) ent->etype); 789ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 790ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "%s\n", ent->name); 791ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ent->ExternalID) { 792ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 793ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "ExternalID=%s\n", 794ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (char *) ent->ExternalID); 795ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 796ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ent->SystemID) { 797ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 798ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "SystemID=%s\n", (char *) ent->SystemID); 799ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 800ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ent->URI) { 801ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 802ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "URI=%s\n", (char *) ent->URI); 803ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 804ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ent->content) { 805ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 806ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "content="); 807ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpString(ctxt, ent->content); 808ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\n"); 809ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 810ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 811ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 812ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 813ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 814ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlCtxtDumpAttr: 815ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @output: the FILE * for the output 816ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @attr: the attribute 817ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @depth: the indentation level. 818ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 819ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Dumps debug information for the attribute 820ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 821ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 822ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlCtxtDumpAttr(xmlDebugCtxtPtr ctxt, xmlAttrPtr attr) 823ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 824ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 825ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 826ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (attr == NULL) { 827ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) 828ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "Attr is NULL"); 829ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 830ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 831ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) { 832ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "ATTRIBUTE "); 833ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpString(ctxt, attr->name); 834ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\n"); 835ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (attr->children != NULL) { 836ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->depth++; 837ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpNodeList(ctxt, attr->children); 838ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->depth--; 839ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 840ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 841ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (attr->name == NULL) 842ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_NO_NAME, 843ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Attribute has no name"); 844ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 845ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 846ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Do a bit of checking 847ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 848ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtGenericNodeCheck(ctxt, (xmlNodePtr) attr); 849ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 850ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 851ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 852ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlCtxtDumpAttrList: 853ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @output: the FILE * for the output 854ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @attr: the attribute list 855ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @depth: the indentation level. 856ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 857ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Dumps debug information for the attribute list 858ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 859ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 860ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlCtxtDumpAttrList(xmlDebugCtxtPtr ctxt, xmlAttrPtr attr) 861ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 862ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while (attr != NULL) { 863ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpAttr(ctxt, attr); 864ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project attr = attr->next; 865ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 866ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 867ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 868ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 869ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlCtxtDumpOneNode: 870ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @output: the FILE * for the output 871ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node: the node 872ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @depth: the indentation level. 873ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 874ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Dumps debug information for the element node, it is not recursive 875ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 876ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 877ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlCtxtDumpOneNode(xmlDebugCtxtPtr ctxt, xmlNodePtr node) 878ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 879ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node == NULL) { 880ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) { 881ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 882ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "node is NULL\n"); 883ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 884ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 885ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 886ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->node = node; 887ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 888ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project switch (node->type) { 889ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ELEMENT_NODE: 890ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) { 891ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 892ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "ELEMENT "); 893ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((node->ns != NULL) && (node->ns->prefix != NULL)) { 894ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpString(ctxt, node->ns->prefix); 895ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, ":"); 896ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 897ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpString(ctxt, node->name); 898ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\n"); 899ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 900ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 901ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ATTRIBUTE_NODE: 902ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) 903ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 904ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "Error, ATTRIBUTE found here\n"); 905ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtGenericNodeCheck(ctxt, node); 906ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 907ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_TEXT_NODE: 908ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) { 909ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 910ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->name == (const xmlChar *) xmlStringTextNoenc) 911ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "TEXT no enc"); 912ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 913ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "TEXT"); 914ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt->options & DUMP_TEXT_TYPE) { 915ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->content == (xmlChar *) &(node->properties)) 916ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, " compact\n"); 917ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if (xmlDictOwns(ctxt->dict, node->content) == 1) 918ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, " interned\n"); 919ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 920ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\n"); 921ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else 922ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\n"); 923ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 924ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 925ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_CDATA_SECTION_NODE: 926ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) { 927ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 928ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "CDATA_SECTION\n"); 929ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 930ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 931ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ENTITY_REF_NODE: 932ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) { 933ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 934ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "ENTITY_REF(%s)\n", 935ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (char *) node->name); 936ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 937ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 938ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ENTITY_NODE: 939ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) { 940ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 941ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "ENTITY\n"); 942ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 943ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 944ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_PI_NODE: 945ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) { 946ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 947ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "PI %s\n", (char *) node->name); 948ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 949ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 950ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_COMMENT_NODE: 951ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) { 952ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 953ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "COMMENT\n"); 954ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 955ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 956ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_DOCUMENT_NODE: 957ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_HTML_DOCUMENT_NODE: 958ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) { 959ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 960ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 961ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "Error, DOCUMENT found here\n"); 962ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtGenericNodeCheck(ctxt, node); 963ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 964ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_DOCUMENT_TYPE_NODE: 965ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) { 966ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 967ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "DOCUMENT_TYPE\n"); 968ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 969ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 970ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_DOCUMENT_FRAG_NODE: 971ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) { 972ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 973ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "DOCUMENT_FRAG\n"); 974ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 975ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 976ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_NOTATION_NODE: 977ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) { 978ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 979ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "NOTATION\n"); 980ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 981ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 982ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_DTD_NODE: 983ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpDtdNode(ctxt, (xmlDtdPtr) node); 984ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 985ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ELEMENT_DECL: 986ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpElemDecl(ctxt, (xmlElementPtr) node); 987ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 988ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ATTRIBUTE_DECL: 989ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpAttrDecl(ctxt, (xmlAttributePtr) node); 990ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 991ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ENTITY_DECL: 992ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpEntityDecl(ctxt, (xmlEntityPtr) node); 993ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 994ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_NAMESPACE_DECL: 995ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpNamespace(ctxt, (xmlNsPtr) node); 996ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 997ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_XINCLUDE_START: 998ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) { 999ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 1000ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "INCLUDE START\n"); 1001ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1002ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1003ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_XINCLUDE_END: 1004ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) { 1005ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 1006ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "INCLUDE END\n"); 1007ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1008ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1009ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project default: 1010ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) 1011ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 1012ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr2(ctxt, XML_CHECK_UNKNOWN_NODE, 1013ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Unknown node type %d\n", node->type); 1014ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1015ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1016ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->doc == NULL) { 1017ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) { 1018ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 1019ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1020ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "PBM: doc == NULL !!!\n"); 1021ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1022ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->depth++; 1023ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((node->type == XML_ELEMENT_NODE) && (node->nsDef != NULL)) 1024ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpNamespaceList(ctxt, node->nsDef); 1025ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((node->type == XML_ELEMENT_NODE) && (node->properties != NULL)) 1026ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpAttrList(ctxt, node->properties); 1027ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->type != XML_ENTITY_REF_NODE) { 1028ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((node->type != XML_ELEMENT_NODE) && (node->content != NULL)) { 1029ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) { 1030ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 1031ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "content="); 1032ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpString(ctxt, node->content); 1033ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\n"); 1034ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1035ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1036ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 1037ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlEntityPtr ent; 1038ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1039ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ent = xmlGetDocEntity(node->doc, node->name); 1040ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ent != NULL) 1041ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpEntity(ctxt, ent); 1042ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1043ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->depth--; 1044ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1045ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 1046ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Do a bit of checking 1047ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1048ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtGenericNodeCheck(ctxt, node); 1049ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1050ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1051ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1052ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlCtxtDumpNode: 1053ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @output: the FILE * for the output 1054ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node: the node 1055ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @depth: the indentation level. 1056ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1057ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Dumps debug information for the element node, it is recursive 1058ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1059ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 1060ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlCtxtDumpNode(xmlDebugCtxtPtr ctxt, xmlNodePtr node) 1061ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1062ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node == NULL) { 1063ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) { 1064ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpSpaces(ctxt); 1065ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "node is NULL\n"); 1066ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1067ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1068ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1069ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpOneNode(ctxt, node); 107094442ad4107000e6d49f9b85a46a591495a57632Selim Gurun if ((node->type != XML_NAMESPACE_DECL) && 1071ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (node->children != NULL) && (node->type != XML_ENTITY_REF_NODE)) { 1072ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->depth++; 1073ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpNodeList(ctxt, node->children); 1074ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->depth--; 1075ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1076ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1077ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1078ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1079ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlCtxtDumpNodeList: 1080ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @output: the FILE * for the output 1081ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node: the node list 1082ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @depth: the indentation level. 1083ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1084ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Dumps debug information for the list of element node, it is recursive 1085ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1086ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 1087ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlCtxtDumpNodeList(xmlDebugCtxtPtr ctxt, xmlNodePtr node) 1088ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1089ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while (node != NULL) { 1090ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpNode(ctxt, node); 1091ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project node = node->next; 1092ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1093ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1094ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1095ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 1096ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlCtxtDumpDocHead(xmlDebugCtxtPtr ctxt, xmlDocPtr doc) 1097ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1098ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (doc == NULL) { 1099ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) 1100ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "DOCUMENT == NULL !\n"); 1101ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1102ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1103ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->node = (xmlNodePtr) doc; 1104ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1105ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project switch (doc->type) { 1106ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ELEMENT_NODE: 1107ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_FOUND_ELEMENT, 1108ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Misplaced ELEMENT node\n"); 1109ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1110ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ATTRIBUTE_NODE: 1111ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_FOUND_ATTRIBUTE, 1112ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Misplaced ATTRIBUTE node\n"); 1113ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1114ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_TEXT_NODE: 1115ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_FOUND_TEXT, 1116ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Misplaced TEXT node\n"); 1117ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1118ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_CDATA_SECTION_NODE: 1119ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_FOUND_CDATA, 1120ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Misplaced CDATA node\n"); 1121ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1122ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ENTITY_REF_NODE: 1123ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_FOUND_ENTITYREF, 1124ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Misplaced ENTITYREF node\n"); 1125ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1126ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ENTITY_NODE: 1127ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_FOUND_ENTITY, 1128ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Misplaced ENTITY node\n"); 1129ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1130ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_PI_NODE: 1131ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_FOUND_PI, 1132ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Misplaced PI node\n"); 1133ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1134ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_COMMENT_NODE: 1135ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_FOUND_COMMENT, 1136ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Misplaced COMMENT node\n"); 1137ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1138ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_DOCUMENT_NODE: 1139ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) 1140ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "DOCUMENT\n"); 1141ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1142ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_HTML_DOCUMENT_NODE: 1143ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) 1144ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "HTML DOCUMENT\n"); 1145ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1146ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_DOCUMENT_TYPE_NODE: 1147ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_FOUND_DOCTYPE, 1148ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Misplaced DOCTYPE node\n"); 1149ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1150ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_DOCUMENT_FRAG_NODE: 1151ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_FOUND_FRAGMENT, 1152ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Misplaced FRAGMENT node\n"); 1153ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1154ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_NOTATION_NODE: 1155ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr(ctxt, XML_CHECK_FOUND_NOTATION, 1156ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Misplaced NOTATION node\n"); 1157ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1158ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project default: 1159ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr2(ctxt, XML_CHECK_UNKNOWN_NODE, 1160ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Unknown node type %d\n", doc->type); 1161ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1162ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1163ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1164ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1165ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlCtxtDumpDocumentHead: 1166ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @output: the FILE * for the output 1167ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @doc: the document 1168ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1169ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Dumps debug information cncerning the document, not recursive 1170ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1171ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 1172ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlCtxtDumpDocumentHead(xmlDebugCtxtPtr ctxt, xmlDocPtr doc) 1173ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1174ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (doc == NULL) return; 1175ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpDocHead(ctxt, doc); 1176ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) { 1177ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (doc->name != NULL) { 1178ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "name="); 1179ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpString(ctxt, BAD_CAST doc->name); 1180ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\n"); 1181ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1182ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (doc->version != NULL) { 1183ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "version="); 1184ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpString(ctxt, doc->version); 1185ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\n"); 1186ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1187ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (doc->encoding != NULL) { 1188ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "encoding="); 1189ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpString(ctxt, doc->encoding); 1190ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\n"); 1191ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1192ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (doc->URL != NULL) { 1193ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "URL="); 1194ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpString(ctxt, doc->URL); 1195ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\n"); 1196ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1197ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (doc->standalone) 1198ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "standalone=true\n"); 1199ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1200ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (doc->oldNs != NULL) 1201ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpNamespaceList(ctxt, doc->oldNs); 1202ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1203ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1204ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1205ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlCtxtDumpDocument: 1206ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @output: the FILE * for the output 1207ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @doc: the document 1208ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1209ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Dumps debug information for the document, it's recursive 1210ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1211ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 1212ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlCtxtDumpDocument(xmlDebugCtxtPtr ctxt, xmlDocPtr doc) 1213ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1214ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (doc == NULL) { 1215ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) 1216ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "DOCUMENT == NULL !\n"); 1217ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1218ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1219ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpDocumentHead(ctxt, doc); 1220ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (((doc->type == XML_DOCUMENT_NODE) || 1221ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (doc->type == XML_HTML_DOCUMENT_NODE)) 1222ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project && (doc->children != NULL)) { 1223ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->depth++; 1224ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpNodeList(ctxt, doc->children); 1225ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->depth--; 1226ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1227ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1228ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1229ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 1230ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlCtxtDumpEntityCallback(xmlEntityPtr cur, xmlDebugCtxtPtr ctxt) 1231ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1232ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (cur == NULL) { 1233ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) 1234ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "Entity is NULL"); 1235ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1236ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1237ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) { 1238ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "%s : ", (char *) cur->name); 1239ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project switch (cur->etype) { 1240ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_INTERNAL_GENERAL_ENTITY: 1241ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "INTERNAL GENERAL, "); 1242ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1243ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_EXTERNAL_GENERAL_PARSED_ENTITY: 1244ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "EXTERNAL PARSED, "); 1245ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1246ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_EXTERNAL_GENERAL_UNPARSED_ENTITY: 1247ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "EXTERNAL UNPARSED, "); 1248ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1249ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_INTERNAL_PARAMETER_ENTITY: 1250ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "INTERNAL PARAMETER, "); 1251ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1252ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_EXTERNAL_PARAMETER_ENTITY: 1253ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "EXTERNAL PARAMETER, "); 1254ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1255ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project default: 1256ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugErr2(ctxt, XML_CHECK_ENTITY_TYPE, 1257ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Unknown entity type %d\n", cur->etype); 1258ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1259ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (cur->ExternalID != NULL) 1260ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "ID \"%s\"", (char *) cur->ExternalID); 1261ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (cur->SystemID != NULL) 1262ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "SYSTEM \"%s\"", (char *) cur->SystemID); 1263ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (cur->orig != NULL) 1264ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\n orig \"%s\"", (char *) cur->orig); 1265ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((cur->type != XML_ELEMENT_NODE) && (cur->content != NULL)) 1266ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\n content \"%s\"", 1267ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (char *) cur->content); 1268ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\n"); 1269ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1270ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1271ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1272ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1273ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlCtxtDumpEntities: 1274ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @output: the FILE * for the output 1275ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @doc: the document 1276ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1277ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Dumps debug information for all the entities in use by the document 1278ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1279ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 1280ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlCtxtDumpEntities(xmlDebugCtxtPtr ctxt, xmlDocPtr doc) 1281ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1282ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (doc == NULL) return; 1283ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpDocHead(ctxt, doc); 1284ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((doc->intSubset != NULL) && (doc->intSubset->entities != NULL)) { 1285ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlEntitiesTablePtr table = (xmlEntitiesTablePtr) 1286ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project doc->intSubset->entities; 1287ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1288ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) 1289ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "Entities in internal subset\n"); 1290ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlHashScan(table, (xmlHashScanner) xmlCtxtDumpEntityCallback, 1291ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt); 1292ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else 1293ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "No entities in internal subset\n"); 1294ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((doc->extSubset != NULL) && (doc->extSubset->entities != NULL)) { 1295ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlEntitiesTablePtr table = (xmlEntitiesTablePtr) 1296ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project doc->extSubset->entities; 1297ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1298ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) 1299ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "Entities in external subset\n"); 1300ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlHashScan(table, (xmlHashScanner) xmlCtxtDumpEntityCallback, 1301ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt); 1302ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (!ctxt->check) 1303ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "No entities in external subset\n"); 1304ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1305ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1306ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1307ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlCtxtDumpDTD: 1308ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @output: the FILE * for the output 1309ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @dtd: the DTD 1310ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1311ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Dumps debug information for the DTD 1312ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1313ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 1314ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlCtxtDumpDTD(xmlDebugCtxtPtr ctxt, xmlDtdPtr dtd) 1315ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1316ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (dtd == NULL) { 1317ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt->check) 1318ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "DTD is NULL\n"); 1319ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1320ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1321ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpDtdNode(ctxt, dtd); 1322ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (dtd->children == NULL) 1323ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, " DTD is empty\n"); 1324ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else { 1325ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->depth++; 1326ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpNodeList(ctxt, dtd->children); 1327ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->depth--; 1328ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1329ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1330ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1331ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/************************************************************************ 1332ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * * 1333ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Public entry points for dump * 1334ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * * 1335ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ************************************************************************/ 1336ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1337ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1338ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlDebugDumpString: 1339ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @output: the FILE * for the output 1340ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @str: the string 1341ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1342ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Dumps informations about the string, shorten it if necessary 1343ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1344ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid 1345ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlDebugDumpString(FILE * output, const xmlChar * str) 1346ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1347ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int i; 1348ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1349ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (output == NULL) 1350ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project output = stdout; 1351ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (str == NULL) { 1352ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "(NULL)"); 1353ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1354ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1355ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project for (i = 0; i < 40; i++) 1356ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (str[i] == 0) 1357ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1358ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if (IS_BLANK_CH(str[i])) 1359ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fputc(' ', output); 1360ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if (str[i] >= 0x80) 1361ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "#%X", str[i]); 1362ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 1363ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fputc(str[i], output); 1364ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "..."); 1365ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1366ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1367ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1368ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlDebugDumpAttr: 1369ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @output: the FILE * for the output 1370ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @attr: the attribute 1371ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @depth: the indentation level. 1372ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1373ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Dumps debug information for the attribute 1374ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1375ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid 1376ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlDebugDumpAttr(FILE *output, xmlAttrPtr attr, int depth) { 1377ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugCtxt ctxt; 1378ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1379ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (output == NULL) return; 1380ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpInitCtxt(&ctxt); 1381ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt.output = output; 1382ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt.depth = depth; 1383ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpAttr(&ctxt, attr); 1384ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpCleanCtxt(&ctxt); 1385ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1386ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1387ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1388ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1389ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlDebugDumpEntities: 1390ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @output: the FILE * for the output 1391ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @doc: the document 1392ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1393ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Dumps debug information for all the entities in use by the document 1394ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1395ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid 1396ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlDebugDumpEntities(FILE * output, xmlDocPtr doc) 1397ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1398ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugCtxt ctxt; 1399ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1400ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (output == NULL) return; 1401ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpInitCtxt(&ctxt); 1402ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt.output = output; 1403ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpEntities(&ctxt, doc); 1404ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpCleanCtxt(&ctxt); 1405ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1406ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1407ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1408ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlDebugDumpAttrList: 1409ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @output: the FILE * for the output 1410ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @attr: the attribute list 1411ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @depth: the indentation level. 1412ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1413ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Dumps debug information for the attribute list 1414ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1415ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid 1416ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlDebugDumpAttrList(FILE * output, xmlAttrPtr attr, int depth) 1417ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1418ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugCtxt ctxt; 1419ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1420ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (output == NULL) return; 1421ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpInitCtxt(&ctxt); 1422ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt.output = output; 1423ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt.depth = depth; 1424ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpAttrList(&ctxt, attr); 1425ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpCleanCtxt(&ctxt); 1426ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1427ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1428ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1429ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlDebugDumpOneNode: 1430ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @output: the FILE * for the output 1431ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node: the node 1432ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @depth: the indentation level. 1433ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1434ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Dumps debug information for the element node, it is not recursive 1435ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1436ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid 1437ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlDebugDumpOneNode(FILE * output, xmlNodePtr node, int depth) 1438ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1439ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugCtxt ctxt; 1440ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1441ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (output == NULL) return; 1442ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpInitCtxt(&ctxt); 1443ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt.output = output; 1444ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt.depth = depth; 1445ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpOneNode(&ctxt, node); 1446ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpCleanCtxt(&ctxt); 1447ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1448ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1449ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1450ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlDebugDumpNode: 1451ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @output: the FILE * for the output 1452ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node: the node 1453ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @depth: the indentation level. 1454ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1455ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Dumps debug information for the element node, it is recursive 1456ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1457ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid 1458ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlDebugDumpNode(FILE * output, xmlNodePtr node, int depth) 1459ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1460ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugCtxt ctxt; 1461ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1462ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (output == NULL) 1463ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project output = stdout; 1464ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpInitCtxt(&ctxt); 1465ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt.output = output; 1466ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt.depth = depth; 1467ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpNode(&ctxt, node); 1468ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpCleanCtxt(&ctxt); 1469ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1470ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1471ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1472ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlDebugDumpNodeList: 1473ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @output: the FILE * for the output 1474ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node: the node list 1475ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @depth: the indentation level. 1476ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1477ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Dumps debug information for the list of element node, it is recursive 1478ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1479ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid 1480ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlDebugDumpNodeList(FILE * output, xmlNodePtr node, int depth) 1481ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1482ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugCtxt ctxt; 1483ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1484ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (output == NULL) 1485ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project output = stdout; 1486ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpInitCtxt(&ctxt); 1487ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt.output = output; 1488ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt.depth = depth; 1489ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpNodeList(&ctxt, node); 1490ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpCleanCtxt(&ctxt); 1491ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1492ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1493ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1494ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlDebugDumpDocumentHead: 1495ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @output: the FILE * for the output 1496ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @doc: the document 1497ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1498ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Dumps debug information cncerning the document, not recursive 1499ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1500ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid 1501ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlDebugDumpDocumentHead(FILE * output, xmlDocPtr doc) 1502ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1503ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugCtxt ctxt; 1504ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1505ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (output == NULL) 1506ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project output = stdout; 1507ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpInitCtxt(&ctxt); 1508ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt.options |= DUMP_TEXT_TYPE; 1509ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt.output = output; 1510ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpDocumentHead(&ctxt, doc); 1511ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpCleanCtxt(&ctxt); 1512ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1513ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1514ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1515ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlDebugDumpDocument: 1516ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @output: the FILE * for the output 1517ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @doc: the document 1518ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1519ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Dumps debug information for the document, it's recursive 1520ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1521ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid 1522ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlDebugDumpDocument(FILE * output, xmlDocPtr doc) 1523ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1524ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugCtxt ctxt; 1525ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1526ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (output == NULL) 1527ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project output = stdout; 1528ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpInitCtxt(&ctxt); 1529ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt.options |= DUMP_TEXT_TYPE; 1530ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt.output = output; 1531ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpDocument(&ctxt, doc); 1532ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpCleanCtxt(&ctxt); 1533ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1534ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1535ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1536ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlDebugDumpDTD: 1537ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @output: the FILE * for the output 1538ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @dtd: the DTD 1539ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1540ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Dumps debug information for the DTD 1541ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1542ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid 1543ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlDebugDumpDTD(FILE * output, xmlDtdPtr dtd) 1544ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1545ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugCtxt ctxt; 1546ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1547ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (output == NULL) 1548ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project output = stdout; 1549ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpInitCtxt(&ctxt); 1550ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt.options |= DUMP_TEXT_TYPE; 1551ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt.output = output; 1552ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpDTD(&ctxt, dtd); 1553ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpCleanCtxt(&ctxt); 1554ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1555ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1556ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/************************************************************************ 1557ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * * 1558ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Public entry points for checkings * 1559ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * * 1560ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ************************************************************************/ 1561ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1562ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1563ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlDebugCheckDocument: 1564ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @output: the FILE * for the output 1565ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @doc: the document 1566ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1567ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Check the document for potential content problems, and output 1568ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * the errors to @output 1569ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1570ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns the number of errors found 1571ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1572ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectint 1573ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlDebugCheckDocument(FILE * output, xmlDocPtr doc) 1574ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1575ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugCtxt ctxt; 1576ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1577ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (output == NULL) 1578ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project output = stdout; 1579ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpInitCtxt(&ctxt); 1580ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt.output = output; 1581ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt.check = 1; 1582ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpDocument(&ctxt, doc); 1583ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCtxtDumpCleanCtxt(&ctxt); 1584ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(ctxt.errors); 1585ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1586ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1587ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/************************************************************************ 1588ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * * 1589ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Helpers for Shell * 1590ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * * 1591ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ************************************************************************/ 1592ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1593ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1594ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlLsCountNode: 1595ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node: the node to count 1596ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1597ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Count the children of @node. 1598ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1599ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns the number of children of @node. 1600ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1601ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectint 1602ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlLsCountNode(xmlNodePtr node) { 1603ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int ret = 0; 1604ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr list = NULL; 160594442ad4107000e6d49f9b85a46a591495a57632Selim Gurun 1606ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node == NULL) 1607ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(0); 1608ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1609ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project switch (node->type) { 1610ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ELEMENT_NODE: 1611ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project list = node->children; 1612ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1613ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_DOCUMENT_NODE: 1614ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_HTML_DOCUMENT_NODE: 1615ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_DOCB_ENABLED 1616ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_DOCB_DOCUMENT_NODE: 1617ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 1618ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project list = ((xmlDocPtr) node)->children; 1619ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1620ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ATTRIBUTE_NODE: 1621ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project list = ((xmlAttrPtr) node)->children; 1622ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1623ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_TEXT_NODE: 1624ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_CDATA_SECTION_NODE: 1625ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_PI_NODE: 1626ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_COMMENT_NODE: 1627ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->content != NULL) { 1628ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ret = xmlStrlen(node->content); 1629ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1630ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1631ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ENTITY_REF_NODE: 1632ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_DOCUMENT_TYPE_NODE: 1633ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ENTITY_NODE: 1634ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_DOCUMENT_FRAG_NODE: 1635ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_NOTATION_NODE: 1636ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_DTD_NODE: 1637ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ELEMENT_DECL: 1638ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ATTRIBUTE_DECL: 1639ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ENTITY_DECL: 1640ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_NAMESPACE_DECL: 1641ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_XINCLUDE_START: 1642ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_XINCLUDE_END: 1643ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ret = 1; 1644ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1645ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 164694442ad4107000e6d49f9b85a46a591495a57632Selim Gurun for (;list != NULL;ret++) 1647ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project list = list->next; 1648ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(ret); 1649ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1650ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1651ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1652ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlLsOneNode: 1653ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @output: the FILE * for the output 1654ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node: the node to dump 1655ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1656ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Dump to @output the type and name of @node. 1657ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1658ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid 1659ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlLsOneNode(FILE *output, xmlNodePtr node) { 1660ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (output == NULL) return; 1661ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node == NULL) { 1662ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "NULL\n"); 1663ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1664ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1665ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project switch (node->type) { 1666ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ELEMENT_NODE: 1667ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "-"); 1668ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1669ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ATTRIBUTE_NODE: 1670ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "a"); 1671ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1672ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_TEXT_NODE: 1673ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "t"); 1674ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1675ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_CDATA_SECTION_NODE: 1676ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "C"); 1677ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1678ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ENTITY_REF_NODE: 1679ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "e"); 1680ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1681ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ENTITY_NODE: 1682ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "E"); 1683ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1684ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_PI_NODE: 1685ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "p"); 1686ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1687ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_COMMENT_NODE: 1688ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "c"); 1689ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1690ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_DOCUMENT_NODE: 1691ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "d"); 1692ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1693ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_HTML_DOCUMENT_NODE: 1694ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "h"); 1695ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1696ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_DOCUMENT_TYPE_NODE: 1697ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "T"); 1698ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1699ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_DOCUMENT_FRAG_NODE: 1700ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "F"); 1701ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1702ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_NOTATION_NODE: 1703ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "N"); 1704ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1705ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_NAMESPACE_DECL: 1706ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "n"); 1707ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1708ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project default: 1709ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "?"); 1710ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1711ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->type != XML_NAMESPACE_DECL) { 1712ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->properties != NULL) 1713ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "a"); 171494442ad4107000e6d49f9b85a46a591495a57632Selim Gurun else 1715ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "-"); 171694442ad4107000e6d49f9b85a46a591495a57632Selim Gurun if (node->nsDef != NULL) 1717ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "n"); 171894442ad4107000e6d49f9b85a46a591495a57632Selim Gurun else 1719ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "-"); 1720ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1721ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1722ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, " %8d ", xmlLsCountNode(node)); 1723ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1724ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project switch (node->type) { 1725ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ELEMENT_NODE: 172694442ad4107000e6d49f9b85a46a591495a57632Selim Gurun if (node->name != NULL) { 172794442ad4107000e6d49f9b85a46a591495a57632Selim Gurun if ((node->ns != NULL) && (node->ns->prefix != NULL)) 172894442ad4107000e6d49f9b85a46a591495a57632Selim Gurun fprintf(output, "%s:", node->ns->prefix); 1729ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "%s", (const char *) node->name); 173094442ad4107000e6d49f9b85a46a591495a57632Selim Gurun } 1731ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1732ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ATTRIBUTE_NODE: 1733ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->name != NULL) 1734ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "%s", (const char *) node->name); 1735ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1736ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_TEXT_NODE: 1737ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->content != NULL) { 1738ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugDumpString(output, node->content); 1739ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1740ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1741ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_CDATA_SECTION_NODE: 1742ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1743ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ENTITY_REF_NODE: 1744ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->name != NULL) 1745ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "%s", (const char *) node->name); 1746ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1747ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ENTITY_NODE: 1748ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->name != NULL) 1749ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "%s", (const char *) node->name); 1750ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1751ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_PI_NODE: 1752ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->name != NULL) 1753ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "%s", (const char *) node->name); 1754ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1755ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_COMMENT_NODE: 1756ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1757ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_DOCUMENT_NODE: 1758ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1759ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_HTML_DOCUMENT_NODE: 1760ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1761ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_DOCUMENT_TYPE_NODE: 1762ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1763ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_DOCUMENT_FRAG_NODE: 1764ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1765ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_NOTATION_NODE: 1766ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1767ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_NAMESPACE_DECL: { 1768ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNsPtr ns = (xmlNsPtr) node; 1769ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1770ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ns->prefix == NULL) 1771ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "default -> %s", (char *)ns->href); 1772ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 1773ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "%s -> %s", (char *)ns->prefix, 1774ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (char *)ns->href); 1775ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1776ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1777ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project default: 1778ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->name != NULL) 1779ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "%s", (const char *) node->name); 1780ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1781ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(output, "\n"); 1782ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1783ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1784ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1785ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlBoolToText: 1786ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @boolval: a bool to turn into text 1787ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 178894442ad4107000e6d49f9b85a46a591495a57632Selim Gurun * Convenient way to turn bool into text 1789ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1790ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns a pointer to either "True" or "False" 1791ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1792ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectconst char * 1793ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlBoolToText(int boolval) 1794ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1795ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (boolval) 1796ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return("True"); 1797ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 1798ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return("False"); 1799ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1800ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1801ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_XPATH_ENABLED 1802ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/**************************************************************** 1803ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * * 180494442ad4107000e6d49f9b85a46a591495a57632Selim Gurun * The XML shell related functions * 1805ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * * 1806ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ****************************************************************/ 1807ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1808ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1809ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1810ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/* 1811ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * TODO: Improvement/cleanups for the XML shell 1812ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * - allow to shell out an editor on a subpart 1813ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * - cleanup function registrations (with help) and calling 1814ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * - provide registration routines 1815ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1816ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1817ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1818ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlShellPrintXPathError: 1819ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @errorType: valid xpath error id 1820ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @arg: the argument that cause xpath to fail 1821ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1822ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Print the xpath error to libxml default error channel 1823ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1824ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid 1825ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlShellPrintXPathError(int errorType, const char *arg) 1826ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1827ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const char *default_arg = "Result"; 1828ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1829ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!arg) 1830ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project arg = default_arg; 1831ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1832ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project switch (errorType) { 1833ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_UNDEFINED: 1834ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 1835ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s: no such node\n", arg); 1836ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1837ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1838ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_BOOLEAN: 1839ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 1840ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is a Boolean\n", arg); 1841ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1842ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_NUMBER: 1843ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 1844ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is a number\n", arg); 1845ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1846ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_STRING: 1847ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 1848ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is a string\n", arg); 1849ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1850ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_POINT: 1851ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 1852ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is a point\n", arg); 1853ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1854ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_RANGE: 1855ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 1856ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is a range\n", arg); 1857ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1858ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_LOCATIONSET: 1859ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 1860ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is a range\n", arg); 1861ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1862ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_USERS: 1863ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 1864ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is user-defined\n", arg); 1865ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1866ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_XSLT_TREE: 1867ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 1868ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is an XSLT value tree\n", arg); 1869ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1870ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1871ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#if 0 1872ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 1873ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Try casting the result string function (xpath builtin)\n", 1874ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project arg); 1875ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 1876ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1877ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1878ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1879ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_OUTPUT_ENABLED 1880ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1881ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlShellPrintNodeCtxt: 1882ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt : a non-null shell context 1883ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node : a non-null node to print to the output FILE 1884ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1885ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Print node to the output FILE 1886ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1887ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 1888ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlShellPrintNodeCtxt(xmlShellCtxtPtr ctxt,xmlNodePtr node) 1889ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1890ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project FILE *fp; 1891ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1892ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!node) 1893ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1894ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt == NULL) 1895ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fp = stdout; 1896ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 1897ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fp = ctxt->output; 1898ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1899ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->type == XML_DOCUMENT_NODE) 1900ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDocDump(fp, (xmlDocPtr) node); 1901ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if (node->type == XML_ATTRIBUTE_NODE) 1902ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugDumpAttrList(fp, (xmlAttrPtr) node, 0); 1903ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 1904ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlElemDump(fp, node->doc, node); 1905ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1906ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(fp, "\n"); 1907ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1908ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1909ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1910ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlShellPrintNode: 1911ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node : a non-null node to print to the output FILE 1912ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1913ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Print node to the output FILE 1914ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1915ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid 1916ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlShellPrintNode(xmlNodePtr node) 1917ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1918ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlShellPrintNodeCtxt(NULL, node); 1919ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1920ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_OUTPUT_ENABLED */ 1921ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1922ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1923ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlShellPrintXPathResultCtxt: 1924ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: a valid shell context 1925ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @list: a valid result generated by an xpath evaluation 1926ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1927ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Prints result to the output FILE 1928ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1929ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 1930ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlShellPrintXPathResultCtxt(xmlShellCtxtPtr ctxt,xmlXPathObjectPtr list) 1931ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1932ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt) 1933ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 1934ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1935ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (list != NULL) { 1936ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project switch (list->type) { 1937ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_NODESET:{ 1938ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_OUTPUT_ENABLED 1939ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int indx; 1940ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1941ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (list->nodesetval) { 1942ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project for (indx = 0; indx < list->nodesetval->nodeNr; 1943ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project indx++) { 1944ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlShellPrintNodeCtxt(ctxt, 1945ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project list->nodesetval->nodeTab[indx]); 1946ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1947ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 1948ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 1949ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Empty node set\n"); 1950ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1951ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1952ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#else 1953ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 1954ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Node set\n"); 1955ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_OUTPUT_ENABLED */ 1956ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1957ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_BOOLEAN: 1958ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 1959ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Is a Boolean:%s\n", 1960ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlBoolToText(list->boolval)); 1961ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1962ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_NUMBER: 1963ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 1964ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Is a number:%0g\n", list->floatval); 1965ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1966ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_STRING: 1967ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 1968ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Is a string:%s\n", list->stringval); 1969ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 1970ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1971ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project default: 1972ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlShellPrintXPathError(list->type, NULL); 1973ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1974ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 1975ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1976ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1977ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1978ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlShellPrintXPathResult: 1979ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @list: a valid result generated by an xpath evaluation 1980ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1981ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Prints result to the output FILE 1982ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 1983ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid 1984ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlShellPrintXPathResult(xmlXPathObjectPtr list) 1985ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 1986ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlShellPrintXPathResultCtxt(NULL, list); 1987ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 1988ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 1989ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 1990ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlShellList: 1991ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: the shell context 1992ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @arg: unused 1993ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node: a node 1994ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node2: unused 1995ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1996ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Implements the XML shell function "ls" 1997ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Does an Unix like listing of the given node (like a directory) 1998ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 1999ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns 0 2000ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 2001ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectint 2002ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlShellList(xmlShellCtxtPtr ctxt, 2003ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project char *arg ATTRIBUTE_UNUSED, xmlNodePtr node, 2004ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr node2 ATTRIBUTE_UNUSED) 2005ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 2006ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr cur; 2007ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt) 2008ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (0); 2009ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node == NULL) { 2010ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "NULL\n"); 2011ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (0); 2012ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2013ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((node->type == XML_DOCUMENT_NODE) || 2014ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (node->type == XML_HTML_DOCUMENT_NODE)) { 2015ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cur = ((xmlDocPtr) node)->children; 2016ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (node->type == XML_NAMESPACE_DECL) { 2017ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlLsOneNode(ctxt->output, node); 2018ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (0); 2019ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (node->children != NULL) { 2020ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cur = node->children; 2021ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2022ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlLsOneNode(ctxt->output, node); 2023ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (0); 2024ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2025ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while (cur != NULL) { 2026ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlLsOneNode(ctxt->output, cur); 2027ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cur = cur->next; 2028ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2029ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (0); 2030ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 2031ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2032ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 2033ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlShellBase: 2034ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: the shell context 2035ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @arg: unused 2036ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node: a node 2037ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node2: unused 2038ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 2039ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Implements the XML shell function "base" 2040ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * dumps the current XML base of the node 2041ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 2042ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns 0 2043ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 2044ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectint 2045ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlShellBase(xmlShellCtxtPtr ctxt, 2046ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project char *arg ATTRIBUTE_UNUSED, xmlNodePtr node, 2047ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr node2 ATTRIBUTE_UNUSED) 2048ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 2049ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlChar *base; 2050ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt) 2051ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return 0; 2052ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node == NULL) { 2053ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "NULL\n"); 2054ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (0); 205594442ad4107000e6d49f9b85a46a591495a57632Selim Gurun } 2056ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2057ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project base = xmlNodeGetBase(node->doc, node); 2058ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2059ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (base == NULL) { 2060ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, " No base found !!!\n"); 2061ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2062ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "%s\n", base); 2063ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFree(base); 2064ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2065ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (0); 2066ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 2067ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2068ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_TREE_ENABLED 2069ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 2070ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlShellSetBase: 2071ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: the shell context 2072ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @arg: the new base 2073ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node: a node 2074ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node2: unused 2075ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 2076ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Implements the XML shell function "setbase" 2077ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * change the current XML base of the node 2078ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 2079ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns 0 2080ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 2081ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int 2082ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlShellSetBase(xmlShellCtxtPtr ctxt ATTRIBUTE_UNUSED, 2083ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project char *arg ATTRIBUTE_UNUSED, xmlNodePtr node, 2084ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr node2 ATTRIBUTE_UNUSED) 2085ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 2086ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodeSetBase(node, (xmlChar*) arg); 2087ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (0); 2088ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 2089ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 2090ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2091ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_XPATH_ENABLED 2092ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 2093ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlShellRegisterNamespace: 2094ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: the shell context 2095ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @arg: a string in prefix=nsuri format 2096ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node: unused 2097ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node2: unused 2098ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 2099ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Implements the XML shell function "setns" 2100ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * register/unregister a prefix=namespace pair 2101ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * on the XPath context 2102ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 2103ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns 0 on success and a negative value otherwise. 2104ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 2105ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int 2106ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlShellRegisterNamespace(xmlShellCtxtPtr ctxt, char *arg, 2107ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr node ATTRIBUTE_UNUSED, xmlNodePtr node2 ATTRIBUTE_UNUSED) 2108ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 2109ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlChar* nsListDup; 2110ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlChar* prefix; 2111ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlChar* href; 2112ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlChar* next; 2113ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2114ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project nsListDup = xmlStrdup((xmlChar *) arg); 2115ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project next = nsListDup; 2116ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while(next != NULL) { 2117ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* skip spaces */ 2118ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /*while((*next) == ' ') next++;*/ 2119ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if((*next) == '\0') break; 2120ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2121ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* find prefix */ 2122ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project prefix = next; 2123ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project next = (xmlChar*)xmlStrchr(next, '='); 2124ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if(next == NULL) { 2125ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "setns: prefix=[nsuri] required\n"); 2126ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFree(nsListDup); 2127ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(-1); 2128ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2129ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project *(next++) = '\0'; 2130ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2131ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* find href */ 2132ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project href = next; 2133ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project next = (xmlChar*)xmlStrchr(next, ' '); 2134ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if(next != NULL) { 2135ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project *(next++) = '\0'; 2136ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2137ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2138ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* do register namespace */ 2139ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if(xmlXPathRegisterNs(ctxt->pctxt, prefix, href) != 0) { 2140ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output,"Error: unable to register NS with prefix=\"%s\" and href=\"%s\"\n", prefix, href); 2141ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFree(nsListDup); 2142ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(-1); 2143ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2144ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2145ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2146ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFree(nsListDup); 2147ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(0); 2148ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 2149ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 2150ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlShellRegisterRootNamespaces: 2151ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: the shell context 2152ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @arg: unused 2153ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node: the root element 2154ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node2: unused 2155ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 2156ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Implements the XML shell function "setrootns" 2157ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * which registers all namespaces declarations found on the root element. 2158ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 2159ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns 0 on success and a negative value otherwise. 2160ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 2161ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int 2162ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlShellRegisterRootNamespaces(xmlShellCtxtPtr ctxt, char *arg ATTRIBUTE_UNUSED, 2163ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr root, xmlNodePtr node2 ATTRIBUTE_UNUSED) 2164ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 2165ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNsPtr ns; 2166ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2167ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((root == NULL) || (root->type != XML_ELEMENT_NODE) || 2168ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (root->nsDef == NULL) || (ctxt == NULL) || (ctxt->pctxt == NULL)) 2169ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(-1); 2170ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ns = root->nsDef; 2171ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while (ns != NULL) { 2172ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ns->prefix == NULL) 2173ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlXPathRegisterNs(ctxt->pctxt, BAD_CAST "defaultns", ns->href); 2174ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 2175ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlXPathRegisterNs(ctxt->pctxt, ns->prefix, ns->href); 2176ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ns = ns->next; 2177ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2178ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(0); 2179ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 2180ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 2181ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2182ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 2183ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlShellGrep: 2184ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: the shell context 2185ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @arg: the string or regular expression to find 2186ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node: a node 2187ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node2: unused 2188ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 2189ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Implements the XML shell function "grep" 2190ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * dumps informations about the node (namespace, attributes, content). 2191ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 2192ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns 0 2193ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 2194ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int 2195ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlShellGrep(xmlShellCtxtPtr ctxt ATTRIBUTE_UNUSED, 2196ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project char *arg, xmlNodePtr node, xmlNodePtr node2 ATTRIBUTE_UNUSED) 2197ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 2198ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt) 2199ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (0); 2200ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node == NULL) 2201ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (0); 2202ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (arg == NULL) 2203ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (0); 2204ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_REGEXP_ENABLED 2205ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((xmlStrchr((xmlChar *) arg, '?')) || 2206ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (xmlStrchr((xmlChar *) arg, '*')) || 2207ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (xmlStrchr((xmlChar *) arg, '.')) || 2208ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (xmlStrchr((xmlChar *) arg, '['))) { 2209ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2210ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 2211ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while (node != NULL) { 2212ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->type == XML_COMMENT_NODE) { 2213ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (xmlStrstr(node->content, (xmlChar *) arg)) { 2214ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2215ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "%s : ", xmlGetNodePath(node)); 2216ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlShellList(ctxt, NULL, node, NULL); 2217ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2218ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (node->type == XML_TEXT_NODE) { 2219ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (xmlStrstr(node->content, (xmlChar *) arg)) { 2220ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2221ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "%s : ", xmlGetNodePath(node->parent)); 2222ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlShellList(ctxt, NULL, node->parent, NULL); 2223ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2224ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2225ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2226ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 2227ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Browse the full subtree, deep first 2228ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 2229ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2230ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((node->type == XML_DOCUMENT_NODE) || 2231ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (node->type == XML_HTML_DOCUMENT_NODE)) { 2232ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project node = ((xmlDocPtr) node)->children; 2233ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if ((node->children != NULL) 2234ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project && (node->type != XML_ENTITY_REF_NODE)) { 2235ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* deep first */ 2236ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project node = node->children; 2237ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (node->next != NULL) { 2238ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* then siblings */ 2239ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project node = node->next; 2240ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2241ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* go up to parents->next if needed */ 2242ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while (node != NULL) { 2243ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->parent != NULL) { 2244ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project node = node->parent; 2245ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2246ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->next != NULL) { 2247ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project node = node->next; 2248ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 2249ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2250ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->parent == NULL) { 2251ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project node = NULL; 2252ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 2253ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2254ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2255ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2256ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2257ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (0); 2258ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 2259ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2260ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 2261ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlShellDir: 2262ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: the shell context 2263ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @arg: unused 2264ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node: a node 2265ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node2: unused 2266ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 2267ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Implements the XML shell function "dir" 2268ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * dumps informations about the node (namespace, attributes, content). 2269ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 2270ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns 0 2271ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 2272ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectint 2273ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlShellDir(xmlShellCtxtPtr ctxt ATTRIBUTE_UNUSED, 2274ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project char *arg ATTRIBUTE_UNUSED, xmlNodePtr node, 2275ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr node2 ATTRIBUTE_UNUSED) 2276ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 2277ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt) 2278ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (0); 2279ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node == NULL) { 2280ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "NULL\n"); 2281ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (0); 228294442ad4107000e6d49f9b85a46a591495a57632Selim Gurun } 2283ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((node->type == XML_DOCUMENT_NODE) || 2284ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (node->type == XML_HTML_DOCUMENT_NODE)) { 2285ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugDumpDocumentHead(ctxt->output, (xmlDocPtr) node); 2286ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (node->type == XML_ATTRIBUTE_NODE) { 2287ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugDumpAttr(ctxt->output, (xmlAttrPtr) node, 0); 2288ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2289ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDebugDumpOneNode(ctxt->output, node, 0); 2290ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2291ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (0); 2292ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 2293ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2294ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 2295ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlShellSetContent: 2296ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: the shell context 2297ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @value: the content as a string 2298ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node: a node 2299ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node2: unused 2300ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 2301ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Implements the XML shell function "dir" 2302ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * dumps informations about the node (namespace, attributes, content). 2303ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 2304ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns 0 2305ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 2306ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int 2307ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlShellSetContent(xmlShellCtxtPtr ctxt ATTRIBUTE_UNUSED, 2308ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project char *value, xmlNodePtr node, 2309ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr node2 ATTRIBUTE_UNUSED) 2310ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 2311ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr results; 2312ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserErrors ret; 2313ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2314ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt) 2315ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (0); 2316ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node == NULL) { 2317ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "NULL\n"); 2318ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (0); 2319ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2320ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (value == NULL) { 2321ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "NULL\n"); 2322ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (0); 2323ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2324ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2325ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ret = xmlParseInNodeContext(node, value, strlen(value), 0, &results); 2326ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ret == XML_ERR_OK) { 2327ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->children != NULL) { 2328ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFreeNodeList(node->children); 2329ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project node->children = NULL; 2330ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project node->last = NULL; 2331ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2332ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlAddChildList(node, results); 2333ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2334ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "failed to parse content\n"); 2335ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2336ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (0); 2337ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 2338ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2339ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_SCHEMAS_ENABLED 2340ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 2341ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlShellRNGValidate: 2342ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: the shell context 2343ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @schemas: the path to the Relax-NG schemas 2344ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node: a node 2345ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node2: unused 2346ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 2347ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Implements the XML shell function "relaxng" 2348ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * validating the instance against a Relax-NG schemas 2349ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 2350ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns 0 2351ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 2352ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic int 2353ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlShellRNGValidate(xmlShellCtxtPtr sctxt, char *schemas, 2354ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr node ATTRIBUTE_UNUSED, 2355ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr node2 ATTRIBUTE_UNUSED) 2356ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 2357ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlRelaxNGPtr relaxngschemas; 2358ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlRelaxNGParserCtxtPtr ctxt; 2359ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlRelaxNGValidCtxtPtr vctxt; 2360ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int ret; 2361ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2362ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt = xmlRelaxNGNewParserCtxt(schemas); 2363ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlRelaxNGSetParserErrors(ctxt, 2364ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (xmlRelaxNGValidityErrorFunc) fprintf, 2365ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (xmlRelaxNGValidityWarningFunc) fprintf, 2366ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project stderr); 2367ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project relaxngschemas = xmlRelaxNGParse(ctxt); 2368ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlRelaxNGFreeParserCtxt(ctxt); 2369ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (relaxngschemas == NULL) { 2370ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 2371ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Relax-NG schema %s failed to compile\n", schemas); 2372ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(-1); 2373ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2374ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project vctxt = xmlRelaxNGNewValidCtxt(relaxngschemas); 2375ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlRelaxNGSetValidErrors(vctxt, 2376ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (xmlRelaxNGValidityErrorFunc) fprintf, 2377ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (xmlRelaxNGValidityWarningFunc) fprintf, 2378ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project stderr); 2379ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ret = xmlRelaxNGValidateDoc(vctxt, sctxt->doc); 2380ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ret == 0) { 2381ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "%s validates\n", sctxt->filename); 2382ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (ret > 0) { 2383ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "%s fails to validate\n", sctxt->filename); 2384ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2385ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(stderr, "%s validation generated an internal error\n", 2386ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project sctxt->filename); 2387ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2388ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlRelaxNGFreeValidCtxt(vctxt); 2389ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (relaxngschemas != NULL) 2390ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlRelaxNGFree(relaxngschemas); 2391ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(0); 2392ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 2393ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 2394ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2395ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_OUTPUT_ENABLED 2396ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 2397ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlShellCat: 2398ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: the shell context 2399ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @arg: unused 2400ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node: a node 2401ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node2: unused 2402ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 2403ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Implements the XML shell function "cat" 2404ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * dumps the serialization node content (XML or HTML). 2405ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 2406ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns 0 2407ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 2408ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectint 2409ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlShellCat(xmlShellCtxtPtr ctxt, char *arg ATTRIBUTE_UNUSED, 2410ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr node, xmlNodePtr node2 ATTRIBUTE_UNUSED) 2411ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 2412ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt) 2413ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (0); 2414ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node == NULL) { 2415ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "NULL\n"); 2416ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (0); 241794442ad4107000e6d49f9b85a46a591495a57632Selim Gurun } 2418ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt->doc->type == XML_HTML_DOCUMENT_NODE) { 2419ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_HTML_ENABLED 2420ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->type == XML_HTML_DOCUMENT_NODE) 2421ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project htmlDocDump(ctxt->output, (htmlDocPtr) node); 2422ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 2423ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project htmlNodeDumpFile(ctxt->output, ctxt->doc, node); 2424ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#else 2425ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->type == XML_DOCUMENT_NODE) 2426ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDocDump(ctxt->output, (xmlDocPtr) node); 2427ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 2428ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlElemDump(ctxt->output, ctxt->doc, node); 2429ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_HTML_ENABLED */ 2430ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2431ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->type == XML_DOCUMENT_NODE) 2432ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDocDump(ctxt->output, (xmlDocPtr) node); 2433ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 2434ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlElemDump(ctxt->output, ctxt->doc, node); 2435ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2436ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\n"); 2437ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (0); 2438ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 2439ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_OUTPUT_ENABLED */ 2440ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2441ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 2442ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlShellLoad: 2443ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: the shell context 2444ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @filename: the file name 2445ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node: unused 2446ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node2: unused 2447ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 2448ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Implements the XML shell function "load" 2449ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * loads a new document specified by the filename 2450ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 2451ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns 0 or -1 if loading failed 2452ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 2453ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectint 2454ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlShellLoad(xmlShellCtxtPtr ctxt, char *filename, 2455ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr node ATTRIBUTE_UNUSED, 2456ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr node2 ATTRIBUTE_UNUSED) 2457ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 2458ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDocPtr doc; 2459ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int html = 0; 2460ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2461ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((ctxt == NULL) || (filename == NULL)) return(-1); 2462ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt->doc != NULL) 2463ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project html = (ctxt->doc->type == XML_HTML_DOCUMENT_NODE); 2464ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2465ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (html) { 2466ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_HTML_ENABLED 2467ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project doc = htmlParseFile(filename, NULL); 2468ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#else 2469ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "HTML support not compiled in\n"); 2470ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project doc = NULL; 2471ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_HTML_ENABLED */ 2472ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2473ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project doc = xmlReadFile(filename,NULL,0); 2474ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2475ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (doc != NULL) { 2476ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt->loaded == 1) { 2477ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFreeDoc(ctxt->doc); 2478ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2479ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->loaded = 1; 2480ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_XPATH_ENABLED 2481ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlXPathFreeContext(ctxt->pctxt); 2482ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_XPATH_ENABLED */ 2483ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFree(ctxt->filename); 2484ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->doc = doc; 2485ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->node = (xmlNodePtr) doc; 2486ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_XPATH_ENABLED 2487ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->pctxt = xmlXPathNewContext(doc); 2488ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_XPATH_ENABLED */ 2489ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->filename = (char *) xmlCanonicPath((xmlChar *) filename); 2490ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else 2491ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (-1); 2492ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (0); 2493ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 2494ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2495ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_OUTPUT_ENABLED 2496ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 2497ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlShellWrite: 2498ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: the shell context 2499ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @filename: the file name 2500ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node: a node in the tree 2501ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node2: unused 2502ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 2503ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Implements the XML shell function "write" 2504ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Write the current node to the filename, it saves the serialization 2505ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * of the subtree under the @node specified 2506ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 2507ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns 0 or -1 in case of error 2508ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 2509ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectint 2510ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlShellWrite(xmlShellCtxtPtr ctxt, char *filename, xmlNodePtr node, 2511ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr node2 ATTRIBUTE_UNUSED) 2512ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 2513ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node == NULL) 2514ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (-1); 2515ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((filename == NULL) || (filename[0] == 0)) { 2516ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (-1); 2517ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2518ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef W_OK 2519ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (access((char *) filename, W_OK)) { 2520ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 2521ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Cannot write to %s\n", filename); 2522ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (-1); 2523ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2524ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 2525ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project switch (node->type) { 2526ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_DOCUMENT_NODE: 2527ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (xmlSaveFile((char *) filename, ctxt->doc) < -1) { 2528ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 2529ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Failed to write to %s\n", filename); 2530ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (-1); 2531ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2532ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 2533ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_HTML_DOCUMENT_NODE: 2534ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_HTML_ENABLED 2535ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (htmlSaveFile((char *) filename, ctxt->doc) < 0) { 2536ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 2537ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Failed to write to %s\n", filename); 2538ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (-1); 2539ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2540ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#else 2541ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (xmlSaveFile((char *) filename, ctxt->doc) < -1) { 2542ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 2543ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Failed to write to %s\n", filename); 2544ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (-1); 2545ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2546ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_HTML_ENABLED */ 2547ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 2548ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project default:{ 2549ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project FILE *f; 2550ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2551ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project f = fopen((char *) filename, "w"); 2552ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (f == NULL) { 2553ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 2554ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Failed to write to %s\n", filename); 2555ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (-1); 2556ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2557ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlElemDump(f, ctxt->doc, node); 2558ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fclose(f); 2559ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2560ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2561ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (0); 2562ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 2563ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2564ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 2565ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlShellSave: 2566ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: the shell context 2567ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @filename: the file name (optional) 2568ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node: unused 2569ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node2: unused 2570ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 2571ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Implements the XML shell function "save" 2572ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Write the current document to the filename, or it's original name 2573ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 2574ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns 0 or -1 in case of error 2575ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 2576ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectint 2577ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlShellSave(xmlShellCtxtPtr ctxt, char *filename, 2578ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr node ATTRIBUTE_UNUSED, 2579ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr node2 ATTRIBUTE_UNUSED) 2580ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 2581ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((ctxt == NULL) || (ctxt->doc == NULL)) 2582ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (-1); 2583ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((filename == NULL) || (filename[0] == 0)) 2584ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project filename = ctxt->filename; 2585ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (filename == NULL) 2586ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (-1); 2587ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef W_OK 2588ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (access((char *) filename, W_OK)) { 2589ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 2590ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Cannot save to %s\n", filename); 2591ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (-1); 2592ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2593ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 2594ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project switch (ctxt->doc->type) { 2595ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_DOCUMENT_NODE: 2596ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (xmlSaveFile((char *) filename, ctxt->doc) < 0) { 2597ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 2598ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Failed to save to %s\n", filename); 2599ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2600ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 2601ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_HTML_DOCUMENT_NODE: 2602ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_HTML_ENABLED 2603ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (htmlSaveFile((char *) filename, ctxt->doc) < 0) { 2604ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 2605ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Failed to save to %s\n", filename); 2606ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2607ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#else 2608ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (xmlSaveFile((char *) filename, ctxt->doc) < 0) { 2609ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 2610ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Failed to save to %s\n", filename); 2611ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2612ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_HTML_ENABLED */ 2613ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 2614ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project default: 2615ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 2616ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "To save to subparts of a document use the 'write' command\n"); 2617ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (-1); 2618ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2619ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2620ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (0); 2621ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 2622ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_OUTPUT_ENABLED */ 2623ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2624ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_VALID_ENABLED 2625ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 2626ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlShellValidate: 2627ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: the shell context 2628ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @dtd: the DTD URI (optional) 2629ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node: unused 2630ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node2: unused 2631ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 2632ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Implements the XML shell function "validate" 2633ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Validate the document, if a DTD path is provided, then the validation 2634ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * is done against the given DTD. 2635ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 2636ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns 0 or -1 in case of error 2637ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 2638ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectint 2639ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlShellValidate(xmlShellCtxtPtr ctxt, char *dtd, 2640ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr node ATTRIBUTE_UNUSED, 2641ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr node2 ATTRIBUTE_UNUSED) 2642ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 2643ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlValidCtxt vctxt; 2644ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int res = -1; 2645ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2646ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((ctxt == NULL) || (ctxt->doc == NULL)) return(-1); 2647ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project vctxt.userData = stderr; 2648ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project vctxt.error = (xmlValidityErrorFunc) fprintf; 2649ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project vctxt.warning = (xmlValidityWarningFunc) fprintf; 2650ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2651ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((dtd == NULL) || (dtd[0] == 0)) { 2652ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project res = xmlValidateDocument(&vctxt, ctxt->doc); 2653ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2654ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlDtdPtr subset; 2655ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2656ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project subset = xmlParseDTD(NULL, (xmlChar *) dtd); 2657ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (subset != NULL) { 2658ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project res = xmlValidateDtd(&vctxt, ctxt->doc, subset); 2659ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2660ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFreeDtd(subset); 2661ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2662ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2663ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (res); 2664ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 2665ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_VALID_ENABLED */ 2666ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2667ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 2668ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlShellDu: 2669ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: the shell context 2670ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @arg: unused 2671ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @tree: a node defining a subtree 2672ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node2: unused 2673ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 2674ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Implements the XML shell function "du" 2675ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * show the structure of the subtree under node @tree 2676ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * If @tree is null, the command works on the current node. 2677ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 2678ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns 0 or -1 in case of error 2679ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 2680ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectint 2681ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlShellDu(xmlShellCtxtPtr ctxt, 2682ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project char *arg ATTRIBUTE_UNUSED, xmlNodePtr tree, 2683ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr node2 ATTRIBUTE_UNUSED) 2684ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 2685ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr node; 2686ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int indent = 0, i; 2687ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2688ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!ctxt) 2689ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (-1); 2690ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2691ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (tree == NULL) 2692ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (-1); 2693ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project node = tree; 2694ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while (node != NULL) { 2695ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((node->type == XML_DOCUMENT_NODE) || 2696ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (node->type == XML_HTML_DOCUMENT_NODE)) { 2697ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "/\n"); 2698ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (node->type == XML_ELEMENT_NODE) { 2699ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project for (i = 0; i < indent; i++) 2700ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, " "); 270194442ad4107000e6d49f9b85a46a591495a57632Selim Gurun if ((node->ns) && (node->ns->prefix)) 270294442ad4107000e6d49f9b85a46a591495a57632Selim Gurun fprintf(ctxt->output, "%s:", node->ns->prefix); 2703ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "%s\n", node->name); 2704ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2705ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2706ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2707ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 2708ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Browse the full subtree, deep first 2709ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 2710ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2711ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((node->type == XML_DOCUMENT_NODE) || 2712ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (node->type == XML_HTML_DOCUMENT_NODE)) { 2713ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project node = ((xmlDocPtr) node)->children; 2714ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if ((node->children != NULL) 2715ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project && (node->type != XML_ENTITY_REF_NODE)) { 2716ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* deep first */ 2717ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project node = node->children; 2718ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project indent++; 2719ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if ((node != tree) && (node->next != NULL)) { 2720ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* then siblings */ 2721ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project node = node->next; 2722ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (node != tree) { 2723ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* go up to parents->next if needed */ 2724ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while (node != tree) { 2725ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->parent != NULL) { 2726ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project node = node->parent; 2727ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project indent--; 2728ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2729ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((node != tree) && (node->next != NULL)) { 2730ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project node = node->next; 2731ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 2732ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2733ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node->parent == NULL) { 2734ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project node = NULL; 2735ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 2736ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2737ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node == tree) { 2738ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project node = NULL; 2739ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 2740ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2741ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2742ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* exit condition */ 2743ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (node == tree) 2744ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project node = NULL; 2745ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else 2746ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project node = NULL; 2747ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2748ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (0); 2749ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 2750ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2751ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 2752ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlShellPwd: 2753ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctxt: the shell context 2754ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @buffer: the output buffer 275594442ad4107000e6d49f9b85a46a591495a57632Selim Gurun * @node: a node 2756ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node2: unused 2757ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 2758ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Implements the XML shell function "pwd" 2759ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Show the full path from the root to the node, if needed building 2760ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * thumblers when similar elements exists at a given ancestor level. 2761ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * The output is compatible with XPath commands. 2762ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 2763ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns 0 or -1 in case of error 2764ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 2765ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectint 2766ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlShellPwd(xmlShellCtxtPtr ctxt ATTRIBUTE_UNUSED, char *buffer, 2767ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr node, xmlNodePtr node2 ATTRIBUTE_UNUSED) 2768ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 2769ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlChar *path; 2770ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2771ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((node == NULL) || (buffer == NULL)) 2772ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (-1); 2773ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2774ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project path = xmlGetNodePath(node); 2775ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (path == NULL) 2776ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (-1); 2777ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2778ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 2779ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * This test prevents buffer overflow, because this routine 2780ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * is only called by xmlShell, in which the second argument is 2781ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 500 chars long. 2782ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * It is a dirty hack before a cleaner solution is found. 2783ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Documentation should mention that the second argument must 2784ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * be at least 500 chars long, and could be stripped if too long. 2785ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 2786ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project snprintf(buffer, 499, "%s", path); 2787ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project buffer[499] = '0'; 2788ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFree(path); 2789ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2790ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (0); 2791ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 2792ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2793ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 2794ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlShell: 2795ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @doc: the initial document 2796ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @filename: the output buffer 2797ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @input: the line reading function 2798ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @output: the output FILE*, defaults to stdout if NULL 2799ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 280094442ad4107000e6d49f9b85a46a591495a57632Selim Gurun * Implements the XML shell 2801ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * This allow to load, validate, view, modify and save a document 2802ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * using a environment similar to a UNIX commandline. 2803ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 2804ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid 2805ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlShell(xmlDocPtr doc, char *filename, xmlShellReadlineFunc input, 2806ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project FILE * output) 2807ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 2808ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project char prompt[500] = "/ > "; 2809ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project char *cmdline = NULL, *cur; 2810ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project char command[100]; 2811ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project char arg[400]; 2812ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int i; 2813ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlShellCtxtPtr ctxt; 2814ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlXPathObjectPtr list; 2815ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2816ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (doc == NULL) 2817ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 2818ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (filename == NULL) 2819ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 2820ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (input == NULL) 2821ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 2822ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (output == NULL) 2823ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project output = stdout; 2824ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt = (xmlShellCtxtPtr) xmlMalloc(sizeof(xmlShellCtxt)); 2825ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt == NULL) 2826ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 2827ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->loaded = 0; 2828ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->doc = doc; 2829ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->input = input; 2830ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->output = output; 2831ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->filename = (char *) xmlStrdup((xmlChar *) filename); 2832ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->node = (xmlNodePtr) ctxt->doc; 2833ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2834ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_XPATH_ENABLED 2835ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->pctxt = xmlXPathNewContext(ctxt->doc); 2836ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt->pctxt == NULL) { 2837ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFree(ctxt); 2838ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 2839ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2840ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_XPATH_ENABLED */ 2841ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while (1) { 2842ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt->node == (xmlNodePtr) ctxt->doc) 2843ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project snprintf(prompt, sizeof(prompt), "%s > ", "/"); 284494442ad4107000e6d49f9b85a46a591495a57632Selim Gurun else if ((ctxt->node != NULL) && (ctxt->node->name) && 284594442ad4107000e6d49f9b85a46a591495a57632Selim Gurun (ctxt->node->ns) && (ctxt->node->ns->prefix)) 284694442ad4107000e6d49f9b85a46a591495a57632Selim Gurun snprintf(prompt, sizeof(prompt), "%s:%s > ", 284794442ad4107000e6d49f9b85a46a591495a57632Selim Gurun (ctxt->node->ns->prefix), ctxt->node->name); 2848ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((ctxt->node != NULL) && (ctxt->node->name)) 2849ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project snprintf(prompt, sizeof(prompt), "%s > ", ctxt->node->name); 2850ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 2851ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project snprintf(prompt, sizeof(prompt), "? > "); 2852ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project prompt[sizeof(prompt) - 1] = 0; 2853ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2854ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 2855ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Get a new command line 2856ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 2857ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cmdline = ctxt->input(prompt); 2858ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (cmdline == NULL) 2859ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 2860ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2861ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 2862ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Parse the command itself 2863ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 2864ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cur = cmdline; 2865ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while ((*cur == ' ') || (*cur == '\t')) 2866ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cur++; 2867ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project i = 0; 2868ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while ((*cur != ' ') && (*cur != '\t') && 2869ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (*cur != '\n') && (*cur != '\r')) { 2870ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (*cur == 0) 2871ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 2872ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project command[i++] = *cur++; 2873ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2874ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project command[i] = 0; 2875ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (i == 0) 2876ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project continue; 2877ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2878ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 2879ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Parse the argument 2880ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 2881ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while ((*cur == ' ') || (*cur == '\t')) 2882ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cur++; 2883ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project i = 0; 2884ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while ((*cur != '\n') && (*cur != '\r') && (*cur != 0)) { 2885ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (*cur == 0) 2886ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 2887ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project arg[i++] = *cur++; 2888ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2889ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project arg[i] = 0; 2890ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2891ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 2892ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * start interpreting the command 2893ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 2894ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!strcmp(command, "exit")) 2895ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 2896ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!strcmp(command, "quit")) 2897ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 2898ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!strcmp(command, "bye")) 2899ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 2900ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!strcmp(command, "help")) { 2901ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\tbase display XML base of the node\n"); 2902ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\tsetbase URI change the XML base of the node\n"); 2903ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\tbye leave shell\n"); 2904ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\tcat [node] display node or current node\n"); 2905ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\tcd [path] change directory to path or to root\n"); 2906ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\tdir [path] dumps informations about the node (namespace, attributes, content)\n"); 2907ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\tdu [path] show the structure of the subtree under path or the current node\n"); 2908ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\texit leave shell\n"); 2909ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\thelp display this help\n"); 2910ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\tfree display memory usage\n"); 2911ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\tload [name] load a new document with name\n"); 2912ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\tls [path] list contents of path or the current directory\n"); 2913ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\tset xml_fragment replace the current node content with the fragment parsed in context\n"); 2914ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_XPATH_ENABLED 2915ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\txpath expr evaluate the XPath expression in that context and print the result\n"); 2916ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\tsetns nsreg register a namespace to a prefix in the XPath evaluation context\n"); 2917ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\t format for nsreg is: prefix=[nsuri] (i.e. prefix= unsets a prefix)\n"); 2918ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\tsetrootns register all namespace found on the root element\n"); 2919ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\t the default namespace if any uses 'defaultns' prefix\n"); 2920ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_XPATH_ENABLED */ 2921ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\tpwd display current working directory\n"); 292294442ad4107000e6d49f9b85a46a591495a57632Selim Gurun fprintf(ctxt->output, "\twhereis display absolute path of [path] or current working directory\n"); 2923ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\tquit leave shell\n"); 2924ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_OUTPUT_ENABLED 2925ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\tsave [name] save this document to name or the original name\n"); 2926ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\twrite [name] write the current node to the filename\n"); 2927ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_OUTPUT_ENABLED */ 2928ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_VALID_ENABLED 2929ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\tvalidate check the document for errors\n"); 2930ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_VALID_ENABLED */ 2931ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_SCHEMAS_ENABLED 2932ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\trelaxng rng validate the document agaisnt the Relax-NG schemas\n"); 2933ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 2934ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "\tgrep string search for a string in the subtree\n"); 2935ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_VALID_ENABLED 2936ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (!strcmp(command, "validate")) { 2937ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlShellValidate(ctxt, arg, NULL, NULL); 2938ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_VALID_ENABLED */ 2939ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (!strcmp(command, "load")) { 2940ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlShellLoad(ctxt, arg, NULL, NULL); 2941ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_SCHEMAS_ENABLED 2942ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (!strcmp(command, "relaxng")) { 2943ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlShellRNGValidate(ctxt, arg, NULL, NULL); 2944ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 2945ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_OUTPUT_ENABLED 2946ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (!strcmp(command, "save")) { 2947ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlShellSave(ctxt, arg, NULL, NULL); 2948ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (!strcmp(command, "write")) { 2949ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((arg == NULL) || (arg[0] == 0)) 2950ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 2951ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Write command requires a filename argument\n"); 2952ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 2953df143a5041f03a22808b59c76698770b74692815Selim Gurun xmlShellWrite(ctxt, arg, ctxt->node, NULL); 2954ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_OUTPUT_ENABLED */ 2955ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (!strcmp(command, "grep")) { 2956ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlShellGrep(ctxt, arg, ctxt->node, NULL); 2957ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (!strcmp(command, "free")) { 2958ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (arg[0] == 0) { 2959ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlMemShow(ctxt->output, 0); 2960ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 2961ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int len = 0; 2962ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2963ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project sscanf(arg, "%d", &len); 2964ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlMemShow(ctxt->output, len); 2965ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 2966ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (!strcmp(command, "pwd")) { 2967ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project char dir[500]; 2968ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 2969ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (!xmlShellPwd(ctxt, dir, ctxt->node, NULL)) 2970ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, "%s\n", dir); 2971ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (!strcmp(command, "du")) { 297294442ad4107000e6d49f9b85a46a591495a57632Selim Gurun if (arg[0] == 0) { 297394442ad4107000e6d49f9b85a46a591495a57632Selim Gurun xmlShellDu(ctxt, NULL, ctxt->node, NULL); 297494442ad4107000e6d49f9b85a46a591495a57632Selim Gurun } else { 297594442ad4107000e6d49f9b85a46a591495a57632Selim Gurun ctxt->pctxt->node = ctxt->node; 297694442ad4107000e6d49f9b85a46a591495a57632Selim Gurun#ifdef LIBXML_XPATH_ENABLED 297794442ad4107000e6d49f9b85a46a591495a57632Selim Gurun ctxt->pctxt->node = ctxt->node; 297894442ad4107000e6d49f9b85a46a591495a57632Selim Gurun list = xmlXPathEval((xmlChar *) arg, ctxt->pctxt); 297994442ad4107000e6d49f9b85a46a591495a57632Selim Gurun#else 298094442ad4107000e6d49f9b85a46a591495a57632Selim Gurun list = NULL; 298194442ad4107000e6d49f9b85a46a591495a57632Selim Gurun#endif /* LIBXML_XPATH_ENABLED */ 298294442ad4107000e6d49f9b85a46a591495a57632Selim Gurun if (list != NULL) { 298394442ad4107000e6d49f9b85a46a591495a57632Selim Gurun switch (list->type) { 298494442ad4107000e6d49f9b85a46a591495a57632Selim Gurun case XPATH_UNDEFINED: 298594442ad4107000e6d49f9b85a46a591495a57632Selim Gurun xmlGenericError(xmlGenericErrorContext, 298694442ad4107000e6d49f9b85a46a591495a57632Selim Gurun "%s: no such node\n", arg); 298794442ad4107000e6d49f9b85a46a591495a57632Selim Gurun break; 298894442ad4107000e6d49f9b85a46a591495a57632Selim Gurun case XPATH_NODESET:{ 298994442ad4107000e6d49f9b85a46a591495a57632Selim Gurun int indx; 299094442ad4107000e6d49f9b85a46a591495a57632Selim Gurun 299194442ad4107000e6d49f9b85a46a591495a57632Selim Gurun if (list->nodesetval == NULL) 299294442ad4107000e6d49f9b85a46a591495a57632Selim Gurun break; 299394442ad4107000e6d49f9b85a46a591495a57632Selim Gurun 299494442ad4107000e6d49f9b85a46a591495a57632Selim Gurun for (indx = 0; 299594442ad4107000e6d49f9b85a46a591495a57632Selim Gurun indx < list->nodesetval->nodeNr; 299694442ad4107000e6d49f9b85a46a591495a57632Selim Gurun indx++) 299794442ad4107000e6d49f9b85a46a591495a57632Selim Gurun xmlShellDu(ctxt, NULL, 299894442ad4107000e6d49f9b85a46a591495a57632Selim Gurun list->nodesetval-> 299994442ad4107000e6d49f9b85a46a591495a57632Selim Gurun nodeTab[indx], NULL); 300094442ad4107000e6d49f9b85a46a591495a57632Selim Gurun break; 300194442ad4107000e6d49f9b85a46a591495a57632Selim Gurun } 300294442ad4107000e6d49f9b85a46a591495a57632Selim Gurun case XPATH_BOOLEAN: 300394442ad4107000e6d49f9b85a46a591495a57632Selim Gurun xmlGenericError(xmlGenericErrorContext, 300494442ad4107000e6d49f9b85a46a591495a57632Selim Gurun "%s is a Boolean\n", arg); 300594442ad4107000e6d49f9b85a46a591495a57632Selim Gurun break; 300694442ad4107000e6d49f9b85a46a591495a57632Selim Gurun case XPATH_NUMBER: 300794442ad4107000e6d49f9b85a46a591495a57632Selim Gurun xmlGenericError(xmlGenericErrorContext, 300894442ad4107000e6d49f9b85a46a591495a57632Selim Gurun "%s is a number\n", arg); 300994442ad4107000e6d49f9b85a46a591495a57632Selim Gurun break; 301094442ad4107000e6d49f9b85a46a591495a57632Selim Gurun case XPATH_STRING: 301194442ad4107000e6d49f9b85a46a591495a57632Selim Gurun xmlGenericError(xmlGenericErrorContext, 301294442ad4107000e6d49f9b85a46a591495a57632Selim Gurun "%s is a string\n", arg); 301394442ad4107000e6d49f9b85a46a591495a57632Selim Gurun break; 301494442ad4107000e6d49f9b85a46a591495a57632Selim Gurun case XPATH_POINT: 301594442ad4107000e6d49f9b85a46a591495a57632Selim Gurun xmlGenericError(xmlGenericErrorContext, 301694442ad4107000e6d49f9b85a46a591495a57632Selim Gurun "%s is a point\n", arg); 301794442ad4107000e6d49f9b85a46a591495a57632Selim Gurun break; 301894442ad4107000e6d49f9b85a46a591495a57632Selim Gurun case XPATH_RANGE: 301994442ad4107000e6d49f9b85a46a591495a57632Selim Gurun xmlGenericError(xmlGenericErrorContext, 302094442ad4107000e6d49f9b85a46a591495a57632Selim Gurun "%s is a range\n", arg); 302194442ad4107000e6d49f9b85a46a591495a57632Selim Gurun break; 302294442ad4107000e6d49f9b85a46a591495a57632Selim Gurun case XPATH_LOCATIONSET: 302394442ad4107000e6d49f9b85a46a591495a57632Selim Gurun xmlGenericError(xmlGenericErrorContext, 302494442ad4107000e6d49f9b85a46a591495a57632Selim Gurun "%s is a range\n", arg); 302594442ad4107000e6d49f9b85a46a591495a57632Selim Gurun break; 302694442ad4107000e6d49f9b85a46a591495a57632Selim Gurun case XPATH_USERS: 302794442ad4107000e6d49f9b85a46a591495a57632Selim Gurun xmlGenericError(xmlGenericErrorContext, 302894442ad4107000e6d49f9b85a46a591495a57632Selim Gurun "%s is user-defined\n", arg); 302994442ad4107000e6d49f9b85a46a591495a57632Selim Gurun break; 303094442ad4107000e6d49f9b85a46a591495a57632Selim Gurun case XPATH_XSLT_TREE: 303194442ad4107000e6d49f9b85a46a591495a57632Selim Gurun xmlGenericError(xmlGenericErrorContext, 303294442ad4107000e6d49f9b85a46a591495a57632Selim Gurun "%s is an XSLT value tree\n", 303394442ad4107000e6d49f9b85a46a591495a57632Selim Gurun arg); 303494442ad4107000e6d49f9b85a46a591495a57632Selim Gurun break; 303594442ad4107000e6d49f9b85a46a591495a57632Selim Gurun } 303694442ad4107000e6d49f9b85a46a591495a57632Selim Gurun#ifdef LIBXML_XPATH_ENABLED 303794442ad4107000e6d49f9b85a46a591495a57632Selim Gurun xmlXPathFreeObject(list); 303894442ad4107000e6d49f9b85a46a591495a57632Selim Gurun#endif 303994442ad4107000e6d49f9b85a46a591495a57632Selim Gurun } else { 304094442ad4107000e6d49f9b85a46a591495a57632Selim Gurun xmlGenericError(xmlGenericErrorContext, 304194442ad4107000e6d49f9b85a46a591495a57632Selim Gurun "%s: no such node\n", arg); 304294442ad4107000e6d49f9b85a46a591495a57632Selim Gurun } 304394442ad4107000e6d49f9b85a46a591495a57632Selim Gurun ctxt->pctxt->node = NULL; 304494442ad4107000e6d49f9b85a46a591495a57632Selim Gurun } 3045ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (!strcmp(command, "base")) { 3046ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlShellBase(ctxt, NULL, ctxt->node, NULL); 3047ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (!strcmp(command, "set")) { 3048ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlShellSetContent(ctxt, arg, ctxt->node, NULL); 3049ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_XPATH_ENABLED 3050ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (!strcmp(command, "setns")) { 3051ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (arg[0] == 0) { 3052ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3053ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "setns: prefix=[nsuri] required\n"); 3054ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 3055ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlShellRegisterNamespace(ctxt, arg, NULL, NULL); 3056ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3057ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (!strcmp(command, "setrootns")) { 3058ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr root; 3059ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 3060ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project root = xmlDocGetRootElement(ctxt->doc); 3061ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlShellRegisterRootNamespaces(ctxt, NULL, root, NULL); 3062ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (!strcmp(command, "xpath")) { 3063ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (arg[0] == 0) { 3064ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3065ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "xpath: expression required\n"); 3066ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 3067ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->pctxt->node = ctxt->node; 3068ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project list = xmlXPathEval((xmlChar *) arg, ctxt->pctxt); 3069ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlXPathDebugDumpObject(ctxt->output, list, 0); 3070ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlXPathFreeObject(list); 3071ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3072ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_XPATH_ENABLED */ 3073ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_TREE_ENABLED 3074ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (!strcmp(command, "setbase")) { 3075ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlShellSetBase(ctxt, arg, ctxt->node, NULL); 3076ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3077ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if ((!strcmp(command, "ls")) || (!strcmp(command, "dir"))) { 3078ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int dir = (!strcmp(command, "dir")); 3079ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 3080ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (arg[0] == 0) { 3081ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (dir) 3082ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlShellDir(ctxt, NULL, ctxt->node, NULL); 3083ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 3084ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlShellList(ctxt, NULL, ctxt->node, NULL); 3085ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 3086ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->pctxt->node = ctxt->node; 3087ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_XPATH_ENABLED 3088ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->pctxt->node = ctxt->node; 3089ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project list = xmlXPathEval((xmlChar *) arg, ctxt->pctxt); 3090ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#else 3091ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project list = NULL; 3092ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_XPATH_ENABLED */ 3093ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (list != NULL) { 3094ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project switch (list->type) { 3095ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_UNDEFINED: 3096ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3097ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s: no such node\n", arg); 3098ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3099ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_NODESET:{ 3100ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int indx; 3101ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 3102ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (list->nodesetval == NULL) 3103ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3104ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 3105ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project for (indx = 0; 3106ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project indx < list->nodesetval->nodeNr; 3107ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project indx++) { 3108ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (dir) 3109ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlShellDir(ctxt, NULL, 3110ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project list->nodesetval-> 3111ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project nodeTab[indx], NULL); 3112ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 3113ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlShellList(ctxt, NULL, 3114ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project list->nodesetval-> 3115ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project nodeTab[indx], NULL); 3116ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3117ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3118ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3119ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_BOOLEAN: 3120ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3121ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is a Boolean\n", arg); 3122ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3123ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_NUMBER: 3124ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3125ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is a number\n", arg); 3126ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3127ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_STRING: 3128ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3129ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is a string\n", arg); 3130ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3131ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_POINT: 3132ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3133ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is a point\n", arg); 313494442ad4107000e6d49f9b85a46a591495a57632Selim Gurun break; 313594442ad4107000e6d49f9b85a46a591495a57632Selim Gurun case XPATH_RANGE: 313694442ad4107000e6d49f9b85a46a591495a57632Selim Gurun xmlGenericError(xmlGenericErrorContext, 313794442ad4107000e6d49f9b85a46a591495a57632Selim Gurun "%s is a range\n", arg); 313894442ad4107000e6d49f9b85a46a591495a57632Selim Gurun break; 313994442ad4107000e6d49f9b85a46a591495a57632Selim Gurun case XPATH_LOCATIONSET: 314094442ad4107000e6d49f9b85a46a591495a57632Selim Gurun xmlGenericError(xmlGenericErrorContext, 314194442ad4107000e6d49f9b85a46a591495a57632Selim Gurun "%s is a range\n", arg); 314294442ad4107000e6d49f9b85a46a591495a57632Selim Gurun break; 314394442ad4107000e6d49f9b85a46a591495a57632Selim Gurun case XPATH_USERS: 314494442ad4107000e6d49f9b85a46a591495a57632Selim Gurun xmlGenericError(xmlGenericErrorContext, 314594442ad4107000e6d49f9b85a46a591495a57632Selim Gurun "%s is user-defined\n", arg); 314694442ad4107000e6d49f9b85a46a591495a57632Selim Gurun break; 314794442ad4107000e6d49f9b85a46a591495a57632Selim Gurun case XPATH_XSLT_TREE: 314894442ad4107000e6d49f9b85a46a591495a57632Selim Gurun xmlGenericError(xmlGenericErrorContext, 314994442ad4107000e6d49f9b85a46a591495a57632Selim Gurun "%s is an XSLT value tree\n", 315094442ad4107000e6d49f9b85a46a591495a57632Selim Gurun arg); 315194442ad4107000e6d49f9b85a46a591495a57632Selim Gurun break; 315294442ad4107000e6d49f9b85a46a591495a57632Selim Gurun } 315394442ad4107000e6d49f9b85a46a591495a57632Selim Gurun#ifdef LIBXML_XPATH_ENABLED 315494442ad4107000e6d49f9b85a46a591495a57632Selim Gurun xmlXPathFreeObject(list); 315594442ad4107000e6d49f9b85a46a591495a57632Selim Gurun#endif 315694442ad4107000e6d49f9b85a46a591495a57632Selim Gurun } else { 315794442ad4107000e6d49f9b85a46a591495a57632Selim Gurun xmlGenericError(xmlGenericErrorContext, 315894442ad4107000e6d49f9b85a46a591495a57632Selim Gurun "%s: no such node\n", arg); 315994442ad4107000e6d49f9b85a46a591495a57632Selim Gurun } 316094442ad4107000e6d49f9b85a46a591495a57632Selim Gurun ctxt->pctxt->node = NULL; 316194442ad4107000e6d49f9b85a46a591495a57632Selim Gurun } 316294442ad4107000e6d49f9b85a46a591495a57632Selim Gurun } else if (!strcmp(command, "whereis")) { 316394442ad4107000e6d49f9b85a46a591495a57632Selim Gurun char dir[500]; 316494442ad4107000e6d49f9b85a46a591495a57632Selim Gurun 316594442ad4107000e6d49f9b85a46a591495a57632Selim Gurun if (arg[0] == 0) { 316694442ad4107000e6d49f9b85a46a591495a57632Selim Gurun if (!xmlShellPwd(ctxt, dir, ctxt->node, NULL)) 316794442ad4107000e6d49f9b85a46a591495a57632Selim Gurun fprintf(ctxt->output, "%s\n", dir); 316894442ad4107000e6d49f9b85a46a591495a57632Selim Gurun } else { 316994442ad4107000e6d49f9b85a46a591495a57632Selim Gurun ctxt->pctxt->node = ctxt->node; 317094442ad4107000e6d49f9b85a46a591495a57632Selim Gurun#ifdef LIBXML_XPATH_ENABLED 317194442ad4107000e6d49f9b85a46a591495a57632Selim Gurun list = xmlXPathEval((xmlChar *) arg, ctxt->pctxt); 317294442ad4107000e6d49f9b85a46a591495a57632Selim Gurun#else 317394442ad4107000e6d49f9b85a46a591495a57632Selim Gurun list = NULL; 317494442ad4107000e6d49f9b85a46a591495a57632Selim Gurun#endif /* LIBXML_XPATH_ENABLED */ 317594442ad4107000e6d49f9b85a46a591495a57632Selim Gurun if (list != NULL) { 317694442ad4107000e6d49f9b85a46a591495a57632Selim Gurun switch (list->type) { 317794442ad4107000e6d49f9b85a46a591495a57632Selim Gurun case XPATH_UNDEFINED: 317894442ad4107000e6d49f9b85a46a591495a57632Selim Gurun xmlGenericError(xmlGenericErrorContext, 317994442ad4107000e6d49f9b85a46a591495a57632Selim Gurun "%s: no such node\n", arg); 318094442ad4107000e6d49f9b85a46a591495a57632Selim Gurun break; 318194442ad4107000e6d49f9b85a46a591495a57632Selim Gurun case XPATH_NODESET:{ 318294442ad4107000e6d49f9b85a46a591495a57632Selim Gurun int indx; 318394442ad4107000e6d49f9b85a46a591495a57632Selim Gurun 318494442ad4107000e6d49f9b85a46a591495a57632Selim Gurun if (list->nodesetval == NULL) 318594442ad4107000e6d49f9b85a46a591495a57632Selim Gurun break; 318694442ad4107000e6d49f9b85a46a591495a57632Selim Gurun 318794442ad4107000e6d49f9b85a46a591495a57632Selim Gurun for (indx = 0; 318894442ad4107000e6d49f9b85a46a591495a57632Selim Gurun indx < list->nodesetval->nodeNr; 318994442ad4107000e6d49f9b85a46a591495a57632Selim Gurun indx++) { 319094442ad4107000e6d49f9b85a46a591495a57632Selim Gurun if (!xmlShellPwd(ctxt, dir, list->nodesetval-> 319194442ad4107000e6d49f9b85a46a591495a57632Selim Gurun nodeTab[indx], NULL)) 319294442ad4107000e6d49f9b85a46a591495a57632Selim Gurun fprintf(ctxt->output, "%s\n", dir); 319394442ad4107000e6d49f9b85a46a591495a57632Selim Gurun } 319494442ad4107000e6d49f9b85a46a591495a57632Selim Gurun break; 319594442ad4107000e6d49f9b85a46a591495a57632Selim Gurun } 319694442ad4107000e6d49f9b85a46a591495a57632Selim Gurun case XPATH_BOOLEAN: 319794442ad4107000e6d49f9b85a46a591495a57632Selim Gurun xmlGenericError(xmlGenericErrorContext, 319894442ad4107000e6d49f9b85a46a591495a57632Selim Gurun "%s is a Boolean\n", arg); 319994442ad4107000e6d49f9b85a46a591495a57632Selim Gurun break; 320094442ad4107000e6d49f9b85a46a591495a57632Selim Gurun case XPATH_NUMBER: 320194442ad4107000e6d49f9b85a46a591495a57632Selim Gurun xmlGenericError(xmlGenericErrorContext, 320294442ad4107000e6d49f9b85a46a591495a57632Selim Gurun "%s is a number\n", arg); 320394442ad4107000e6d49f9b85a46a591495a57632Selim Gurun break; 320494442ad4107000e6d49f9b85a46a591495a57632Selim Gurun case XPATH_STRING: 320594442ad4107000e6d49f9b85a46a591495a57632Selim Gurun xmlGenericError(xmlGenericErrorContext, 320694442ad4107000e6d49f9b85a46a591495a57632Selim Gurun "%s is a string\n", arg); 320794442ad4107000e6d49f9b85a46a591495a57632Selim Gurun break; 320894442ad4107000e6d49f9b85a46a591495a57632Selim Gurun case XPATH_POINT: 320994442ad4107000e6d49f9b85a46a591495a57632Selim Gurun xmlGenericError(xmlGenericErrorContext, 321094442ad4107000e6d49f9b85a46a591495a57632Selim Gurun "%s is a point\n", arg); 3211ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3212ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_RANGE: 3213ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3214ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is a range\n", arg); 3215ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3216ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_LOCATIONSET: 3217ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3218ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is a range\n", arg); 3219ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3220ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_USERS: 3221ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3222ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is user-defined\n", arg); 3223ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3224ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_XSLT_TREE: 3225ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3226ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is an XSLT value tree\n", 3227ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project arg); 3228ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3229ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3230ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_XPATH_ENABLED 3231ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlXPathFreeObject(list); 3232ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3233ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 3234ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3235ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s: no such node\n", arg); 3236ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3237ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->pctxt->node = NULL; 3238ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3239ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (!strcmp(command, "cd")) { 3240ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (arg[0] == 0) { 3241ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->node = (xmlNodePtr) ctxt->doc; 3242ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 3243ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_XPATH_ENABLED 3244ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->pctxt->node = ctxt->node; 3245ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project list = xmlXPathEval((xmlChar *) arg, ctxt->pctxt); 3246ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#else 3247ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project list = NULL; 3248ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_XPATH_ENABLED */ 3249ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (list != NULL) { 3250ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project switch (list->type) { 3251ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_UNDEFINED: 3252ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3253ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s: no such node\n", arg); 3254ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3255ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_NODESET: 3256ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (list->nodesetval != NULL) { 3257ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (list->nodesetval->nodeNr == 1) { 3258ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->node = list->nodesetval->nodeTab[0]; 3259ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((ctxt->node != NULL) && 3260ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (ctxt->node->type == 3261ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project XML_NAMESPACE_DECL)) { 3262ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3263ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "cannot cd to namespace\n"); 3264ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->node = NULL; 3265ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3266ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else 3267ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3268ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is a %d Node Set\n", 3269ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project arg, 3270ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project list->nodesetval->nodeNr); 3271ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else 3272ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3273ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is an empty Node Set\n", 3274ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project arg); 3275ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3276ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_BOOLEAN: 3277ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3278ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is a Boolean\n", arg); 3279ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3280ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_NUMBER: 3281ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3282ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is a number\n", arg); 3283ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3284ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_STRING: 3285ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3286ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is a string\n", arg); 3287ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3288ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_POINT: 3289ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3290ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is a point\n", arg); 3291ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3292ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_RANGE: 3293ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3294ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is a range\n", arg); 3295ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3296ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_LOCATIONSET: 3297ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3298ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is a range\n", arg); 3299ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3300ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_USERS: 3301ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3302ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is user-defined\n", arg); 3303ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3304ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_XSLT_TREE: 3305ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3306ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is an XSLT value tree\n", 3307ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project arg); 3308ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3309ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3310ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_XPATH_ENABLED 3311ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlXPathFreeObject(list); 3312ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3313ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 3314ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3315ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s: no such node\n", arg); 3316ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3317ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->pctxt->node = NULL; 3318ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3319ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_OUTPUT_ENABLED 3320ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (!strcmp(command, "cat")) { 3321ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (arg[0] == 0) { 3322ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlShellCat(ctxt, NULL, ctxt->node, NULL); 3323ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 3324ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->pctxt->node = ctxt->node; 3325ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_XPATH_ENABLED 3326ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->pctxt->node = ctxt->node; 3327ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project list = xmlXPathEval((xmlChar *) arg, ctxt->pctxt); 3328ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#else 3329ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project list = NULL; 3330ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_XPATH_ENABLED */ 3331ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (list != NULL) { 3332ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project switch (list->type) { 3333ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_UNDEFINED: 3334ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3335ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s: no such node\n", arg); 3336ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3337ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_NODESET:{ 3338ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int indx; 3339ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 3340ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (list->nodesetval == NULL) 3341ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3342ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 3343ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project for (indx = 0; 3344ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project indx < list->nodesetval->nodeNr; 3345ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project indx++) { 3346ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (i > 0) 3347ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project fprintf(ctxt->output, " -------\n"); 3348ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlShellCat(ctxt, NULL, 3349ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project list->nodesetval-> 3350ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project nodeTab[indx], NULL); 3351ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3352ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3353ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3354ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_BOOLEAN: 3355ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3356ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is a Boolean\n", arg); 3357ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3358ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_NUMBER: 3359ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3360ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is a number\n", arg); 3361ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3362ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_STRING: 3363ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3364ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is a string\n", arg); 3365ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3366ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_POINT: 3367ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3368ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is a point\n", arg); 3369ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3370ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_RANGE: 3371ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3372ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is a range\n", arg); 3373ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3374ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_LOCATIONSET: 3375ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3376ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is a range\n", arg); 3377ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3378ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_USERS: 3379ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3380ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is user-defined\n", arg); 3381ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3382ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XPATH_XSLT_TREE: 3383ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3384ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s is an XSLT value tree\n", 3385ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project arg); 3386ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 3387ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3388ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_XPATH_ENABLED 3389ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlXPathFreeObject(list); 3390ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 3391ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 3392ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3393ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s: no such node\n", arg); 3394ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3395ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt->pctxt->node = NULL; 3396ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3397ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_OUTPUT_ENABLED */ 3398ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 3399ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 3400ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Unknown command %s\n", command); 3401ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3402ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project free(cmdline); /* not xmlFree here ! */ 340360a4c356ee9ce5e9ccb23347c0381f0436192691Patrick Scott cmdline = NULL; 3404ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3405ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_XPATH_ENABLED 3406ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlXPathFreeContext(ctxt->pctxt); 3407ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_XPATH_ENABLED */ 3408ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt->loaded) { 3409ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFreeDoc(ctxt->doc); 3410ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 3411ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt->filename != NULL) 3412ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFree(ctxt->filename); 3413ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFree(ctxt); 3414ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (cmdline != NULL) 3415ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project free(cmdline); /* not xmlFree here ! */ 3416ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 3417ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 3418ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_XPATH_ENABLED */ 3419ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#define bottom_debugXML 3420ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include "elfgcchack.h" 3421ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* LIBXML_DEBUG_ENABLED */ 3422