20#ifdef LIBXML_READER_ENABLED
30#ifdef LIBXML_SCHEMAS_ENABLED
35#ifdef LIBXML_XINCLUDE_ENABLED
38#ifdef LIBXML_PATTERN_ENABLED
45#ifdef LIBXML_XINCLUDE_ENABLED
49#define MAX_ERR_MSG_SIZE 64000
51#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
53#define MAX_FREE_NODES 1
55#define MAX_FREE_NODES 100
66 #define VA_COPY(dest, src) va_copy(dest, src)
69 #define VA_COPY(dest,src) __va_copy(dest, src)
71 #ifndef VA_LIST_IS_ARRAY
72 #define VA_COPY(dest,src) (dest) = (src)
75 #define VA_COPY(dest,src) memcpy((char *)(dest),(char *)(src),sizeof(va_list))
87 xmlGenericError(xmlGenericErrorContext, \
88 "Unimplemented block at %s:%d\n", \
99#define XML_TEXTREADER_INPUT 1
100#define XML_TEXTREADER_CTXT 2
103 XML_TEXTREADER_NONE = -1,
104 XML_TEXTREADER_START= 0,
105 XML_TEXTREADER_ELEMENT= 1,
106 XML_TEXTREADER_END= 2,
107 XML_TEXTREADER_EMPTY= 3,
108 XML_TEXTREADER_BACKTRACK= 4,
109 XML_TEXTREADER_DONE= 5,
110 XML_TEXTREADER_ERROR= 6
114 XML_TEXTREADER_NOT_VALIDATE = 0,
115 XML_TEXTREADER_VALIDATE_DTD = 1,
116 XML_TEXTREADER_VALIDATE_RNG = 2,
117 XML_TEXTREADER_VALIDATE_XSD = 4
118} xmlTextReaderValidate;
120struct _xmlTextReader {
125 xmlTextReaderState
state;
126 xmlParserCtxtPtr ctxt;
127 xmlSAXHandlerPtr sax;
128 xmlParserInputBufferPtr
input;
152 xmlTextReaderErrorFunc errorFunc;
155#ifdef LIBXML_SCHEMAS_ENABLED
157 xmlRelaxNGPtr rngSchemas;
158 xmlRelaxNGValidCtxtPtr rngValidCtxt;
161 xmlNodePtr rngFullNode;
163 xmlSchemaPtr xsdSchemas;
164 xmlSchemaValidCtxtPtr xsdValidCtxt;
167 xmlSchemaSAXPlugPtr xsdPlug;
169#ifdef LIBXML_XINCLUDE_ENABLED
173 xmlXIncludeCtxtPtr xincctxt;
176#ifdef LIBXML_PATTERN_ENABLED
179 xmlPatternPtr *patternTab;
187#define NODE_IS_EMPTY 0x1
188#define NODE_IS_PRESERVED 0x2
189#define NODE_IS_SPRESERVED 0x4
196#define CONSTSTR(str) xmlDictLookup(reader->dict, (str), -1)
197#define CONSTQSTR(p, str) xmlDictQLookup(reader->dict, (p), (str))
199static int xmlTextReaderReadTree(xmlTextReaderPtr
reader);
200static int xmlTextReaderNextTree(xmlTextReaderPtr
reader);
214#define DICT_FREE(str) \
215 if ((str) && ((!dict) || \
216 (xmlDictOwns(dict, (const xmlChar *)(str)) == 0))) \
217 xmlFree((char *)(str));
219static void xmlTextReaderFreeNode(xmlTextReaderPtr
reader, xmlNodePtr
cur);
220static void xmlTextReaderFreeNodeList(xmlTextReaderPtr
reader, xmlNodePtr
cur);
230xmlTextReaderFreeProp(xmlTextReaderPtr
reader, xmlAttrPtr
cur) {
234 dict =
reader->ctxt->dict;
243 xmlTextReaderFreeNodeList(
reader,
cur->children);
247 (
reader->ctxt->freeAttrsNr < MAX_FREE_NODES)) {
250 reader->ctxt->freeAttrsNr++;
264xmlTextReaderFreePropList(xmlTextReaderPtr
reader, xmlAttrPtr
cur) {
283xmlTextReaderFreeNodeList(xmlTextReaderPtr
reader, xmlNodePtr
cur) {
290 dict =
reader->ctxt->dict;
294 if (
cur->type == XML_NAMESPACE_DECL) {
295 xmlFreeNsList((xmlNsPtr)
cur);
298 if ((
cur->type == XML_DOCUMENT_NODE) ||
299 (
cur->type == XML_HTML_DOCUMENT_NODE)) {
300 xmlFreeDoc((xmlDocPtr)
cur);
304 while ((
cur->type != XML_DTD_NODE) &&
305 (
cur->type != XML_ENTITY_REF_NODE) &&
307 (
cur->children->parent ==
cur)) {
316 if (
cur->type != XML_DTD_NODE) {
321 if (((
cur->type == XML_ELEMENT_NODE) ||
322 (
cur->type == XML_XINCLUDE_START) ||
323 (
cur->type == XML_XINCLUDE_END)) &&
325 xmlTextReaderFreePropList(
reader,
cur->properties);
327 (
cur->type != XML_ELEMENT_NODE) &&
328 (
cur->type != XML_XINCLUDE_START) &&
329 (
cur->type != XML_XINCLUDE_END) &&
330 (
cur->type != XML_ENTITY_REF_NODE)) {
333 if (((
cur->type == XML_ELEMENT_NODE) ||
334 (
cur->type == XML_XINCLUDE_START) ||
335 (
cur->type == XML_XINCLUDE_END)) &&
337 xmlFreeNsList(
cur->nsDef);
342 if ((
cur->type != XML_TEXT_NODE) &&
343 (
cur->type != XML_COMMENT_NODE))
345 if (((
cur->type == XML_ELEMENT_NODE) ||
346 (
cur->type == XML_TEXT_NODE)) &&
348 (
reader->ctxt->freeElemsNr < MAX_FREE_NODES)) {
351 reader->ctxt->freeElemsNr++;
378xmlTextReaderFreeNode(xmlTextReaderPtr
reader, xmlNodePtr
cur) {
382 dict =
reader->ctxt->dict;
385 if (
cur->type == XML_DTD_NODE) {
386 xmlFreeDtd((xmlDtdPtr)
cur);
389 if (
cur->type == XML_NAMESPACE_DECL) {
390 xmlFreeNs((xmlNsPtr)
cur);
393 if (
cur->type == XML_ATTRIBUTE_NODE) {
394 xmlTextReaderFreeProp(
reader, (xmlAttrPtr)
cur);
399 (
cur->type != XML_ENTITY_REF_NODE)) {
400 if (
cur->children->parent ==
cur)
401 xmlTextReaderFreeNodeList(
reader,
cur->children);
408 if (((
cur->type == XML_ELEMENT_NODE) ||
409 (
cur->type == XML_XINCLUDE_START) ||
410 (
cur->type == XML_XINCLUDE_END)) &&
412 xmlTextReaderFreePropList(
reader,
cur->properties);
414 (
cur->type != XML_ELEMENT_NODE) &&
415 (
cur->type != XML_XINCLUDE_START) &&
416 (
cur->type != XML_XINCLUDE_END) &&
417 (
cur->type != XML_ENTITY_REF_NODE)) {
420 if (((
cur->type == XML_ELEMENT_NODE) ||
421 (
cur->type == XML_XINCLUDE_START) ||
422 (
cur->type == XML_XINCLUDE_END)) &&
424 xmlFreeNsList(
cur->nsDef);
429 if ((
cur->type != XML_TEXT_NODE) &&
430 (
cur->type != XML_COMMENT_NODE))
433 if (((
cur->type == XML_ELEMENT_NODE) ||
434 (
cur->type == XML_TEXT_NODE)) &&
436 (
reader->ctxt->freeElemsNr < MAX_FREE_NODES)) {
439 reader->ctxt->freeElemsNr++;
453xmlTextReaderFreeDoc(xmlTextReaderPtr
reader, xmlDocPtr
cur) {
454 xmlDtdPtr extSubset, intSubset;
468 extSubset =
cur->extSubset;
469 intSubset =
cur->intSubset;
470 if (intSubset == extSubset)
472 if (extSubset !=
NULL) {
473 xmlUnlinkNode((xmlNodePtr)
cur->extSubset);
475 xmlFreeDtd(extSubset);
477 if (intSubset !=
NULL) {
478 xmlUnlinkNode((xmlNodePtr)
cur->intSubset);
480 xmlFreeDtd(intSubset);
483 if (
cur->children !=
NULL) xmlTextReaderFreeNodeList(
reader,
cur->children);
488 if (
cur->oldNs !=
NULL) xmlFreeNsList(
cur->oldNs);
511xmlTextReaderEntPush(xmlTextReaderPtr
reader, xmlNodePtr
value)
514 size_t newSize =
reader->entMax == 0 ? 10 :
reader->entMax * 2;
518 newSize *
sizeof(*tmp));
540xmlTextReaderEntPop(xmlTextReaderPtr
reader)
567 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr)
ctx;
568 xmlTextReaderPtr
reader = ctxt->_private;
572 if ((ctxt->node !=
NULL) && (ctxt->input !=
NULL) &&
573 (ctxt->input->cur !=
NULL) && (ctxt->input->cur[0] ==
'/') &&
574 (ctxt->input->cur[1] ==
'>'))
575 ctxt->node->extra = NODE_IS_EMPTY;
578 reader->state = XML_TEXTREADER_ELEMENT;
590 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr)
ctx;
591 xmlTextReaderPtr
reader = ctxt->_private;
614xmlTextReaderStartElementNs(
void *
ctx,
624 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr)
ctx;
625 xmlTextReaderPtr
reader = ctxt->_private;
629 namespaces, nb_attributes, nb_defaulted,
631 if ((ctxt->node !=
NULL) && (ctxt->input !=
NULL) &&
632 (ctxt->input->cur !=
NULL) && (ctxt->input->cur[0] ==
'/') &&
633 (ctxt->input->cur[1] ==
'>'))
634 ctxt->node->extra = NODE_IS_EMPTY;
637 reader->state = XML_TEXTREADER_ELEMENT;
650xmlTextReaderEndElementNs(
void *
ctx,
655 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr)
ctx;
656 xmlTextReaderPtr
reader = ctxt->_private;
675 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr)
ctx;
676 xmlTextReaderPtr
reader = ctxt->_private;
694 xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr)
ctx;
695 xmlTextReaderPtr
reader = ctxt->_private;
712xmlTextReaderPushData(xmlTextReaderPtr
reader) {
715 xmlTextReaderState oldstate;
721 reader->state = XML_TEXTREADER_NONE;
724 while (
reader->state == XML_TEXTREADER_NONE) {
729 if (
reader->mode != XML_TEXTREADER_MODE_EOF) {
733 reader->mode = XML_TEXTREADER_MODE_EOF;
736 }
else if (
val < 0) {
738 "xmlParserInputBufferRead failed\n");
739 reader->mode = XML_TEXTREADER_MODE_EOF;
757 reader->ctxt->wellFormed = 0;
758 if (
reader->ctxt->wellFormed == 0)
767 reader->ctxt->wellFormed = 0;
776 if (
reader->mode == XML_TEXTREADER_MODE_INTERACTIVE) {
778 if ((
reader->cur >= 4096) &&
792 else if (
reader->mode == XML_TEXTREADER_MODE_EOF) {
793 if (
reader->state != XML_TEXTREADER_DONE) {
799 reader->state = XML_TEXTREADER_DONE;
801 if (
reader->ctxt->wellFormed)
802 reader->ctxt->wellFormed = 0;
808 if (
reader->ctxt->wellFormed == 0) {
809 reader->mode = XML_TEXTREADER_MODE_EOF;
816#ifdef LIBXML_REGEXP_ENABLED
827#ifdef LIBXML_VALID_ENABLED
828 if ((
reader->validate == XML_TEXTREADER_VALIDATE_DTD) &&
831 reader->ctxt->valid &= xmlValidatePushElement(&
reader->ctxt->vctxt,
840 reader->ctxt->valid &= xmlValidatePushElement(&
reader->ctxt->vctxt,
847#ifdef LIBXML_SCHEMAS_ENABLED
848 if ((
reader->validate == XML_TEXTREADER_VALIDATE_RNG) &&
853 ret = xmlRelaxNGValidatePushElement(
reader->rngValidCtxt,
864 ret = xmlRelaxNGValidateFullElement(
reader->rngValidCtxt,
885xmlTextReaderValidateCData(xmlTextReaderPtr
reader,
887#ifdef LIBXML_VALID_ENABLED
888 if ((
reader->validate == XML_TEXTREADER_VALIDATE_DTD) &&
890 reader->ctxt->valid &= xmlValidatePushCData(&
reader->ctxt->vctxt,
894#ifdef LIBXML_SCHEMAS_ENABLED
895 if ((
reader->validate == XML_TEXTREADER_VALIDATE_RNG) &&
914xmlTextReaderValidatePop(xmlTextReaderPtr
reader) {
917#ifdef LIBXML_VALID_ENABLED
918 if ((
reader->validate == XML_TEXTREADER_VALIDATE_DTD) &&
921 reader->ctxt->valid &= xmlValidatePopElement(&
reader->ctxt->vctxt,
930 reader->ctxt->valid &= xmlValidatePopElement(&
reader->ctxt->vctxt,
937#ifdef LIBXML_SCHEMAS_ENABLED
938 if ((
reader->validate == XML_TEXTREADER_VALIDATE_RNG) &&
947 ret = xmlRelaxNGValidatePopElement(
reader->rngValidCtxt,
965xmlTextReaderValidateEntity(xmlTextReaderPtr
reader) {
966 xmlNodePtr oldnode =
reader->node;
970 if (
node->type == XML_ENTITY_REF_NODE) {
972 (
node->children->type == XML_ENTITY_DECL) &&
973 (
node->children->children !=
NULL)) {
989#ifdef LIBXML_REGEXP_ENABLED
990 }
else if (
node->type == XML_ELEMENT_NODE) {
992 xmlTextReaderValidatePush(
reader);
993 }
else if ((
node->type == XML_TEXT_NODE) ||
994 (
node->type == XML_CDATA_SECTION_NODE)) {
995 xmlTextReaderValidateCData(
reader,
node->content,
1006 }
else if (
node->type == XML_ELEMENT_NODE) {
1007 xmlTextReaderValidatePop(
reader);
1016 if (
node->type == XML_ELEMENT_NODE) {
1018 if (
reader->entNr == 0) {
1019 while ((tmp =
node->last) !=
NULL) {
1020 if ((tmp->extra & NODE_IS_PRESERVED) == 0) {
1022 xmlTextReaderFreeNode(
reader, tmp);
1028 xmlTextReaderValidatePop(
reader);
1030 if ((
node->type == XML_ENTITY_DECL) &&
1034 if (
node == oldnode)
1056xmlTextReaderGetSuccessor(xmlNodePtr
cur) {
1079xmlTextReaderDoExpand(xmlTextReaderPtr
reader) {
1087 if (xmlTextReaderGetSuccessor(
reader->node) !=
NULL)
1091 if (
reader->mode == XML_TEXTREADER_MODE_EOF)
1095 reader->mode = XML_TEXTREADER_MODE_ERROR;
1098 }
while(
reader->mode != XML_TEXTREADER_MODE_EOF);
1113xmlTextReaderCollectSiblings(xmlNodePtr
node)
1118 if ((
node ==
NULL) || (
node->type == XML_NAMESPACE_DECL))
1121 buffer = xmlBufferCreate();
1124 xmlBufferSetAllocationScheme(
buffer, XML_BUFFER_ALLOC_DOUBLEIT);
1127 switch (
node->type) {
1129 case XML_CDATA_SECTION_NODE:
1132 case XML_ELEMENT_NODE: {
1135 tmp = xmlTextReaderCollectSiblings(
node->children);
1136 xmlBufferCat(
buffer, tmp);
1161xmlTextReaderRead(xmlTextReaderPtr
reader) {
1162 int val, olddepth = 0;
1163 xmlTextReaderState oldstate = XML_TEXTREADER_START;
1164 xmlNodePtr oldnode =
NULL;
1171 return(xmlTextReaderReadTree(
reader));
1175 if (
reader->mode == XML_TEXTREADER_MODE_INITIAL) {
1176 reader->mode = XML_TEXTREADER_MODE_INTERACTIVE;
1183 reader->mode = XML_TEXTREADER_MODE_ERROR;
1184 reader->state = XML_TEXTREADER_ERROR;
1188 ((
reader->mode != XML_TEXTREADER_MODE_EOF) &&
1189 (
reader->state != XML_TEXTREADER_DONE)));
1195 reader->mode = XML_TEXTREADER_MODE_ERROR;
1196 reader->state = XML_TEXTREADER_ERROR;
1199 reader->state = XML_TEXTREADER_ELEMENT;
1206 reader->state = XML_TEXTREADER_ELEMENT;
1212 oldstate =
reader->state;
1213 olddepth =
reader->ctxt->nodeNr;
1218 if (
reader->mode == XML_TEXTREADER_MODE_EOF)
1230 (
reader->ctxt->nodeNr == olddepth) &&
1231 ((oldstate == XML_TEXTREADER_BACKTRACK) ||
1233 (
reader->node->type == XML_ENTITY_REF_NODE) ||
1235 (
reader->node->children->type == XML_TEXT_NODE) &&
1237 (
reader->node->type == XML_DTD_NODE) ||
1238 (
reader->node->type == XML_DOCUMENT_NODE) ||
1239 (
reader->node->type == XML_HTML_DOCUMENT_NODE)) &&
1246 reader->mode = XML_TEXTREADER_MODE_ERROR;
1247 reader->state = XML_TEXTREADER_ERROR;
1253 if (oldstate != XML_TEXTREADER_BACKTRACK) {
1255 (
reader->node->type != XML_ENTITY_REF_NODE) &&
1256 (
reader->node->type != XML_XINCLUDE_START) &&
1257 (
reader->node->type != XML_DTD_NODE)) {
1260 reader->state = XML_TEXTREADER_ELEMENT;
1265 if ((oldstate == XML_TEXTREADER_ELEMENT) &&
1266 (
reader->node->type == XML_ELEMENT_NODE) &&
1268 ((
reader->node->extra & NODE_IS_EMPTY) == 0)
1270 && (
reader->in_xinclude <= 0)
1273 reader->state = XML_TEXTREADER_END;
1276#ifdef LIBXML_REGEXP_ENABLED
1277 if ((
reader->validate) &&
1278 (
reader->node->type == XML_ELEMENT_NODE))
1279 xmlTextReaderValidatePop(
reader);
1281 if ((
reader->preserves > 0) &&
1282 (
reader->node->extra & NODE_IS_SPRESERVED))
1285 reader->state = XML_TEXTREADER_ELEMENT;
1290 if ((
reader->preserves == 0) &&
1292 (
reader->in_xinclude == 0) &&
1296 (
reader->node->prev->type != XML_DTD_NODE)) {
1297 xmlNodePtr tmp =
reader->node->prev;
1298 if ((tmp->extra & NODE_IS_PRESERVED) == 0) {
1302 xmlTextReaderFreeNode(
reader, tmp);
1308 if ((oldstate == XML_TEXTREADER_ELEMENT) &&
1309 (
reader->node->type == XML_ELEMENT_NODE) &&
1311 ((
reader->node->extra & NODE_IS_EMPTY) == 0)) {;
1312 reader->state = XML_TEXTREADER_END;
1315#ifdef LIBXML_REGEXP_ENABLED
1316 if ((
reader->validate != XML_TEXTREADER_NOT_VALIDATE) && (
reader->node->type == XML_ELEMENT_NODE))
1317 xmlTextReaderValidatePop(
reader);
1319 if ((
reader->preserves > 0) &&
1320 (
reader->node->extra & NODE_IS_SPRESERVED))
1324 (
reader->node->type == XML_DOCUMENT_NODE) ||
1325 (
reader->node->type == XML_HTML_DOCUMENT_NODE)) {
1326 if (
reader->mode != XML_TEXTREADER_MODE_EOF) {
1327 val = xmlParseChunk(
reader->ctxt,
"", 0, 1);
1328 reader->state = XML_TEXTREADER_DONE;
1338 if ((oldnode !=
NULL) && (
reader->preserves == 0) &&
1340 (
reader->in_xinclude == 0) &&
1343 (oldnode->type != XML_DTD_NODE) &&
1344 ((oldnode->extra & NODE_IS_PRESERVED) == 0)) {
1345 xmlUnlinkNode(oldnode);
1346 xmlTextReaderFreeNode(
reader, oldnode);
1351 if ((
reader->preserves == 0) &&
1353 (
reader->in_xinclude == 0) &&
1357 ((
reader->node->last->extra & NODE_IS_PRESERVED) == 0)) {
1358 xmlNodePtr tmp =
reader->node->last;
1360 xmlTextReaderFreeNode(
reader, tmp);
1363 reader->state = XML_TEXTREADER_BACKTRACK;
1371 ((
reader->node->type == XML_TEXT_NODE) ||
1372 (
reader->node->type == XML_CDATA_SECTION_NODE))) {
1377#ifdef LIBXML_XINCLUDE_ENABLED
1381 if ((
reader->xinclude) && (
reader->in_xinclude == 0) &&
1382 (
reader->state != XML_TEXTREADER_BACKTRACK) &&
1384 (
reader->node->type == XML_ELEMENT_NODE) &&
1389 reader->xincctxt = xmlXIncludeNewContext(
reader->ctxt->myDoc);
1390 xmlXIncludeSetFlags(
reader->xincctxt,
1399 xmlXIncludeProcessNode(
reader->xincctxt,
reader->node);
1401 if ((
reader->node !=
NULL) && (
reader->node->type == XML_XINCLUDE_START)) {
1414 (
reader->node->type == XML_ENTITY_REF_NODE) &&
1417 (
reader->node->children->type == XML_ENTITY_DECL) &&
1418 (
reader->node->children->children !=
NULL)) {
1423#ifdef LIBXML_REGEXP_ENABLED
1425 (
reader->node->type == XML_ENTITY_REF_NODE) &&
1427 xmlTextReaderValidateEntity(
reader);
1431 (
reader->node->type == XML_ENTITY_DECL) &&
1437#ifdef LIBXML_REGEXP_ENABLED
1438 if ((
reader->validate != XML_TEXTREADER_NOT_VALIDATE) && (
reader->node !=
NULL)) {
1441 if ((
node->type == XML_ELEMENT_NODE) &&
1442 ((
reader->state != XML_TEXTREADER_END) &&
1443 (
reader->state != XML_TEXTREADER_BACKTRACK))) {
1444 xmlTextReaderValidatePush(
reader);
1445 }
else if ((
node->type == XML_TEXT_NODE) ||
1446 (
node->type == XML_CDATA_SECTION_NODE)) {
1447 xmlTextReaderValidateCData(
reader,
node->content,
1452#ifdef LIBXML_PATTERN_ENABLED
1453 if ((
reader->patternNr > 0) && (
reader->state != XML_TEXTREADER_END) &&
1454 (
reader->state != XML_TEXTREADER_BACKTRACK)) {
1457 if (xmlPatternMatch(
reader->patternTab[
i],
reader->node) == 1) {
1458 xmlTextReaderPreserve(
reader);
1464#ifdef LIBXML_SCHEMAS_ENABLED
1465 if ((
reader->validate == XML_TEXTREADER_VALIDATE_XSD) &&
1466 (
reader->xsdValidErrors == 0) &&
1468 reader->xsdValidErrors = !xmlSchemaIsValid(
reader->xsdValidCtxt);
1473 reader->state = XML_TEXTREADER_DONE;
1486xmlTextReaderReadState(xmlTextReaderPtr
reader) {
1503xmlTextReaderExpand(xmlTextReaderPtr
reader) {
1510 if (xmlTextReaderDoExpand(
reader) < 0)
1526xmlTextReaderNext(xmlTextReaderPtr
reader) {
1533 return(xmlTextReaderNextTree(
reader));
1535 if ((
cur ==
NULL) || (
cur->type != XML_ELEMENT_NODE))
1536 return(xmlTextReaderRead(
reader));
1537 if (
reader->state == XML_TEXTREADER_END ||
reader->state == XML_TEXTREADER_BACKTRACK)
1538 return(xmlTextReaderRead(
reader));
1539 if (
cur->extra & NODE_IS_EMPTY)
1540 return(xmlTextReaderRead(
reader));
1546 return(xmlTextReaderRead(
reader));
1549#ifdef LIBXML_WRITER_ENABLED
1564 xmlNodePtr
node, cur_node;
1565 xmlBufferPtr
buff, buff2;
1572 buff = xmlBufferCreate();
1575 xmlBufferSetAllocationScheme(
buff, XML_BUFFER_ALLOC_DOUBLEIT);
1576 for (cur_node =
reader->node->children; cur_node !=
NULL;
1577 cur_node = cur_node->
next) {
1579 node = xmlDocCopyNode(cur_node, doc, 1);
1581 buff2 = xmlBufferCreate();
1582 xmlBufferSetAllocationScheme(buff2, XML_BUFFER_ALLOC_DOUBLEIT);
1583 if (xmlNodeDump(buff2, doc,
node, 0, 0) == -1) {
1585 xmlBufferFree(buff2);
1586 xmlBufferFree(
buff);
1589 xmlBufferCat(
buff, buff2->content);
1591 xmlBufferFree(buff2);
1593 resbuf =
buff->content;
1596 xmlBufferFree(
buff);
1601#ifdef LIBXML_WRITER_ENABLED
1626 if (
node->type == XML_DTD_NODE) {
1627 node = (xmlNodePtr) xmlCopyDtd((xmlDtdPtr)
node);
1629 node = xmlDocCopyNode(
node, doc, 1);
1631 buff = xmlBufferCreate();
1632 xmlBufferSetAllocationScheme(
buff, XML_BUFFER_ALLOC_DOUBLEIT);
1633 if (xmlNodeDump(
buff, doc,
node, 0, 0) == -1) {
1635 xmlBufferFree(
buff);
1639 resbuf =
buff->content;
1643 xmlBufferFree(
buff);
1659xmlTextReaderReadString(xmlTextReaderPtr
reader)
1672 case XML_ELEMENT_NODE:
1673 if (xmlTextReaderDoExpand(
reader) != -1) {
1674 return xmlTextReaderCollectSiblings(
node->children);
1677 case XML_ATTRIBUTE_NODE:
1702xmlTextReaderReadBase64(xmlTextReaderPtr
reader,
1708 if (
reader->ctxt->wellFormed != 1)
1732xmlTextReaderReadBinHex(xmlTextReaderPtr
reader,
1738 if (
reader->ctxt->wellFormed != 1)
1754xmlTextReaderNextTree(xmlTextReaderPtr
reader)
1759 if (
reader->state == XML_TEXTREADER_END)
1764 reader->state = XML_TEXTREADER_END;
1769 reader->state = XML_TEXTREADER_START;
1773 if (
reader->state != XML_TEXTREADER_BACKTRACK) {
1776 if (
reader->node->next != 0) {
1779 reader->state = XML_TEXTREADER_START;
1785 reader->state = XML_TEXTREADER_BACKTRACK;
1787 xmlTextReaderRead(
reader);
1790 if (
reader->node->next != 0) {
1792 reader->state = XML_TEXTREADER_START;
1796 if (
reader->node->parent != 0) {
1797 if (
reader->node->parent->type == XML_DOCUMENT_NODE) {
1798 reader->state = XML_TEXTREADER_END;
1804 reader->state = XML_TEXTREADER_BACKTRACK;
1806 xmlTextReaderNextTree(
reader);
1809 reader->state = XML_TEXTREADER_END;
1825xmlTextReaderReadTree(xmlTextReaderPtr
reader) {
1826 if (
reader->state == XML_TEXTREADER_END)
1832 reader->state = XML_TEXTREADER_END;
1837 reader->state = XML_TEXTREADER_START;
1841 if ((
reader->state != XML_TEXTREADER_BACKTRACK) &&
1842 (
reader->node->type != XML_DTD_NODE) &&
1843 (
reader->node->type != XML_XINCLUDE_START) &&
1844 (
reader->node->type != XML_ENTITY_REF_NODE)) {
1848 reader->state = XML_TEXTREADER_START;
1852 if (
reader->node->type == XML_ATTRIBUTE_NODE) {
1853 reader->state = XML_TEXTREADER_BACKTRACK;
1860 reader->state = XML_TEXTREADER_START;
1865 if ((
reader->node->parent->type == XML_DOCUMENT_NODE) ||
1866 (
reader->node->parent->type == XML_HTML_DOCUMENT_NODE)) {
1867 reader->state = XML_TEXTREADER_END;
1873 reader->state = XML_TEXTREADER_BACKTRACK;
1877 reader->state = XML_TEXTREADER_END;
1880 if ((
reader->node->type == XML_XINCLUDE_START) ||
1881 (
reader->node->type == XML_XINCLUDE_END))
1899xmlTextReaderNextSibling(xmlTextReaderPtr
reader) {
1907 if (
reader->state == XML_TEXTREADER_END)
1911 return(xmlTextReaderNextTree(
reader));
1915 reader->state = XML_TEXTREADER_START;
1937xmlNewTextReader(xmlParserInputBufferPtr
input,
const char *URI) {
1938 xmlTextReaderPtr
ret;
1945 "xmlNewTextReader : malloc failed\n");
1958 "xmlNewTextReader : malloc failed\n");
1963 XML_BUFFER_ALLOC_DOUBLEIT);
1964 ret->sax = (xmlSAXHandler *)
xmlMalloc(
sizeof(xmlSAXHandler));
1969 "xmlNewTextReader : malloc failed\n");
1973 ret->startElement =
ret->sax->startElement;
1974 ret->sax->startElement = xmlTextReaderStartElement;
1975 ret->endElement =
ret->sax->endElement;
1976 ret->sax->endElement = xmlTextReaderEndElement;
1977#ifdef LIBXML_SAX1_ENABLED
1980 ret->startElementNs =
ret->sax->startElementNs;
1981 ret->sax->startElementNs = xmlTextReaderStartElementNs;
1982 ret->endElementNs =
ret->sax->endElementNs;
1983 ret->sax->endElementNs = xmlTextReaderEndElementNs;
1984#ifdef LIBXML_SAX1_ENABLED
1990 ret->characters =
ret->sax->characters;
1991 ret->sax->characters = xmlTextReaderCharacters;
1992 ret->sax->ignorableWhitespace = xmlTextReaderCharacters;
1993 ret->cdataBlock =
ret->sax->cdataBlock;
1994 ret->sax->cdataBlock = xmlTextReaderCDataBlock;
1996 ret->mode = XML_TEXTREADER_MODE_INITIAL;
2003 ret->ctxt = xmlCreatePushParserCtxt(
ret->sax,
NULL,
2009 ret->ctxt = xmlCreatePushParserCtxt(
ret->sax,
NULL,
NULL, 0, URI);
2016 "xmlNewTextReader : malloc failed\n");
2023 ret->ctxt->_private =
ret;
2024 ret->ctxt->linenumbers = 1;
2025 ret->ctxt->dictNames = 1;
2026 ret->allocs = XML_TEXTREADER_CTXT;
2030 ret->ctxt->docdict = 1;
2031 ret->dict =
ret->ctxt->dict;
2032#ifdef LIBXML_XINCLUDE_ENABLED
2035#ifdef LIBXML_PATTERN_ENABLED
2036 ret->patternMax = 0;
2051xmlNewTextReaderFilename(
const char *URI) {
2052 xmlParserInputBufferPtr
input;
2053 xmlTextReaderPtr
ret;
2059 ret = xmlNewTextReader(
input, URI);
2064 ret->allocs |= XML_TEXTREADER_INPUT;
2065 if (
ret->ctxt->directory ==
NULL)
2081xmlFreeTextReader(xmlTextReaderPtr
reader) {
2084#ifdef LIBXML_SCHEMAS_ENABLED
2086 xmlRelaxNGFree(
reader->rngSchemas);
2090 if (!
reader->rngPreserveCtxt)
2091 xmlRelaxNGFreeValidCtxt(
reader->rngValidCtxt);
2095 xmlSchemaSAXUnplug(
reader->xsdPlug);
2099 if (!
reader->xsdPreserveCtxt)
2100 xmlSchemaFreeValidCtxt(
reader->xsdValidCtxt);
2104 xmlSchemaFree(
reader->xsdSchemas);
2108#ifdef LIBXML_XINCLUDE_ENABLED
2110 xmlXIncludeFreeContext(
reader->xincctxt);
2112#ifdef LIBXML_PATTERN_ENABLED
2117 xmlFreePattern(
reader->patternTab[
i]);
2122 if (
reader->mode != XML_TEXTREADER_MODE_CLOSED)
2123 xmlTextReaderClose(
reader);
2127 if (
reader->allocs & XML_TEXTREADER_CTXT)
2156xmlTextReaderClose(xmlTextReaderPtr
reader) {
2161 reader->mode = XML_TEXTREADER_MODE_CLOSED;
2163 xmlFreeNode(
reader->faketext);
2167#ifdef LIBXML_VALID_ENABLED
2168 if ((
reader->ctxt->vctxt.vstateTab !=
NULL) &&
2169 (
reader->ctxt->vctxt.vstateMax > 0)){
2170#ifdef LIBXML_REGEXP_ENABLED
2171 while (
reader->ctxt->vctxt.vstateNr > 0)
2176 reader->ctxt->vctxt.vstateMax = 0;
2181 if (
reader->preserve == 0)
2188 reader->allocs -= XML_TEXTREADER_INPUT;
2205xmlTextReaderGetAttributeNo(xmlTextReaderPtr
reader,
int no) {
2218 if (
reader->node->type != XML_ELEMENT_NODE)
2238 ret = xmlNodeListGetString(
reader->node->doc,
cur->children, 1);
2268 if (
reader->node->type != XML_ELEMENT_NODE)
2272 if (localname ==
NULL) {
2304 ret = xmlGetNsProp(
reader->node, localname,
ns->href);
2326xmlTextReaderGetAttributeNs(xmlTextReaderPtr
reader,
const xmlChar *localName,
2327 const xmlChar *namespaceURI) {
2339 if (
reader->node->type != XML_ELEMENT_NODE)
2357 return(xmlGetNsProp(
reader->node, localName, namespaceURI));
2375xmlParserInputBufferPtr
2376xmlTextReaderGetRemainder(xmlTextReaderPtr
reader) {
2377 xmlParserInputBufferPtr
ret =
NULL;
2386 reader->mode = XML_TEXTREADER_MODE_EOF;
2390 if (
reader->preserve == 0)
2395 if (
reader->allocs & XML_TEXTREADER_INPUT) {
2398 reader->allocs -= XML_TEXTREADER_INPUT;
2450xmlTextReaderMoveToAttributeNo(xmlTextReaderPtr
reader,
int no) {
2460 if (
reader->node->type != XML_ELEMENT_NODE)
2511 if (
reader->node->type != XML_ELEMENT_NODE)
2515 if (localname ==
NULL) {
2531 prop =
reader->node->properties;
2532 while (prop !=
NULL) {
2539 ((prop->ns ==
NULL) || (prop->ns->prefix ==
NULL))) {
2540 reader->curnode = (xmlNodePtr) prop;
2562 prop =
reader->node->properties;
2563 while (prop !=
NULL) {
2571 reader->curnode = (xmlNodePtr) prop;
2577 if (localname !=
NULL)
2584 if (localname !=
NULL)
2603xmlTextReaderMoveToAttributeNs(xmlTextReaderPtr
reader,
2614 if (
reader->node->type != XML_ELEMENT_NODE)
2634 prop =
node->properties;
2635 while (prop !=
NULL) {
2642 ((prop->ns !=
NULL) &&
2644 reader->curnode = (xmlNodePtr) prop;
2662xmlTextReaderMoveToFirstAttribute(xmlTextReaderPtr
reader) {
2667 if (
reader->node->type != XML_ELEMENT_NODE)
2675 reader->curnode = (xmlNodePtr)
reader->node->properties;
2691xmlTextReaderMoveToNextAttribute(xmlTextReaderPtr
reader) {
2696 if (
reader->node->type != XML_ELEMENT_NODE)
2699 return(xmlTextReaderMoveToFirstAttribute(
reader));
2701 if (
reader->curnode->type == XML_NAMESPACE_DECL) {
2702 xmlNsPtr
ns = (xmlNsPtr)
reader->curnode;
2704 reader->curnode = (xmlNodePtr)
ns->next;
2708 reader->curnode = (xmlNodePtr)
reader->node->properties;
2712 }
else if ((
reader->curnode->type == XML_ATTRIBUTE_NODE) &&
2730xmlTextReaderMoveToElement(xmlTextReaderPtr
reader) {
2735 if (
reader->node->type != XML_ELEMENT_NODE)
2755xmlTextReaderReadAttributeValue(xmlTextReaderPtr
reader) {
2762 if (
reader->curnode->type == XML_ATTRIBUTE_NODE) {
2766 }
else if (
reader->curnode->type == XML_NAMESPACE_DECL) {
2767 xmlNsPtr
ns = (xmlNsPtr)
reader->curnode;
2774 (
reader->faketext->content !=
2798xmlTextReaderConstEncoding(xmlTextReaderPtr
reader) {
2807 encoding =
reader->doc->encoding;
2809 return(CONSTSTR(encoding));
2827xmlTextReaderAttributeCount(xmlTextReaderPtr
reader) {
2843 if (
node->type != XML_ELEMENT_NODE)
2845 if ((
reader->state == XML_TEXTREADER_END) ||
2846 (
reader->state == XML_TEXTREADER_BACKTRACK))
2873xmlTextReaderNodeType(xmlTextReaderPtr
reader) {
2879 return(XML_READER_TYPE_NONE);
2884 switch (
node->type) {
2885 case XML_ELEMENT_NODE:
2886 if ((
reader->state == XML_TEXTREADER_END) ||
2887 (
reader->state == XML_TEXTREADER_BACKTRACK))
2888 return(XML_READER_TYPE_END_ELEMENT);
2889 return(XML_READER_TYPE_ELEMENT);
2890 case XML_NAMESPACE_DECL:
2891 case XML_ATTRIBUTE_NODE:
2892 return(XML_READER_TYPE_ATTRIBUTE);
2894 if (xmlIsBlankNode(
reader->node)) {
2895 if (xmlNodeGetSpacePreserve(
reader->node))
2896 return(XML_READER_TYPE_SIGNIFICANT_WHITESPACE);
2898 return(XML_READER_TYPE_WHITESPACE);
2900 return(XML_READER_TYPE_TEXT);
2902 case XML_CDATA_SECTION_NODE:
2903 return(XML_READER_TYPE_CDATA);
2904 case XML_ENTITY_REF_NODE:
2905 return(XML_READER_TYPE_ENTITY_REFERENCE);
2906 case XML_ENTITY_NODE:
2907 return(XML_READER_TYPE_ENTITY);
2909 return(XML_READER_TYPE_PROCESSING_INSTRUCTION);
2910 case XML_COMMENT_NODE:
2911 return(XML_READER_TYPE_COMMENT);
2912 case XML_DOCUMENT_NODE:
2913 case XML_HTML_DOCUMENT_NODE:
2914 return(XML_READER_TYPE_DOCUMENT);
2915 case XML_DOCUMENT_FRAG_NODE:
2916 return(XML_READER_TYPE_DOCUMENT_FRAGMENT);
2917 case XML_NOTATION_NODE:
2918 return(XML_READER_TYPE_NOTATION);
2919 case XML_DOCUMENT_TYPE_NODE:
2921 return(XML_READER_TYPE_DOCUMENT_TYPE);
2923 case XML_ELEMENT_DECL:
2924 case XML_ATTRIBUTE_DECL:
2925 case XML_ENTITY_DECL:
2926 case XML_XINCLUDE_START:
2927 case XML_XINCLUDE_END:
2928 return(XML_READER_TYPE_NONE);
2942xmlTextReaderIsEmptyElement(xmlTextReaderPtr
reader) {
2945 if (
reader->node->type != XML_ELEMENT_NODE)
2951 if (
reader->state == XML_TEXTREADER_END)
2955#ifdef LIBXML_XINCLUDE_ENABLED
2956 if (
reader->in_xinclude > 0)
2959 return((
reader->node->extra & NODE_IS_EMPTY) != 0);
2972xmlTextReaderLocalName(xmlTextReaderPtr
reader) {
2980 if (
node->type == XML_NAMESPACE_DECL) {
2981 xmlNsPtr
ns = (xmlNsPtr)
node;
2987 if ((
node->type != XML_ELEMENT_NODE) &&
2988 (
node->type != XML_ATTRIBUTE_NODE))
2989 return(xmlTextReaderName(
reader));
3003xmlTextReaderConstLocalName(xmlTextReaderPtr
reader) {
3011 if (
node->type == XML_NAMESPACE_DECL) {
3012 xmlNsPtr
ns = (xmlNsPtr)
node;
3014 return(CONSTSTR(
BAD_CAST "xmlns"));
3018 if ((
node->type != XML_ELEMENT_NODE) &&
3019 (
node->type != XML_ATTRIBUTE_NODE))
3020 return(xmlTextReaderConstName(
reader));
3034xmlTextReaderName(xmlTextReaderPtr
reader) {
3044 switch (
node->type) {
3045 case XML_ELEMENT_NODE:
3046 case XML_ATTRIBUTE_NODE:
3057 case XML_CDATA_SECTION_NODE:
3059 case XML_ENTITY_NODE:
3060 case XML_ENTITY_REF_NODE:
3064 case XML_COMMENT_NODE:
3066 case XML_DOCUMENT_NODE:
3067 case XML_HTML_DOCUMENT_NODE:
3069 case XML_DOCUMENT_FRAG_NODE:
3071 case XML_NOTATION_NODE:
3073 case XML_DOCUMENT_TYPE_NODE:
3076 case XML_NAMESPACE_DECL: {
3077 xmlNsPtr
ns = (xmlNsPtr)
node;
3087 case XML_ELEMENT_DECL:
3088 case XML_ATTRIBUTE_DECL:
3089 case XML_ENTITY_DECL:
3090 case XML_XINCLUDE_START:
3091 case XML_XINCLUDE_END:
3107xmlTextReaderConstName(xmlTextReaderPtr
reader) {
3116 switch (
node->type) {
3117 case XML_ELEMENT_NODE:
3118 case XML_ATTRIBUTE_NODE:
3122 return(CONSTQSTR(
node->ns->prefix,
node->name));
3124 return(CONSTSTR(
BAD_CAST "#text"));
3125 case XML_CDATA_SECTION_NODE:
3126 return(CONSTSTR(
BAD_CAST "#cdata-section"));
3127 case XML_ENTITY_NODE:
3128 case XML_ENTITY_REF_NODE:
3129 return(CONSTSTR(
node->name));
3131 return(CONSTSTR(
node->name));
3132 case XML_COMMENT_NODE:
3133 return(CONSTSTR(
BAD_CAST "#comment"));
3134 case XML_DOCUMENT_NODE:
3135 case XML_HTML_DOCUMENT_NODE:
3136 return(CONSTSTR(
BAD_CAST "#document"));
3137 case XML_DOCUMENT_FRAG_NODE:
3138 return(CONSTSTR(
BAD_CAST "#document-fragment"));
3139 case XML_NOTATION_NODE:
3140 return(CONSTSTR(
node->name));
3141 case XML_DOCUMENT_TYPE_NODE:
3143 return(CONSTSTR(
node->name));
3144 case XML_NAMESPACE_DECL: {
3145 xmlNsPtr
ns = (xmlNsPtr)
node;
3148 return(CONSTSTR(
BAD_CAST "xmlns"));
3152 case XML_ELEMENT_DECL:
3153 case XML_ATTRIBUTE_DECL:
3154 case XML_ENTITY_DECL:
3155 case XML_XINCLUDE_START:
3156 case XML_XINCLUDE_END:
3172xmlTextReaderPrefix(xmlTextReaderPtr
reader) {
3180 if (
node->type == XML_NAMESPACE_DECL) {
3181 xmlNsPtr
ns = (xmlNsPtr)
node;
3186 if ((
node->type != XML_ELEMENT_NODE) &&
3187 (
node->type != XML_ATTRIBUTE_NODE))
3204xmlTextReaderConstPrefix(xmlTextReaderPtr
reader) {
3212 if (
node->type == XML_NAMESPACE_DECL) {
3213 xmlNsPtr
ns = (xmlNsPtr)
node;
3216 return(CONSTSTR(
BAD_CAST "xmlns"));
3218 if ((
node->type != XML_ELEMENT_NODE) &&
3219 (
node->type != XML_ATTRIBUTE_NODE))
3222 return(CONSTSTR(
node->ns->prefix));
3236xmlTextReaderNamespaceUri(xmlTextReaderPtr
reader) {
3244 if (
node->type == XML_NAMESPACE_DECL)
3246 if ((
node->type != XML_ELEMENT_NODE) &&
3247 (
node->type != XML_ATTRIBUTE_NODE))
3264xmlTextReaderConstNamespaceUri(xmlTextReaderPtr
reader) {
3272 if (
node->type == XML_NAMESPACE_DECL)
3273 return(CONSTSTR(
BAD_CAST "http://www.w3.org/2000/xmlns/"));
3274 if ((
node->type != XML_ELEMENT_NODE) &&
3275 (
node->type != XML_ATTRIBUTE_NODE))
3278 return(CONSTSTR(
node->ns->href));
3292xmlTextReaderBaseUri(xmlTextReaderPtr
reader) {
3308xmlTextReaderConstBaseUri(xmlTextReaderPtr
reader) {
3317 ret = CONSTSTR(tmp);
3331xmlTextReaderDepth(xmlTextReaderPtr
reader) {
3338 if ((
reader->curnode->type == XML_ATTRIBUTE_NODE) ||
3339 (
reader->curnode->type == XML_NAMESPACE_DECL))
3340 return(
reader->depth + 1);
3341 return(
reader->depth + 2);
3355xmlTextReaderHasAttributes(xmlTextReaderPtr
reader) {
3366 if ((
node->type == XML_ELEMENT_NODE) &&
3382xmlTextReaderHasValue(xmlTextReaderPtr
reader) {
3393 switch (
node->type) {
3394 case XML_ATTRIBUTE_NODE:
3396 case XML_CDATA_SECTION_NODE:
3398 case XML_COMMENT_NODE:
3399 case XML_NAMESPACE_DECL:
3417xmlTextReaderValue(xmlTextReaderPtr
reader) {
3428 switch (
node->type) {
3429 case XML_NAMESPACE_DECL:
3431 case XML_ATTRIBUTE_NODE:{
3432 xmlAttrPtr
attr = (xmlAttrPtr)
node;
3435 return (xmlNodeListGetString
3436 (
attr->parent->doc,
attr->children, 1));
3438 return (xmlNodeListGetString(
NULL,
attr->children, 1));
3442 case XML_CDATA_SECTION_NODE:
3444 case XML_COMMENT_NODE:
3463xmlTextReaderConstValue(xmlTextReaderPtr
reader) {
3474 switch (
node->type) {
3475 case XML_NAMESPACE_DECL:
3476 return(((xmlNsPtr)
node)->href);
3477 case XML_ATTRIBUTE_NODE:{
3478 xmlAttrPtr
attr = (xmlAttrPtr)
node;
3482 (
attr->children->type == XML_TEXT_NODE) &&
3484 return(
attr->children->content);
3490 "xmlTextReaderSetup : malloc failed\n");
3494 XML_BUFFER_ALLOC_DOUBLEIT);
3504 XML_BUFFER_ALLOC_DOUBLEIT);
3512 case XML_CDATA_SECTION_NODE:
3514 case XML_COMMENT_NODE:
3515 return(
node->content);
3532xmlTextReaderIsDefault(xmlTextReaderPtr
reader) {
3547xmlTextReaderQuoteChar(xmlTextReaderPtr
reader) {
3564xmlTextReaderXmlLang(xmlTextReaderPtr
reader) {
3569 return(xmlNodeGetLang(
reader->node));
3581xmlTextReaderConstXmlLang(xmlTextReaderPtr
reader) {
3589 tmp = xmlNodeGetLang(
reader->node);
3592 ret = CONSTSTR(tmp);
3612 return(CONSTSTR(
str));
3628xmlTextReaderNormalization(xmlTextReaderPtr
reader) {
3653xmlTextReaderSetParserProp(xmlTextReaderPtr
reader,
int prop,
int value) {
3654 xmlParserProperties
p = (xmlParserProperties) prop;
3655 xmlParserCtxtPtr ctxt;
3662 case XML_PARSER_LOADDTD:
3664 if (ctxt->loadsubset == 0) {
3665 if (
reader->mode != XML_TEXTREADER_MODE_INITIAL)
3670 ctxt->loadsubset = 0;
3673 case XML_PARSER_DEFAULTATTRS:
3681 case XML_PARSER_VALIDATE:
3685 reader->validate = XML_TEXTREADER_VALIDATE_DTD;
3687 ctxt->options &= ~XML_PARSE_DTDVALID;
3691 case XML_PARSER_SUBST_ENTITIES:
3694 ctxt->replaceEntities = 1;
3696 ctxt->options &= ~XML_PARSE_NOENT;
3697 ctxt->replaceEntities = 0;
3714xmlTextReaderGetParserProp(xmlTextReaderPtr
reader,
int prop) {
3715 xmlParserProperties
p = (xmlParserProperties) prop;
3716 xmlParserCtxtPtr ctxt;
3723 case XML_PARSER_LOADDTD:
3724 if ((ctxt->loadsubset != 0) || (ctxt->validate != 0))
3727 case XML_PARSER_DEFAULTATTRS:
3731 case XML_PARSER_VALIDATE:
3732 return(
reader->validate);
3733 case XML_PARSER_SUBST_ENTITIES:
3734 return(ctxt->replaceEntities);
3749xmlTextReaderGetParserLineNumber(xmlTextReaderPtr
reader)
3755 return (
reader->ctxt->input->line);
3767xmlTextReaderGetParserColumnNumber(xmlTextReaderPtr
reader)
3773 return (
reader->ctxt->input->col);
3787xmlTextReaderCurrentNode(xmlTextReaderPtr
reader) {
3807xmlTextReaderPreserve(xmlTextReaderPtr
reader) {
3820 if ((
cur->type != XML_DOCUMENT_NODE) && (
cur->type != XML_DTD_NODE)) {
3821 cur->extra |= NODE_IS_PRESERVED;
3822 cur->extra |= NODE_IS_SPRESERVED;
3828 if (
parent->type == XML_ELEMENT_NODE)
3829 parent->extra |= NODE_IS_PRESERVED;
3835#ifdef LIBXML_PATTERN_ENABLED
3857 comp = xmlPatterncompile(
pattern,
reader->dict, 0, namespaces);
3861 if (
reader->patternMax <= 0) {
3864 sizeof(
reader->patternTab[0]));
3875 sizeof(
reader->patternTab[0]));
3881 reader->patternTab = tmp;
3884 return(
reader->patternNr++);
3901xmlTextReaderCurrentDoc(xmlTextReaderPtr
reader) {
3910 return(
reader->ctxt->myDoc);
3913#ifdef LIBXML_SCHEMAS_ENABLED
3929xmlTextReaderValidityErrorRelay(
void *
ctx,
const char *
msg, ...)
3931 xmlTextReaderPtr
reader = (xmlTextReaderPtr)
ctx;
3938 str = xmlTextReaderBuildMessage(
msg,
ap);
3939 if (!
reader->errorFunc) {
3940 xmlTextReaderValidityError(
ctx,
"%s",
str);
3952xmlTextReaderValidityWarningRelay(
void *
ctx,
const char *
msg, ...)
3954 xmlTextReaderPtr
reader = (xmlTextReaderPtr)
ctx;
3961 str = xmlTextReaderBuildMessage(
msg,
ap);
3962 if (!
reader->errorFunc) {
3963 xmlTextReaderValidityWarning(
ctx,
"%s",
str);
3975xmlTextReaderStructuredError(
void *ctxt,
const xmlError *
error);
3978xmlTextReaderValidityStructuredRelay(
void *userData,
const xmlError *
error)
3980 xmlTextReaderPtr
reader = (xmlTextReaderPtr) userData;
3982 if (
reader->sErrorFunc) {
4003xmlTextReaderRelaxNGSetSchema(xmlTextReaderPtr
reader, xmlRelaxNGPtr
schema) {
4008 xmlRelaxNGFree(
reader->rngSchemas);
4012 if (!
reader->rngPreserveCtxt)
4013 xmlRelaxNGFreeValidCtxt(
reader->rngValidCtxt);
4016 reader->rngPreserveCtxt = 0;
4019 if (
reader->mode != XML_TEXTREADER_MODE_INITIAL)
4022 xmlRelaxNGFree(
reader->rngSchemas);
4026 if (!
reader->rngPreserveCtxt)
4027 xmlRelaxNGFreeValidCtxt(
reader->rngValidCtxt);
4030 reader->rngPreserveCtxt = 0;
4035 xmlRelaxNGSetValidErrors(
reader->rngValidCtxt,
4036 xmlTextReaderValidityErrorRelay,
4037 xmlTextReaderValidityWarningRelay,
4041 xmlRelaxNGSetValidStructuredErrors(
reader->rngValidCtxt,
4042 xmlTextReaderValidityStructuredRelay,
4045 reader->rngValidErrors = 0;
4047 reader->validate = XML_TEXTREADER_VALIDATE_RNG;
4063xmlTextReaderLocator(
void *
ctx,
const char **
file,
unsigned long *
line) {
4094 xmlDocPtr doc =
reader->node->doc;
4095 if ((doc !=
NULL) && (doc->URL !=
NULL))
4096 *
file = (
const char *) doc->URL;
4120xmlTextReaderSetSchema(xmlTextReaderPtr
reader, xmlSchemaPtr
schema) {
4125 xmlSchemaSAXUnplug(
reader->xsdPlug);
4129 if (!
reader->xsdPreserveCtxt)
4130 xmlSchemaFreeValidCtxt(
reader->xsdValidCtxt);
4133 reader->xsdPreserveCtxt = 0;
4135 xmlSchemaFree(
reader->xsdSchemas);
4140 if (
reader->mode != XML_TEXTREADER_MODE_INITIAL)
4143 xmlSchemaSAXUnplug(
reader->xsdPlug);
4147 if (!
reader->xsdPreserveCtxt)
4148 xmlSchemaFreeValidCtxt(
reader->xsdValidCtxt);
4151 reader->xsdPreserveCtxt = 0;
4153 xmlSchemaFree(
reader->xsdSchemas);
4158 xmlSchemaFree(
reader->xsdSchemas);
4162 reader->xsdPlug = xmlSchemaSAXPlug(
reader->xsdValidCtxt,
4164 &(
reader->ctxt->userData));
4166 xmlSchemaFree(
reader->xsdSchemas);
4168 xmlSchemaFreeValidCtxt(
reader->xsdValidCtxt);
4172 xmlSchemaValidateSetLocator(
reader->xsdValidCtxt,
4173 xmlTextReaderLocator,
4177 xmlSchemaSetValidErrors(
reader->xsdValidCtxt,
4178 xmlTextReaderValidityErrorRelay,
4179 xmlTextReaderValidityWarningRelay,
4183 xmlSchemaSetValidStructuredErrors(
reader->xsdValidCtxt,
4184 xmlTextReaderValidityStructuredRelay,
4187 reader->xsdValidErrors = 0;
4188 reader->validate = XML_TEXTREADER_VALIDATE_XSD;
4207xmlTextReaderRelaxNGValidateInternal(xmlTextReaderPtr
reader,
4209 xmlRelaxNGValidCtxtPtr ctxt,
4215 if ((rng !=
NULL) && (ctxt !=
NULL))
4218 if (((rng !=
NULL) || (ctxt !=
NULL)) &&
4219 ((
reader->mode != XML_TEXTREADER_MODE_INITIAL) ||
4225 if ( !
reader->rngPreserveCtxt)
4226 xmlRelaxNGFreeValidCtxt(
reader->rngValidCtxt);
4229 reader->rngPreserveCtxt = 0;
4231 xmlRelaxNGFree(
reader->rngSchemas);
4235 if ((rng ==
NULL) && (ctxt ==
NULL)) {
4242 xmlRelaxNGParserCtxtPtr pctxt;
4245 pctxt = xmlRelaxNGNewParserCtxt(rng);
4247 xmlRelaxNGSetParserErrors(pctxt,
4248 xmlTextReaderValidityErrorRelay,
4249 xmlTextReaderValidityWarningRelay,
4253 xmlRelaxNGSetValidStructuredErrors(
reader->rngValidCtxt,
4254 xmlTextReaderValidityStructuredRelay,
4257 reader->rngSchemas = xmlRelaxNGParse(pctxt);
4258 xmlRelaxNGFreeParserCtxt(pctxt);
4261 reader->rngValidCtxt = xmlRelaxNGNewValidCtxt(
reader->rngSchemas);
4263 xmlRelaxNGFree(
reader->rngSchemas);
4269 reader->rngValidCtxt = ctxt;
4270 reader->rngPreserveCtxt = 1;
4279 xmlRelaxNGSetValidErrors(
reader->rngValidCtxt,
4280 xmlTextReaderValidityErrorRelay,
4281 xmlTextReaderValidityWarningRelay,
4285 xmlRelaxNGSetValidStructuredErrors(
reader->rngValidCtxt,
4286 xmlTextReaderValidityStructuredRelay,
4289 reader->rngValidErrors = 0;
4291 reader->validate = XML_TEXTREADER_VALIDATE_RNG;
4310xmlTextReaderSchemaValidateInternal(xmlTextReaderPtr
reader,
4312 xmlSchemaValidCtxtPtr ctxt,
4318 if ((xsd !=
NULL) && (ctxt !=
NULL))
4321 if (((xsd !=
NULL) || (ctxt !=
NULL)) &&
4322 ((
reader->mode != XML_TEXTREADER_MODE_INITIAL) ||
4328 xmlSchemaSAXUnplug(
reader->xsdPlug);
4332 if (!
reader->xsdPreserveCtxt)
4333 xmlSchemaFreeValidCtxt(
reader->xsdValidCtxt);
4336 reader->xsdPreserveCtxt = 0;
4338 xmlSchemaFree(
reader->xsdSchemas);
4342 if ((xsd ==
NULL) && (ctxt ==
NULL)) {
4348 xmlSchemaParserCtxtPtr pctxt;
4350 pctxt = xmlSchemaNewParserCtxt(xsd);
4352 xmlSchemaSetParserErrors(pctxt,
4353 xmlTextReaderValidityErrorRelay,
4354 xmlTextReaderValidityWarningRelay,
4357 reader->xsdSchemas = xmlSchemaParse(pctxt);
4358 xmlSchemaFreeParserCtxt(pctxt);
4361 reader->xsdValidCtxt = xmlSchemaNewValidCtxt(
reader->xsdSchemas);
4363 xmlSchemaFree(
reader->xsdSchemas);
4367 reader->xsdPlug = xmlSchemaSAXPlug(
reader->xsdValidCtxt,
4369 &(
reader->ctxt->userData));
4371 xmlSchemaFree(
reader->xsdSchemas);
4373 xmlSchemaFreeValidCtxt(
reader->xsdValidCtxt);
4379 reader->xsdValidCtxt = ctxt;
4380 reader->xsdPreserveCtxt = 1;
4381 reader->xsdPlug = xmlSchemaSAXPlug(
reader->xsdValidCtxt,
4383 &(
reader->ctxt->userData));
4386 reader->xsdPreserveCtxt = 0;
4390 xmlSchemaValidateSetLocator(
reader->xsdValidCtxt,
4391 xmlTextReaderLocator,
4400 xmlSchemaSetValidErrors(
reader->xsdValidCtxt,
4401 xmlTextReaderValidityErrorRelay,
4402 xmlTextReaderValidityWarningRelay,
4406 xmlSchemaSetValidStructuredErrors(
reader->xsdValidCtxt,
4407 xmlTextReaderValidityStructuredRelay,
4410 reader->xsdValidErrors = 0;
4411 reader->validate = XML_TEXTREADER_VALIDATE_XSD;
4429xmlTextReaderSchemaValidateCtxt(xmlTextReaderPtr
reader,
4430 xmlSchemaValidCtxtPtr ctxt,
4449xmlTextReaderSchemaValidate(xmlTextReaderPtr
reader,
const char *xsd)
4451 return(xmlTextReaderSchemaValidateInternal(
reader, xsd,
NULL, 0));
4468xmlTextReaderRelaxNGValidateCtxt(xmlTextReaderPtr
reader,
4469 xmlRelaxNGValidCtxtPtr ctxt,
4488xmlTextReaderRelaxNGValidate(xmlTextReaderPtr
reader,
const char *rng)
4490 return(xmlTextReaderRelaxNGValidateInternal(
reader, rng,
NULL, 0));
4507xmlTextReaderIsNamespaceDecl(xmlTextReaderPtr
reader) {
4518 if (XML_NAMESPACE_DECL ==
node->type)
4534xmlTextReaderConstXmlVersion(xmlTextReaderPtr
reader) {
4535 xmlDocPtr doc =
NULL;
4541 doc =
reader->ctxt->myDoc;
4545 if (doc->version ==
NULL)
4548 return(CONSTSTR(doc->version));
4562xmlTextReaderStandalone(xmlTextReaderPtr
reader) {
4563 xmlDocPtr doc =
NULL;
4569 doc =
reader->ctxt->myDoc;
4573 return(doc->standalone);
4584xmlTextReaderBuildMessage(
const char *
msg,
va_list ap) {
4601 if ((chars <
size) || (
size == MAX_ERR_MSG_SIZE))
4603 if (chars < MAX_ERR_MSG_SIZE)
4606 size = MAX_ERR_MSG_SIZE;
4628xmlTextReaderLocatorLineNumber(xmlTextReaderLocatorPtr
locator) {
4630 xmlParserCtxtPtr
ctx = (xmlParserCtxtPtr)
locator;
4636 ret = xmlGetLineNo(
ctx->node);
4640 xmlParserInputPtr
input;
4665xmlTextReaderLocatorBaseURI(xmlTextReaderLocatorPtr
locator) {
4667 xmlParserCtxtPtr
ctx = (xmlParserCtxtPtr)
locator;
4677 xmlParserInputPtr
input;
4696 xmlParserCtxtPtr
ctx = (xmlParserCtxtPtr) ctxt;
4698 xmlTextReaderPtr
reader = (xmlTextReaderPtr)
ctx->_private;
4703 (xmlTextReaderLocatorPtr)
ctx);
4709xmlTextReaderStructuredError(
void *ctxt,
const xmlError *
error)
4711 xmlParserCtxtPtr
ctx = (xmlParserCtxtPtr) ctxt;
4713 xmlTextReaderPtr
reader = (xmlTextReaderPtr)
ctx->_private;
4721xmlTextReaderError(
void *ctxt,
const char *
msg, ...)
4726 xmlTextReaderGenericError(ctxt,
4728 xmlTextReaderBuildMessage(
msg,
ap));
4734xmlTextReaderWarning(
void *ctxt,
const char *
msg, ...)
4739 xmlTextReaderGenericError(ctxt,
4741 xmlTextReaderBuildMessage(
msg,
ap));
4746xmlTextReaderValidityError(
void *ctxt,
const char *
msg, ...)
4752 if ((
len > 1) && (
msg[
len - 2] !=
':')) {
4758 xmlTextReaderGenericError(ctxt,
4760 xmlTextReaderBuildMessage(
msg,
ap));
4766xmlTextReaderValidityWarning(
void *ctxt,
const char *
msg, ...)
4772 if ((
len != 0) && (
msg[
len - 1] !=
':')) {
4778 xmlTextReaderGenericError(ctxt,
4780 xmlTextReaderBuildMessage(
msg,
ap));
4796xmlTextReaderSetErrorHandler(xmlTextReaderPtr
reader,
4797 xmlTextReaderErrorFunc
f,
void *
arg)
4800 reader->ctxt->sax->error = xmlTextReaderError;
4802 reader->ctxt->vctxt.error = xmlTextReaderValidityError;
4803 reader->ctxt->sax->warning = xmlTextReaderWarning;
4804 reader->ctxt->vctxt.warning = xmlTextReaderValidityWarning;
4808#ifdef LIBXML_SCHEMAS_ENABLED
4809 if (
reader->rngValidCtxt) {
4810 xmlRelaxNGSetValidErrors(
reader->rngValidCtxt,
4811 xmlTextReaderValidityErrorRelay,
4812 xmlTextReaderValidityWarningRelay,
4814 xmlRelaxNGSetValidStructuredErrors(
reader->rngValidCtxt,
NULL,
4817 if (
reader->xsdValidCtxt) {
4818 xmlSchemaSetValidErrors(
reader->xsdValidCtxt,
4819 xmlTextReaderValidityErrorRelay,
4820 xmlTextReaderValidityWarningRelay,
4822 xmlSchemaSetValidStructuredErrors(
reader->xsdValidCtxt,
NULL,
4835#ifdef LIBXML_SCHEMAS_ENABLED
4836 if (
reader->rngValidCtxt) {
4839 xmlRelaxNGSetValidStructuredErrors(
reader->rngValidCtxt,
NULL,
4842 if (
reader->xsdValidCtxt) {
4845 xmlSchemaSetValidStructuredErrors(
reader->xsdValidCtxt,
NULL,
4863xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr
reader,
4868 reader->ctxt->sax->serror = xmlTextReaderStructuredError;
4869 reader->ctxt->vctxt.error = xmlTextReaderValidityError;
4870 reader->ctxt->sax->warning = xmlTextReaderWarning;
4871 reader->ctxt->vctxt.warning = xmlTextReaderValidityWarning;
4875#ifdef LIBXML_SCHEMAS_ENABLED
4876 if (
reader->rngValidCtxt) {
4879 xmlRelaxNGSetValidStructuredErrors(
reader->rngValidCtxt,
4880 xmlTextReaderValidityStructuredRelay,
4883 if (
reader->xsdValidCtxt) {
4886 xmlSchemaSetValidStructuredErrors(
reader->xsdValidCtxt,
4887 xmlTextReaderValidityStructuredRelay,
4901#ifdef LIBXML_SCHEMAS_ENABLED
4902 if (
reader->rngValidCtxt) {
4905 xmlRelaxNGSetValidStructuredErrors(
reader->rngValidCtxt,
NULL,
4908 if (
reader->xsdValidCtxt) {
4911 xmlSchemaSetValidStructuredErrors(
reader->xsdValidCtxt,
NULL,
4927xmlTextReaderIsValid(xmlTextReaderPtr
reader)
4931#ifdef LIBXML_SCHEMAS_ENABLED
4932 if (
reader->validate == XML_TEXTREADER_VALIDATE_RNG)
4933 return (
reader->rngValidErrors == 0);
4934 if (
reader->validate == XML_TEXTREADER_VALIDATE_XSD)
4935 return (
reader->xsdValidErrors == 0);
4938 return (
reader->ctxt->valid);
4951xmlTextReaderGetErrorHandler(xmlTextReaderPtr
reader,
4952 xmlTextReaderErrorFunc *
f,
void **
arg)
4979xmlTextReaderSetup(xmlTextReaderPtr
reader,
4980 xmlParserInputBufferPtr
input,
const char *URL,
4981 const char *encoding,
int options)
4998 reader->validate = XML_TEXTREADER_NOT_VALIDATE;
5000 (
reader->allocs & XML_TEXTREADER_INPUT)) {
5003 reader->allocs -= XML_TEXTREADER_INPUT;
5007 reader->allocs |= XML_TEXTREADER_INPUT;
5013 "xmlTextReaderSetup : malloc failed\n");
5018 XML_BUFFER_ALLOC_DOUBLEIT);
5023 "xmlTextReaderSetup : malloc failed\n");
5028 reader->sax->startElement = xmlTextReaderStartElement;
5030 reader->sax->endElement = xmlTextReaderEndElement;
5031#ifdef LIBXML_SAX1_ENABLED
5035 reader->sax->startElementNs = xmlTextReaderStartElementNs;
5037 reader->sax->endElementNs = xmlTextReaderEndElementNs;
5038#ifdef LIBXML_SAX1_ENABLED
5045 reader->sax->characters = xmlTextReaderCharacters;
5046 reader->sax->ignorableWhitespace = xmlTextReaderCharacters;
5048 reader->sax->cdataBlock = xmlTextReaderCDataBlock;
5050 reader->mode = XML_TEXTREADER_MODE_INITIAL;
5071 xmlParserInputPtr inputStream;
5072 xmlParserInputBufferPtr
buf;
5079 if (inputStream ==
NULL) {
5085 inputStream->filename =
NULL;
5087 inputStream->filename = (
char *)
5089 inputStream->buf =
buf;
5097 "xmlTextReaderSetup : malloc failed\n");
5116 reader->ctxt->linenumbers = 1;
5117 reader->ctxt->dictNames = 1;
5121 reader->ctxt->docdict = 1;
5124#ifdef LIBXML_XINCLUDE_ENABLED
5126 xmlXIncludeFreeContext(
reader->xincctxt);
5137#ifdef LIBXML_PATTERN_ENABLED
5142 while (
reader->patternNr > 0) {
5152 reader->validate = XML_TEXTREADER_VALIDATE_DTD;
5155 if (encoding !=
NULL) {
5164 reader->ctxt->input->filename = (
char *)
5180xmlTextReaderSetMaxAmplification(xmlTextReaderPtr
reader,
unsigned maxAmpl)
5199xmlTextReaderByteConsumed(xmlTextReaderPtr
reader) {
5215xmlReaderWalker(xmlDocPtr doc)
5217 xmlTextReaderPtr
ret;
5225 "xmlNewTextReader : malloc failed\n");
5231 ret->mode = XML_TEXTREADER_MODE_INITIAL;
5236 ret->allocs = XML_TEXTREADER_CTXT;
5238 ret->state = XML_TEXTREADER_START;
5256xmlReaderForDoc(
const xmlChar *
cur,
const char *URL,
const char *encoding,
5265 return (xmlReaderForMemory
5281xmlReaderForFile(
const char *
filename,
const char *encoding,
int options)
5306xmlReaderForMemory(
const char *
buffer,
int size,
const char *URL,
5307 const char *encoding,
int options)
5310 xmlParserInputBufferPtr
buf;
5321 reader->allocs |= XML_TEXTREADER_INPUT;
5341xmlReaderForFd(
int fd,
const char *URL,
const char *encoding,
int options)
5344 xmlParserInputBufferPtr
input;
5358 reader->allocs |= XML_TEXTREADER_INPUT;
5379 void *ioctx,
const char *URL,
const char *encoding,
5383 xmlParserInputBufferPtr
input;
5391 if (ioclose !=
NULL)
5400 reader->allocs |= XML_TEXTREADER_INPUT;
5416xmlReaderNewWalker(xmlTextReaderPtr
reader, xmlDocPtr doc)
5432 reader->mode = XML_TEXTREADER_MODE_INITIAL;
5437 reader->allocs = XML_TEXTREADER_CTXT;
5439 reader->state = XML_TEXTREADER_START;
5465 const char *URL,
const char *encoding,
int options)
5476 return (xmlReaderNewMemory(
reader, (
const char *)
cur,
len,
5495 const char *encoding,
int options)
5497 xmlParserInputBufferPtr
input;
5529 const char *URL,
const char *encoding,
int options)
5531 xmlParserInputBufferPtr
input;
5563xmlReaderNewFd(xmlTextReaderPtr
reader,
int fd,
5564 const char *URL,
const char *encoding,
int options)
5566 xmlParserInputBufferPtr
input;
5600 const char *URL,
const char *encoding,
int options)
5602 xmlParserInputBufferPtr
input;
5612 if (ioclose !=
NULL)
5640xmlBase64Decode(
const unsigned char *
in,
unsigned long *inlen,
5641 unsigned char *to,
unsigned long *tolen)
5643 unsigned long incur;
5645 unsigned long inblk;
5647 unsigned long outcur;
5649 unsigned long inmax;
5651 unsigned long outmax;
5655 unsigned char intmp[4], outtmp[4];
5682 if ((
cur >=
'A') && (
cur <=
'Z'))
5684 else if ((
cur >=
'a') && (
cur <=
'z'))
5686 else if ((
cur >=
'0') && (
cur <=
'9'))
5688 else if (
cur ==
'+')
5690 else if (
cur ==
'/')
5692 else if (
cur ==
'.')
5694 else if (
cur ==
'=')
5710 if ((nbintmp == 1) || (nbintmp == 2))
5717 intmp[nbintmp++] =
cur;
5724 outtmp[0] = (intmp[0] << 2) | ((intmp[1] & 0x30) >> 4);
5726 ((intmp[1] & 0x0F) << 4) | ((intmp[2] & 0x3C) >> 2);
5727 outtmp[2] = ((intmp[2] & 0x03) << 6) | (intmp[3] & 0x3F);
5728 if (outcur + 3 >= outmax) {
5733 for (
i = 0;
i < nbouttmp;
i++)
5734 to[outcur++] = outtmp[
i];
5757 char *
input =
" VW4 gcGV0 \n aXQgdGVzdCAuCg== ";
5767 unsigned long outlen = 100;
5771 unsigned long cons, tmp, tmp2, prod;
5776 ret = xmlBase64Decode(
input, &inlen, output, &outlen);
5779 printf(
"ret: %d, inlen: %ld , outlen: %ld, output: '%s'\n",
ret, inlen,
5788 while (
cons < inlen) {
5790 tmp2 = inlen -
cons;
5793 ret = xmlBase64Decode(&
input[
cons], &tmp2, &output2[prod], &tmp);
5798 output2[outlen] = 0;
5799 printf(
"ret: %d, cons: %ld , prod: %ld, output: '%s'\n",
ret,
cons,
5807 while (
cons < inlen) {
5809 tmp2 = inlen -
cons;
5814 ret = xmlBase64Decode(&
input[
cons], &tmp2, &output3[prod], &tmp);
5819 output3[outlen] = 0;
5820 printf(
"ret: %d, cons: %ld , prod: %ld, output: '%s'\n",
ret,
cons,
#define VA_COPY(Dest, Start)
XMLPUBFUN int xmlSAXVersion(xmlSAXHandler *hdlr, int version)
pair cons(caddr_t car, pair cdr)
_In_ uint16_t _Out_ ULONG * atts
void xmlBufEmpty(xmlBufPtr buf)
void xmlBufFree(xmlBufPtr buf)
int xmlBufResetInput(xmlBufPtr buf, xmlParserInputPtr input)
xmlBufPtr xmlBufCreateSize(size_t size)
xmlChar * xmlBufContent(const xmlBuf *buf)
int xmlBufSetAllocationScheme(xmlBufPtr buf, xmlBufferAllocationScheme scheme)
size_t xmlBufUse(const xmlBufPtr buf)
size_t xmlBufShrink(xmlBufPtr buf, size_t len)
static const WCHAR indent[]
static WCHAR no[MAX_STRING_RESOURCE_LEN]
BOOL next_node(stream_t *stream, strbuf_t *buf)
_ACRTIMP size_t __cdecl strlen(const char *)
xmlCharEncodingHandlerPtr xmlFindCharEncodingHandler(const char *name)
static unsigned char buff[32768]
static FRESULT validate(void *obj)
GLint GLint GLsizei GLsizei GLsizei depth
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLuint GLenum GLsizei const GLchar * buf
GLuint GLsizei const GLvoid GLenum preserve
GLenum GLenum GLenum input
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
XMLPUBFUN int xmlSwitchToEncoding(xmlParserCtxtPtr ctxt, xmlCharEncodingHandlerPtr handler)
XMLPUBFUN xmlParserInputPtr xmlNewInputStream(xmlParserCtxtPtr ctxt)
XMLPUBFUN int inputPush(xmlParserCtxtPtr ctxt, xmlParserInputPtr value)
XML_HIDDEN int xmlXIncludeSetStreamingMode(xmlXIncludeCtxtPtr ctxt, int mode)
static unsigned __int64 next
void xmlDictFree(xmlDictPtr dict)
xmlDictPtr xmlDictCreate(void)
const xmlChar * xmlDictLookup(xmlDictPtr dict, const xmlChar *name, int len)
void * xmlGenericErrorContext
xmlReallocFunc xmlRealloc
xmlGenericErrorFunc xmlGenericError
xmlDeregisterNodeFunc xmlDeregisterNodeDefaultValue
void(* startElementNsSAX2Func)(void *ctx, const xmlChar *localname, const xmlChar *prefix, const xmlChar *URI, int nb_namespaces, const xmlChar **namespaces, int nb_attributes, int nb_defaulted, const xmlChar **attributes)
void(* cdataBlockSAXFunc)(void *ctx, const xmlChar *value, int len)
XMLPUBFUN int xmlCtxtUseOptions(xmlParserCtxtPtr ctxt, int options)
XMLPUBFUN long xmlByteConsumed(xmlParserCtxtPtr ctxt)
#define XML_COMPLETE_ATTRS
XMLPUBFUN void xmlFreeParserCtxt(xmlParserCtxtPtr ctxt)
void(* charactersSAXFunc)(void *ctx, const xmlChar *ch, int len)
XMLPUBFUN void xmlCtxtSetMaxAmplification(xmlParserCtxtPtr ctxt, unsigned maxAmpl)
void(* endElementSAXFunc)(void *ctx, const xmlChar *name)
void(* startElementSAXFunc)(void *ctx, const xmlChar *name, const xmlChar **atts)
XMLPUBFUN void xmlStopParser(xmlParserCtxtPtr ctxt)
void(* endElementNsSAX2Func)(void *ctx, const xmlChar *localname, const xmlChar *prefix, const xmlChar *URI)
XMLPUBFUN void xmlCtxtReset(xmlParserCtxtPtr ctxt)
XML_HIDDEN const xmlChar * xmlGetActualEncoding(xmlParserCtxtPtr ctxt)
XML_HIDDEN int __xmlRegisterCallbacks
Character const *const prefix
XMLPUBFUN xmlChar * xmlCanonicPath(const xmlChar *path)
XML_DEPRECATED XMLPUBFUN void xmlFreeRefTable(xmlRefTablePtr table)
XMLPUBFUN void xmlFreeIDTable(xmlIDTablePtr table)
void int int ULONGLONG int va_list * ap
XMLPUBFUN xmlParserInputBufferPtr xmlParserInputBufferCreateMem(const char *mem, int size, xmlCharEncoding enc)
XMLPUBFUN xmlParserInputBufferPtr xmlParserInputBufferCreateFd(int fd, xmlCharEncoding enc)
XMLPUBFUN void xmlFreeParserInputBuffer(xmlParserInputBufferPtr in)
XMLPUBFUN xmlParserInputBufferPtr xmlAllocParserInputBuffer(xmlCharEncoding enc)
XMLPUBFUN char * xmlParserGetDirectory(const char *filename)
int(* xmlInputReadCallback)(void *context, char *buffer, int len)
int(* xmlInputCloseCallback)(void *context)
XMLPUBFUN xmlParserInputBufferPtr xmlParserInputBufferCreateIO(xmlInputReadCallback ioread, xmlInputCloseCallback ioclose, void *ioctx, xmlCharEncoding enc)
XMLPUBFUN xmlParserInputBufferPtr xmlParserInputBufferCreateFilename(const char *URI, xmlCharEncoding enc)
XMLPUBFUN int xmlParserInputBufferRead(xmlParserInputBufferPtr in, int len)
XMLPUBFUN void xmlParserError(void *ctx, const char *msg,...) LIBXML_ATTR_FORMAT(2
void(*) typedef void(* xmlStructuredErrorFunc)(void *userData, const xmlError *error)
XMLPUBFUN void XMLPUBFUN void xmlParserWarning(void *ctx, const char *msg,...) LIBXML_ATTR_FORMAT(2
XMLPUBFUN void XMLPUBFUN void XMLPUBFUN void xmlParserValidityError(void *ctx, const char *msg,...) LIBXML_ATTR_FORMAT(2
XMLPUBFUN void XMLPUBFUN void XMLPUBFUN void XMLPUBFUN void xmlParserValidityWarning(void *ctx, const char *msg,...) LIBXML_ATTR_FORMAT(2
@ XML_PARSER_SEVERITY_ERROR
@ XML_PARSER_SEVERITY_WARNING
@ XML_PARSER_SEVERITY_VALIDITY_WARNING
@ XML_PARSER_SEVERITY_VALIDITY_ERROR
XMLPUBFUN int xmlStrlen(const xmlChar *str)
XMLPUBFUN xmlChar * xmlStrcat(xmlChar *cur, const xmlChar *add)
XMLPUBFUN int xmlStrEqual(const xmlChar *str1, const xmlChar *str2)
XMLPUBFUN xmlChar * xmlStrdup(const xmlChar *cur)
#define LIBXML_ATTR_FORMAT(fmt, args)
#define LIBXML_XINCLUDE_ENABLED