| /* | |
| * legacy.c: set of deprecated routines, not to be used anymore but | |
| * kept purely for ABI compatibility | |
| * | |
| * See Copyright for the status of this software. | |
| * | |
| * daniel@veillard.com | |
| */ | |
| #define IN_LIBXML | |
| #include "libxml.h" | |
| #ifdef LIBXML_LEGACY_ENABLED | |
| #include <string.h> | |
| #include <libxml/tree.h> | |
| #include <libxml/entities.h> | |
| #include <libxml/SAX.h> | |
| #include <libxml/parserInternals.h> | |
| #include <libxml/HTMLparser.h> | |
| void xmlUpgradeOldNs(xmlDocPtr doc); | |
| /************************************************************************ | |
| * * | |
| * Deprecated functions kept for compatibility * | |
| * * | |
| ************************************************************************/ | |
| #ifdef LIBXML_HTML_ENABLED | |
| xmlChar *htmlDecodeEntities(htmlParserCtxtPtr ctxt, int len, xmlChar end, | |
| xmlChar end2, xmlChar end3); | |
| /** | |
| * htmlDecodeEntities: | |
| * @ctxt: the parser context | |
| * @len: the len to decode (in bytes !), -1 for no size limit | |
| * @end: an end marker xmlChar, 0 if none | |
| * @end2: an end marker xmlChar, 0 if none | |
| * @end3: an end marker xmlChar, 0 if none | |
| * | |
| * Substitute the HTML entities by their value | |
| * | |
| * DEPRECATED !!!! | |
| * | |
| * Returns A newly allocated string with the substitution done. The caller | |
| * must deallocate it ! | |
| */ | |
| xmlChar * | |
| htmlDecodeEntities(htmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED, | |
| int len ATTRIBUTE_UNUSED, xmlChar end ATTRIBUTE_UNUSED, | |
| xmlChar end2 ATTRIBUTE_UNUSED, | |
| xmlChar end3 ATTRIBUTE_UNUSED) | |
| { | |
| static int deprecated = 0; | |
| if (!deprecated) { | |
| xmlGenericError(xmlGenericErrorContext, | |
| "htmlDecodeEntities() deprecated function reached\n"); | |
| deprecated = 1; | |
| } | |
| return (NULL); | |
| } | |
| #endif | |
| /** | |
| * xmlInitializePredefinedEntities: | |
| * | |
| * Set up the predefined entities. | |
| * Deprecated call | |
| */ | |
| void | |
| xmlInitializePredefinedEntities(void) | |
| { | |
| } | |
| /** | |
| * xmlCleanupPredefinedEntities: | |
| * | |
| * Cleanup up the predefined entities table. | |
| * Deprecated call | |
| */ | |
| void | |
| xmlCleanupPredefinedEntities(void) | |
| { | |
| } | |
| static const char *xmlFeaturesList[] = { | |
| "validate", | |
| "load subset", | |
| "keep blanks", | |
| "disable SAX", | |
| "fetch external entities", | |
| "substitute entities", | |
| "gather line info", | |
| "user data", | |
| "is html", | |
| "is standalone", | |
| "stop parser", | |
| "document", | |
| "is well formed", | |
| "is valid", | |
| "SAX block", | |
| "SAX function internalSubset", | |
| "SAX function isStandalone", | |
| "SAX function hasInternalSubset", | |
| "SAX function hasExternalSubset", | |
| "SAX function resolveEntity", | |
| "SAX function getEntity", | |
| "SAX function entityDecl", | |
| "SAX function notationDecl", | |
| "SAX function attributeDecl", | |
| "SAX function elementDecl", | |
| "SAX function unparsedEntityDecl", | |
| "SAX function setDocumentLocator", | |
| "SAX function startDocument", | |
| "SAX function endDocument", | |
| "SAX function startElement", | |
| "SAX function endElement", | |
| "SAX function reference", | |
| "SAX function characters", | |
| "SAX function ignorableWhitespace", | |
| "SAX function processingInstruction", | |
| "SAX function comment", | |
| "SAX function warning", | |
| "SAX function error", | |
| "SAX function fatalError", | |
| "SAX function getParameterEntity", | |
| "SAX function cdataBlock", | |
| "SAX function externalSubset", | |
| }; | |
| /** | |
| * xmlGetFeaturesList: | |
| * @len: the length of the features name array (input/output) | |
| * @result: an array of string to be filled with the features name. | |
| * | |
| * Copy at most *@len feature names into the @result array | |
| * | |
| * Returns -1 in case or error, or the total number of features, | |
| * len is updated with the number of strings copied, | |
| * strings must not be deallocated | |
| */ | |
| int | |
| xmlGetFeaturesList(int *len, const char **result) | |
| { | |
| int ret, i; | |
| ret = sizeof(xmlFeaturesList) / sizeof(xmlFeaturesList[0]); | |
| if ((len == NULL) || (result == NULL)) | |
| return (ret); | |
| if ((*len < 0) || (*len >= 1000)) | |
| return (-1); | |
| if (*len > ret) | |
| *len = ret; | |
| for (i = 0; i < *len; i++) | |
| result[i] = xmlFeaturesList[i]; | |
| return (ret); | |
| } | |
| /** | |
| * xmlGetFeature: | |
| * @ctxt: an XML/HTML parser context | |
| * @name: the feature name | |
| * @result: location to store the result | |
| * | |
| * Read the current value of one feature of this parser instance | |
| * | |
| * Returns -1 in case or error, 0 otherwise | |
| */ | |
| int | |
| xmlGetFeature(xmlParserCtxtPtr ctxt, const char *name, void *result) | |
| { | |
| if ((ctxt == NULL) || (name == NULL) || (result == NULL)) | |
| return (-1); | |
| if (!strcmp(name, "validate")) { | |
| *((int *) result) = ctxt->validate; | |
| } else if (!strcmp(name, "keep blanks")) { | |
| *((int *) result) = ctxt->keepBlanks; | |
| } else if (!strcmp(name, "disable SAX")) { | |
| *((int *) result) = ctxt->disableSAX; | |
| } else if (!strcmp(name, "fetch external entities")) { | |
| *((int *) result) = ctxt->loadsubset; | |
| } else if (!strcmp(name, "substitute entities")) { | |
| *((int *) result) = ctxt->replaceEntities; | |
| } else if (!strcmp(name, "gather line info")) { | |
| *((int *) result) = ctxt->record_info; | |
| } else if (!strcmp(name, "user data")) { | |
| *((void **) result) = ctxt->userData; | |
| } else if (!strcmp(name, "is html")) { | |
| *((int *) result) = ctxt->html; | |
| } else if (!strcmp(name, "is standalone")) { | |
| *((int *) result) = ctxt->standalone; | |
| } else if (!strcmp(name, "document")) { | |
| *((xmlDocPtr *) result) = ctxt->myDoc; | |
| } else if (!strcmp(name, "is well formed")) { | |
| *((int *) result) = ctxt->wellFormed; | |
| } else if (!strcmp(name, "is valid")) { | |
| *((int *) result) = ctxt->valid; | |
| } else if (!strcmp(name, "SAX block")) { | |
| *((xmlSAXHandlerPtr *) result) = ctxt->sax; | |
| } else if (!strcmp(name, "SAX function internalSubset")) { | |
| *((internalSubsetSAXFunc *) result) = ctxt->sax->internalSubset; | |
| } else if (!strcmp(name, "SAX function isStandalone")) { | |
| *((isStandaloneSAXFunc *) result) = ctxt->sax->isStandalone; | |
| } else if (!strcmp(name, "SAX function hasInternalSubset")) { | |
| *((hasInternalSubsetSAXFunc *) result) = | |
| ctxt->sax->hasInternalSubset; | |
| } else if (!strcmp(name, "SAX function hasExternalSubset")) { | |
| *((hasExternalSubsetSAXFunc *) result) = | |
| ctxt->sax->hasExternalSubset; | |
| } else if (!strcmp(name, "SAX function resolveEntity")) { | |
| *((resolveEntitySAXFunc *) result) = ctxt->sax->resolveEntity; | |
| } else if (!strcmp(name, "SAX function getEntity")) { | |
| *((getEntitySAXFunc *) result) = ctxt->sax->getEntity; | |
| } else if (!strcmp(name, "SAX function entityDecl")) { | |
| *((entityDeclSAXFunc *) result) = ctxt->sax->entityDecl; | |
| } else if (!strcmp(name, "SAX function notationDecl")) { | |
| *((notationDeclSAXFunc *) result) = ctxt->sax->notationDecl; | |
| } else if (!strcmp(name, "SAX function attributeDecl")) { | |
| *((attributeDeclSAXFunc *) result) = ctxt->sax->attributeDecl; | |
| } else if (!strcmp(name, "SAX function elementDecl")) { | |
| *((elementDeclSAXFunc *) result) = ctxt->sax->elementDecl; | |
| } else if (!strcmp(name, "SAX function unparsedEntityDecl")) { | |
| *((unparsedEntityDeclSAXFunc *) result) = | |
| ctxt->sax->unparsedEntityDecl; | |
| } else if (!strcmp(name, "SAX function setDocumentLocator")) { | |
| *((setDocumentLocatorSAXFunc *) result) = | |
| ctxt->sax->setDocumentLocator; | |
| } else if (!strcmp(name, "SAX function startDocument")) { | |
| *((startDocumentSAXFunc *) result) = ctxt->sax->startDocument; | |
| } else if (!strcmp(name, "SAX function endDocument")) { | |
| *((endDocumentSAXFunc *) result) = ctxt->sax->endDocument; | |
| } else if (!strcmp(name, "SAX function startElement")) { | |
| *((startElementSAXFunc *) result) = ctxt->sax->startElement; | |
| } else if (!strcmp(name, "SAX function endElement")) { | |
| *((endElementSAXFunc *) result) = ctxt->sax->endElement; | |
| } else if (!strcmp(name, "SAX function reference")) { | |
| *((referenceSAXFunc *) result) = ctxt->sax->reference; | |
| } else if (!strcmp(name, "SAX function characters")) { | |
| *((charactersSAXFunc *) result) = ctxt->sax->characters; | |
| } else if (!strcmp(name, "SAX function ignorableWhitespace")) { | |
| *((ignorableWhitespaceSAXFunc *) result) = | |
| ctxt->sax->ignorableWhitespace; | |
| } else if (!strcmp(name, "SAX function processingInstruction")) { | |
| *((processingInstructionSAXFunc *) result) = | |
| ctxt->sax->processingInstruction; | |
| } else if (!strcmp(name, "SAX function comment")) { | |
| *((commentSAXFunc *) result) = ctxt->sax->comment; | |
| } else if (!strcmp(name, "SAX function warning")) { | |
| *((warningSAXFunc *) result) = ctxt->sax->warning; | |
| } else if (!strcmp(name, "SAX function error")) { | |
| *((errorSAXFunc *) result) = ctxt->sax->error; | |
| } else if (!strcmp(name, "SAX function fatalError")) { | |
| *((fatalErrorSAXFunc *) result) = ctxt->sax->fatalError; | |
| } else if (!strcmp(name, "SAX function getParameterEntity")) { | |
| *((getParameterEntitySAXFunc *) result) = | |
| ctxt->sax->getParameterEntity; | |
| } else if (!strcmp(name, "SAX function cdataBlock")) { | |
| *((cdataBlockSAXFunc *) result) = ctxt->sax->cdataBlock; | |
| } else if (!strcmp(name, "SAX function externalSubset")) { | |
| *((externalSubsetSAXFunc *) result) = ctxt->sax->externalSubset; | |
| } else { | |
| return (-1); | |
| } | |
| return (0); | |
| } | |
| /** | |
| * xmlSetFeature: | |
| * @ctxt: an XML/HTML parser context | |
| * @name: the feature name | |
| * @value: pointer to the location of the new value | |
| * | |
| * Change the current value of one feature of this parser instance | |
| * | |
| * Returns -1 in case or error, 0 otherwise | |
| */ | |
| int | |
| xmlSetFeature(xmlParserCtxtPtr ctxt, const char *name, void *value) | |
| { | |
| if ((ctxt == NULL) || (name == NULL) || (value == NULL)) | |
| return (-1); | |
| if (!strcmp(name, "validate")) { | |
| int newvalidate = *((int *) value); | |
| if ((!ctxt->validate) && (newvalidate != 0)) { | |
| if (ctxt->vctxt.warning == NULL) | |
| ctxt->vctxt.warning = xmlParserValidityWarning; | |
| if (ctxt->vctxt.error == NULL) | |
| ctxt->vctxt.error = xmlParserValidityError; | |
| ctxt->vctxt.nodeMax = 0; | |
| } | |
| ctxt->validate = newvalidate; | |
| } else if (!strcmp(name, "keep blanks")) { | |
| ctxt->keepBlanks = *((int *) value); | |
| } else if (!strcmp(name, "disable SAX")) { | |
| ctxt->disableSAX = *((int *) value); | |
| } else if (!strcmp(name, "fetch external entities")) { | |
| ctxt->loadsubset = *((int *) value); | |
| } else if (!strcmp(name, "substitute entities")) { | |
| ctxt->replaceEntities = *((int *) value); | |
| } else if (!strcmp(name, "gather line info")) { | |
| ctxt->record_info = *((int *) value); | |
| } else if (!strcmp(name, "user data")) { | |
| ctxt->userData = *((void **) value); | |
| } else if (!strcmp(name, "is html")) { | |
| ctxt->html = *((int *) value); | |
| } else if (!strcmp(name, "is standalone")) { | |
| ctxt->standalone = *((int *) value); | |
| } else if (!strcmp(name, "document")) { | |
| ctxt->myDoc = *((xmlDocPtr *) value); | |
| } else if (!strcmp(name, "is well formed")) { | |
| ctxt->wellFormed = *((int *) value); | |
| } else if (!strcmp(name, "is valid")) { | |
| ctxt->valid = *((int *) value); | |
| } else if (!strcmp(name, "SAX block")) { | |
| ctxt->sax = *((xmlSAXHandlerPtr *) value); | |
| } else if (!strcmp(name, "SAX function internalSubset")) { | |
| ctxt->sax->internalSubset = *((internalSubsetSAXFunc *) value); | |
| } else if (!strcmp(name, "SAX function isStandalone")) { | |
| ctxt->sax->isStandalone = *((isStandaloneSAXFunc *) value); | |
| } else if (!strcmp(name, "SAX function hasInternalSubset")) { | |
| ctxt->sax->hasInternalSubset = | |
| *((hasInternalSubsetSAXFunc *) value); | |
| } else if (!strcmp(name, "SAX function hasExternalSubset")) { | |
| ctxt->sax->hasExternalSubset = | |
| *((hasExternalSubsetSAXFunc *) value); | |
| } else if (!strcmp(name, "SAX function resolveEntity")) { | |
| ctxt->sax->resolveEntity = *((resolveEntitySAXFunc *) value); | |
| } else if (!strcmp(name, "SAX function getEntity")) { | |
| ctxt->sax->getEntity = *((getEntitySAXFunc *) value); | |
| } else if (!strcmp(name, "SAX function entityDecl")) { | |
| ctxt->sax->entityDecl = *((entityDeclSAXFunc *) value); | |
| } else if (!strcmp(name, "SAX function notationDecl")) { | |
| ctxt->sax->notationDecl = *((notationDeclSAXFunc *) value); | |
| } else if (!strcmp(name, "SAX function attributeDecl")) { | |
| ctxt->sax->attributeDecl = *((attributeDeclSAXFunc *) value); | |
| } else if (!strcmp(name, "SAX function elementDecl")) { | |
| ctxt->sax->elementDecl = *((elementDeclSAXFunc *) value); | |
| } else if (!strcmp(name, "SAX function unparsedEntityDecl")) { | |
| ctxt->sax->unparsedEntityDecl = | |
| *((unparsedEntityDeclSAXFunc *) value); | |
| } else if (!strcmp(name, "SAX function setDocumentLocator")) { | |
| ctxt->sax->setDocumentLocator = | |
| *((setDocumentLocatorSAXFunc *) value); | |
| } else if (!strcmp(name, "SAX function startDocument")) { | |
| ctxt->sax->startDocument = *((startDocumentSAXFunc *) value); | |
| } else if (!strcmp(name, "SAX function endDocument")) { | |
| ctxt->sax->endDocument = *((endDocumentSAXFunc *) value); | |
| } else if (!strcmp(name, "SAX function startElement")) { | |
| ctxt->sax->startElement = *((startElementSAXFunc *) value); | |
| } else if (!strcmp(name, "SAX function endElement")) { | |
| ctxt->sax->endElement = *((endElementSAXFunc *) value); | |
| } else if (!strcmp(name, "SAX function reference")) { | |
| ctxt->sax->reference = *((referenceSAXFunc *) value); | |
| } else if (!strcmp(name, "SAX function characters")) { | |
| ctxt->sax->characters = *((charactersSAXFunc *) value); | |
| } else if (!strcmp(name, "SAX function ignorableWhitespace")) { | |
| ctxt->sax->ignorableWhitespace = | |
| *((ignorableWhitespaceSAXFunc *) value); | |
| } else if (!strcmp(name, "SAX function processingInstruction")) { | |
| ctxt->sax->processingInstruction = | |
| *((processingInstructionSAXFunc *) value); | |
| } else if (!strcmp(name, "SAX function comment")) { | |
| ctxt->sax->comment = *((commentSAXFunc *) value); | |
| } else if (!strcmp(name, "SAX function warning")) { | |
| ctxt->sax->warning = *((warningSAXFunc *) value); | |
| } else if (!strcmp(name, "SAX function error")) { | |
| ctxt->sax->error = *((errorSAXFunc *) value); | |
| } else if (!strcmp(name, "SAX function fatalError")) { | |
| ctxt->sax->fatalError = *((fatalErrorSAXFunc *) value); | |
| } else if (!strcmp(name, "SAX function getParameterEntity")) { | |
| ctxt->sax->getParameterEntity = | |
| *((getParameterEntitySAXFunc *) value); | |
| } else if (!strcmp(name, "SAX function cdataBlock")) { | |
| ctxt->sax->cdataBlock = *((cdataBlockSAXFunc *) value); | |
| } else if (!strcmp(name, "SAX function externalSubset")) { | |
| ctxt->sax->externalSubset = *((externalSubsetSAXFunc *) value); | |
| } else { | |
| return (-1); | |
| } | |
| return (0); | |
| } | |
| /** | |
| * xmlDecodeEntities: | |
| * @ctxt: the parser context | |
| * @len: the len to decode (in bytes !), -1 for no size limit | |
| * @what: combination of XML_SUBSTITUTE_REF and XML_SUBSTITUTE_PEREF | |
| * @end: an end marker xmlChar, 0 if none | |
| * @end2: an end marker xmlChar, 0 if none | |
| * @end3: an end marker xmlChar, 0 if none | |
| * | |
| * This function is deprecated, we now always process entities content | |
| * through xmlStringDecodeEntities | |
| * | |
| * TODO: remove it in next major release. | |
| * | |
| * [67] Reference ::= EntityRef | CharRef | |
| * | |
| * [69] PEReference ::= '%' Name ';' | |
| * | |
| * Returns A newly allocated string with the substitution done. The caller | |
| * must deallocate it ! | |
| */ | |
| xmlChar * | |
| xmlDecodeEntities(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED, | |
| int len ATTRIBUTE_UNUSED, int what ATTRIBUTE_UNUSED, | |
| xmlChar end ATTRIBUTE_UNUSED, | |
| xmlChar end2 ATTRIBUTE_UNUSED, | |
| xmlChar end3 ATTRIBUTE_UNUSED) | |
| { | |
| static int deprecated = 0; | |
| if (!deprecated) { | |
| xmlGenericError(xmlGenericErrorContext, | |
| "xmlDecodeEntities() deprecated function reached\n"); | |
| deprecated = 1; | |
| } | |
| return (NULL); | |
| } | |
| /** | |
| * xmlNamespaceParseNCName: | |
| * @ctxt: an XML parser context | |
| * | |
| * parse an XML namespace name. | |
| * | |
| * TODO: this seems not in use anymore, the namespace handling is done on | |
| * top of the SAX interfaces, i.e. not on raw input. | |
| * | |
| * [NS 3] NCName ::= (Letter | '_') (NCNameChar)* | |
| * | |
| * [NS 4] NCNameChar ::= Letter | Digit | '.' | '-' | '_' | | |
| * CombiningChar | Extender | |
| * | |
| * Returns the namespace name or NULL | |
| */ | |
| xmlChar * | |
| xmlNamespaceParseNCName(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED) | |
| { | |
| static int deprecated = 0; | |
| if (!deprecated) { | |
| xmlGenericError(xmlGenericErrorContext, | |
| "xmlNamespaceParseNCName() deprecated function reached\n"); | |
| deprecated = 1; | |
| } | |
| return (NULL); | |
| } | |
| /** | |
| * xmlNamespaceParseQName: | |
| * @ctxt: an XML parser context | |
| * @prefix: a xmlChar ** | |
| * | |
| * TODO: this seems not in use anymore, the namespace handling is done on | |
| * top of the SAX interfaces, i.e. not on raw input. | |
| * | |
| * parse an XML qualified name | |
| * | |
| * [NS 5] QName ::= (Prefix ':')? LocalPart | |
| * | |
| * [NS 6] Prefix ::= NCName | |
| * | |
| * [NS 7] LocalPart ::= NCName | |
| * | |
| * Returns the local part, and prefix is updated | |
| * to get the Prefix if any. | |
| */ | |
| xmlChar * | |
| xmlNamespaceParseQName(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED, | |
| xmlChar ** prefix ATTRIBUTE_UNUSED) | |
| { | |
| static int deprecated = 0; | |
| if (!deprecated) { | |
| xmlGenericError(xmlGenericErrorContext, | |
| "xmlNamespaceParseQName() deprecated function reached\n"); | |
| deprecated = 1; | |
| } | |
| return (NULL); | |
| } | |
| /** | |
| * xmlNamespaceParseNSDef: | |
| * @ctxt: an XML parser context | |
| * | |
| * parse a namespace prefix declaration | |
| * | |
| * TODO: this seems not in use anymore, the namespace handling is done on | |
| * top of the SAX interfaces, i.e. not on raw input. | |
| * | |
| * [NS 1] NSDef ::= PrefixDef Eq SystemLiteral | |
| * | |
| * [NS 2] PrefixDef ::= 'xmlns' (':' NCName)? | |
| * | |
| * Returns the namespace name | |
| */ | |
| xmlChar * | |
| xmlNamespaceParseNSDef(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED) | |
| { | |
| static int deprecated = 0; | |
| if (!deprecated) { | |
| xmlGenericError(xmlGenericErrorContext, | |
| "xmlNamespaceParseNSDef() deprecated function reached\n"); | |
| deprecated = 1; | |
| } | |
| return (NULL); | |
| } | |
| /** | |
| * xmlParseQuotedString: | |
| * @ctxt: an XML parser context | |
| * | |
| * Parse and return a string between quotes or doublequotes | |
| * | |
| * TODO: Deprecated, to be removed at next drop of binary compatibility | |
| * | |
| * Returns the string parser or NULL. | |
| */ | |
| xmlChar * | |
| xmlParseQuotedString(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED) | |
| { | |
| static int deprecated = 0; | |
| if (!deprecated) { | |
| xmlGenericError(xmlGenericErrorContext, | |
| "xmlParseQuotedString() deprecated function reached\n"); | |
| deprecated = 1; | |
| } | |
| return (NULL); | |
| } | |
| /** | |
| * xmlParseNamespace: | |
| * @ctxt: an XML parser context | |
| * | |
| * xmlParseNamespace: parse specific PI '<?namespace ...' constructs. | |
| * | |
| * This is what the older xml-name Working Draft specified, a bunch of | |
| * other stuff may still rely on it, so support is still here as | |
| * if it was declared on the root of the Tree:-( | |
| * | |
| * TODO: remove from library | |
| * | |
| * To be removed at next drop of binary compatibility | |
| */ | |
| void | |
| xmlParseNamespace(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED) | |
| { | |
| static int deprecated = 0; | |
| if (!deprecated) { | |
| xmlGenericError(xmlGenericErrorContext, | |
| "xmlParseNamespace() deprecated function reached\n"); | |
| deprecated = 1; | |
| } | |
| } | |
| /** | |
| * xmlScanName: | |
| * @ctxt: an XML parser context | |
| * | |
| * Trickery: parse an XML name but without consuming the input flow | |
| * Needed for rollback cases. Used only when parsing entities references. | |
| * | |
| * TODO: seems deprecated now, only used in the default part of | |
| * xmlParserHandleReference | |
| * | |
| * [4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' | | |
| * CombiningChar | Extender | |
| * | |
| * [5] Name ::= (Letter | '_' | ':') (NameChar)* | |
| * | |
| * [6] Names ::= Name (S Name)* | |
| * | |
| * Returns the Name parsed or NULL | |
| */ | |
| xmlChar * | |
| xmlScanName(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED) | |
| { | |
| static int deprecated = 0; | |
| if (!deprecated) { | |
| xmlGenericError(xmlGenericErrorContext, | |
| "xmlScanName() deprecated function reached\n"); | |
| deprecated = 1; | |
| } | |
| return (NULL); | |
| } | |
| /** | |
| * xmlParserHandleReference: | |
| * @ctxt: the parser context | |
| * | |
| * TODO: Remove, now deprecated ... the test is done directly in the | |
| * content parsing | |
| * routines. | |
| * | |
| * [67] Reference ::= EntityRef | CharRef | |
| * | |
| * [68] EntityRef ::= '&' Name ';' | |
| * | |
| * [ WFC: Entity Declared ] | |
| * the Name given in the entity reference must match that in an entity | |
| * declaration, except that well-formed documents need not declare any | |
| * of the following entities: amp, lt, gt, apos, quot. | |
| * | |
| * [ WFC: Parsed Entity ] | |
| * An entity reference must not contain the name of an unparsed entity | |
| * | |
| * [66] CharRef ::= '&#' [0-9]+ ';' | | |
| * '&#x' [0-9a-fA-F]+ ';' | |
| * | |
| * A PEReference may have been detected in the current input stream | |
| * the handling is done accordingly to | |
| * http://www.w3.org/TR/REC-xml#entproc | |
| */ | |
| void | |
| xmlParserHandleReference(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED) | |
| { | |
| static int deprecated = 0; | |
| if (!deprecated) { | |
| xmlGenericError(xmlGenericErrorContext, | |
| "xmlParserHandleReference() deprecated function reached\n"); | |
| deprecated = 1; | |
| } | |
| return; | |
| } | |
| /** | |
| * xmlHandleEntity: | |
| * @ctxt: an XML parser context | |
| * @entity: an XML entity pointer. | |
| * | |
| * Default handling of defined entities, when should we define a new input | |
| * stream ? When do we just handle that as a set of chars ? | |
| * | |
| * OBSOLETE: to be removed at some point. | |
| */ | |
| void | |
| xmlHandleEntity(xmlParserCtxtPtr ctxt ATTRIBUTE_UNUSED, | |
| xmlEntityPtr entity ATTRIBUTE_UNUSED) | |
| { | |
| static int deprecated = 0; | |
| if (!deprecated) { | |
| xmlGenericError(xmlGenericErrorContext, | |
| "xmlHandleEntity() deprecated function reached\n"); | |
| deprecated = 1; | |
| } | |
| } | |
| /** | |
| * xmlNewGlobalNs: | |
| * @doc: the document carrying the namespace | |
| * @href: the URI associated | |
| * @prefix: the prefix for the namespace | |
| * | |
| * Creation of a Namespace, the old way using PI and without scoping | |
| * DEPRECATED !!! | |
| * Returns NULL this functionality had been removed | |
| */ | |
| xmlNsPtr | |
| xmlNewGlobalNs(xmlDocPtr doc ATTRIBUTE_UNUSED, | |
| const xmlChar * href ATTRIBUTE_UNUSED, | |
| const xmlChar * prefix ATTRIBUTE_UNUSED) | |
| { | |
| static int deprecated = 0; | |
| if (!deprecated) { | |
| xmlGenericError(xmlGenericErrorContext, | |
| "xmlNewGlobalNs() deprecated function reached\n"); | |
| deprecated = 1; | |
| } | |
| return (NULL); | |
| } | |
| /** | |
| * xmlUpgradeOldNs: | |
| * @doc: a document pointer | |
| * | |
| * Upgrade old style Namespaces (PI) and move them to the root of the document. | |
| * DEPRECATED | |
| */ | |
| void | |
| xmlUpgradeOldNs(xmlDocPtr doc ATTRIBUTE_UNUSED) | |
| { | |
| static int deprecated = 0; | |
| if (!deprecated) { | |
| xmlGenericError(xmlGenericErrorContext, | |
| "xmlUpgradeOldNs() deprecated function reached\n"); | |
| deprecated = 1; | |
| } | |
| } | |
| /** | |
| * xmlEncodeEntities: | |
| * @doc: the document containing the string | |
| * @input: A string to convert to XML. | |
| * | |
| * TODO: remove xmlEncodeEntities, once we are not afraid of breaking binary | |
| * compatibility | |
| * | |
| * People must migrate their code to xmlEncodeEntitiesReentrant ! | |
| * This routine will issue a warning when encountered. | |
| * | |
| * Returns NULL | |
| */ | |
| const xmlChar * | |
| xmlEncodeEntities(xmlDocPtr doc ATTRIBUTE_UNUSED, | |
| const xmlChar * input ATTRIBUTE_UNUSED) | |
| { | |
| static int warning = 1; | |
| if (warning) { | |
| xmlGenericError(xmlGenericErrorContext, | |
| "Deprecated API xmlEncodeEntities() used\n"); | |
| xmlGenericError(xmlGenericErrorContext, | |
| " change code to use xmlEncodeEntitiesReentrant()\n"); | |
| warning = 0; | |
| } | |
| return (NULL); | |
| } | |
| /************************************************************************ | |
| * * | |
| * Old set of SAXv1 functions * | |
| * * | |
| ************************************************************************/ | |
| static int deprecated_v1_msg = 0; | |
| #define DEPRECATED(n) \ | |
| if (deprecated_v1_msg == 0) \ | |
| xmlGenericError(xmlGenericErrorContext, \ | |
| "Use of deprecated SAXv1 function %s\n", n); \ | |
| deprecated_v1_msg++; | |
| /** | |
| * getPublicId: | |
| * @ctx: the user data (XML parser context) | |
| * | |
| * Provides the public ID e.g. "-//SGMLSOURCE//DTD DEMO//EN" | |
| * DEPRECATED: use xmlSAX2GetPublicId() | |
| * | |
| * Returns a xmlChar * | |
| */ | |
| const xmlChar * | |
| getPublicId(void *ctx) | |
| { | |
| DEPRECATED("getPublicId") | |
| return (xmlSAX2GetPublicId(ctx)); | |
| } | |
| /** | |
| * getSystemId: | |
| * @ctx: the user data (XML parser context) | |
| * | |
| * Provides the system ID, basically URL or filename e.g. | |
| * http://www.sgmlsource.com/dtds/memo.dtd | |
| * DEPRECATED: use xmlSAX2GetSystemId() | |
| * | |
| * Returns a xmlChar * | |
| */ | |
| const xmlChar * | |
| getSystemId(void *ctx) | |
| { | |
| DEPRECATED("getSystemId") | |
| return (xmlSAX2GetSystemId(ctx)); | |
| } | |
| /** | |
| * getLineNumber: | |
| * @ctx: the user data (XML parser context) | |
| * | |
| * Provide the line number of the current parsing point. | |
| * DEPRECATED: use xmlSAX2GetLineNumber() | |
| * | |
| * Returns an int | |
| */ | |
| int | |
| getLineNumber(void *ctx) | |
| { | |
| DEPRECATED("getLineNumber") | |
| return (xmlSAX2GetLineNumber(ctx)); | |
| } | |
| /** | |
| * getColumnNumber: | |
| * @ctx: the user data (XML parser context) | |
| * | |
| * Provide the column number of the current parsing point. | |
| * DEPRECATED: use xmlSAX2GetColumnNumber() | |
| * | |
| * Returns an int | |
| */ | |
| int | |
| getColumnNumber(void *ctx) | |
| { | |
| DEPRECATED("getColumnNumber") | |
| return (xmlSAX2GetColumnNumber(ctx)); | |
| } | |
| /** | |
| * isStandalone: | |
| * @ctx: the user data (XML parser context) | |
| * | |
| * Is this document tagged standalone ? | |
| * DEPRECATED: use xmlSAX2IsStandalone() | |
| * | |
| * Returns 1 if true | |
| */ | |
| int | |
| isStandalone(void *ctx) | |
| { | |
| DEPRECATED("isStandalone") | |
| return (xmlSAX2IsStandalone(ctx)); | |
| } | |
| /** | |
| * hasInternalSubset: | |
| * @ctx: the user data (XML parser context) | |
| * | |
| * Does this document has an internal subset | |
| * DEPRECATED: use xmlSAX2HasInternalSubset() | |
| * | |
| * Returns 1 if true | |
| */ | |
| int | |
| hasInternalSubset(void *ctx) | |
| { | |
| DEPRECATED("hasInternalSubset") | |
| return (xmlSAX2HasInternalSubset(ctx)); | |
| } | |
| /** | |
| * hasExternalSubset: | |
| * @ctx: the user data (XML parser context) | |
| * | |
| * Does this document has an external subset | |
| * DEPRECATED: use xmlSAX2HasExternalSubset() | |
| * | |
| * Returns 1 if true | |
| */ | |
| int | |
| hasExternalSubset(void *ctx) | |
| { | |
| DEPRECATED("hasExternalSubset") | |
| return (xmlSAX2HasExternalSubset(ctx)); | |
| } | |
| /** | |
| * internalSubset: | |
| * @ctx: the user data (XML parser context) | |
| * @name: the root element name | |
| * @ExternalID: the external ID | |
| * @SystemID: the SYSTEM ID (e.g. filename or URL) | |
| * | |
| * Callback on internal subset declaration. | |
| * DEPRECATED: use xmlSAX2InternalSubset() | |
| */ | |
| void | |
| internalSubset(void *ctx, const xmlChar * name, | |
| const xmlChar * ExternalID, const xmlChar * SystemID) | |
| { | |
| DEPRECATED("internalSubset") | |
| xmlSAX2InternalSubset(ctx, name, ExternalID, SystemID); | |
| } | |
| /** | |
| * externalSubset: | |
| * @ctx: the user data (XML parser context) | |
| * @name: the root element name | |
| * @ExternalID: the external ID | |
| * @SystemID: the SYSTEM ID (e.g. filename or URL) | |
| * | |
| * Callback on external subset declaration. | |
| * DEPRECATED: use xmlSAX2ExternalSubset() | |
| */ | |
| void | |
| externalSubset(void *ctx, const xmlChar * name, | |
| const xmlChar * ExternalID, const xmlChar * SystemID) | |
| { | |
| DEPRECATED("externalSubset") | |
| xmlSAX2ExternalSubset(ctx, name, ExternalID, SystemID); | |
| } | |
| /** | |
| * resolveEntity: | |
| * @ctx: the user data (XML parser context) | |
| * @publicId: The public ID of the entity | |
| * @systemId: The system ID of the entity | |
| * | |
| * The entity loader, to control the loading of external entities, | |
| * the application can either: | |
| * - override this resolveEntity() callback in the SAX block | |
| * - or better use the xmlSetExternalEntityLoader() function to | |
| * set up it's own entity resolution routine | |
| * DEPRECATED: use xmlSAX2ResolveEntity() | |
| * | |
| * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour. | |
| */ | |
| xmlParserInputPtr | |
| resolveEntity(void *ctx, const xmlChar * publicId, | |
| const xmlChar * systemId) | |
| { | |
| DEPRECATED("resolveEntity") | |
| return (xmlSAX2ResolveEntity(ctx, publicId, systemId)); | |
| } | |
| /** | |
| * getEntity: | |
| * @ctx: the user data (XML parser context) | |
| * @name: The entity name | |
| * | |
| * Get an entity by name | |
| * DEPRECATED: use xmlSAX2GetEntity() | |
| * | |
| * Returns the xmlEntityPtr if found. | |
| */ | |
| xmlEntityPtr | |
| getEntity(void *ctx, const xmlChar * name) | |
| { | |
| DEPRECATED("getEntity") | |
| return (xmlSAX2GetEntity(ctx, name)); | |
| } | |
| /** | |
| * getParameterEntity: | |
| * @ctx: the user data (XML parser context) | |
| * @name: The entity name | |
| * | |
| * Get a parameter entity by name | |
| * DEPRECATED: use xmlSAX2GetParameterEntity() | |
| * | |
| * Returns the xmlEntityPtr if found. | |
| */ | |
| xmlEntityPtr | |
| getParameterEntity(void *ctx, const xmlChar * name) | |
| { | |
| DEPRECATED("getParameterEntity") | |
| return (xmlSAX2GetParameterEntity(ctx, name)); | |
| } | |
| /** | |
| * entityDecl: | |
| * @ctx: the user data (XML parser context) | |
| * @name: the entity name | |
| * @type: the entity type | |
| * @publicId: The public ID of the entity | |
| * @systemId: The system ID of the entity | |
| * @content: the entity value (without processing). | |
| * | |
| * An entity definition has been parsed | |
| * DEPRECATED: use xmlSAX2EntityDecl() | |
| */ | |
| void | |
| entityDecl(void *ctx, const xmlChar * name, int type, | |
| const xmlChar * publicId, const xmlChar * systemId, | |
| xmlChar * content) | |
| { | |
| DEPRECATED("entityDecl") | |
| xmlSAX2EntityDecl(ctx, name, type, publicId, systemId, content); | |
| } | |
| /** | |
| * attributeDecl: | |
| * @ctx: the user data (XML parser context) | |
| * @elem: the name of the element | |
| * @fullname: the attribute name | |
| * @type: the attribute type | |
| * @def: the type of default value | |
| * @defaultValue: the attribute default value | |
| * @tree: the tree of enumerated value set | |
| * | |
| * An attribute definition has been parsed | |
| * DEPRECATED: use xmlSAX2AttributeDecl() | |
| */ | |
| void | |
| attributeDecl(void *ctx, const xmlChar * elem, const xmlChar * fullname, | |
| int type, int def, const xmlChar * defaultValue, | |
| xmlEnumerationPtr tree) | |
| { | |
| DEPRECATED("attributeDecl") | |
| xmlSAX2AttributeDecl(ctx, elem, fullname, type, def, defaultValue, | |
| tree); | |
| } | |
| /** | |
| * elementDecl: | |
| * @ctx: the user data (XML parser context) | |
| * @name: the element name | |
| * @type: the element type | |
| * @content: the element value tree | |
| * | |
| * An element definition has been parsed | |
| * DEPRECATED: use xmlSAX2ElementDecl() | |
| */ | |
| void | |
| elementDecl(void *ctx, const xmlChar * name, int type, | |
| xmlElementContentPtr content) | |
| { | |
| DEPRECATED("elementDecl") | |
| xmlSAX2ElementDecl(ctx, name, type, content); | |
| } | |
| /** | |
| * notationDecl: | |
| * @ctx: the user data (XML parser context) | |
| * @name: The name of the notation | |
| * @publicId: The public ID of the entity | |
| * @systemId: The system ID of the entity | |
| * | |
| * What to do when a notation declaration has been parsed. | |
| * DEPRECATED: use xmlSAX2NotationDecl() | |
| */ | |
| void | |
| notationDecl(void *ctx, const xmlChar * name, | |
| const xmlChar * publicId, const xmlChar * systemId) | |
| { | |
| DEPRECATED("notationDecl") | |
| xmlSAX2NotationDecl(ctx, name, publicId, systemId); | |
| } | |
| /** | |
| * unparsedEntityDecl: | |
| * @ctx: the user data (XML parser context) | |
| * @name: The name of the entity | |
| * @publicId: The public ID of the entity | |
| * @systemId: The system ID of the entity | |
| * @notationName: the name of the notation | |
| * | |
| * What to do when an unparsed entity declaration is parsed | |
| * DEPRECATED: use xmlSAX2UnparsedEntityDecl() | |
| */ | |
| void | |
| unparsedEntityDecl(void *ctx, const xmlChar * name, | |
| const xmlChar * publicId, const xmlChar * systemId, | |
| const xmlChar * notationName) | |
| { | |
| DEPRECATED("unparsedEntityDecl") | |
| xmlSAX2UnparsedEntityDecl(ctx, name, publicId, systemId, | |
| notationName); | |
| } | |
| /** | |
| * setDocumentLocator: | |
| * @ctx: the user data (XML parser context) | |
| * @loc: A SAX Locator | |
| * | |
| * Receive the document locator at startup, actually xmlDefaultSAXLocator | |
| * Everything is available on the context, so this is useless in our case. | |
| * DEPRECATED | |
| */ | |
| void | |
| setDocumentLocator(void *ctx ATTRIBUTE_UNUSED, | |
| xmlSAXLocatorPtr loc ATTRIBUTE_UNUSED) | |
| { | |
| DEPRECATED("setDocumentLocator") | |
| } | |
| /** | |
| * startDocument: | |
| * @ctx: the user data (XML parser context) | |
| * | |
| * called when the document start being processed. | |
| * DEPRECATED: use xmlSAX2StartDocument() | |
| */ | |
| void | |
| startDocument(void *ctx) | |
| { | |
| /* don't be too painful for glade users */ | |
| /* DEPRECATED("startDocument") */ | |
| xmlSAX2StartDocument(ctx); | |
| } | |
| /** | |
| * endDocument: | |
| * @ctx: the user data (XML parser context) | |
| * | |
| * called when the document end has been detected. | |
| * DEPRECATED: use xmlSAX2EndDocument() | |
| */ | |
| void | |
| endDocument(void *ctx) | |
| { | |
| DEPRECATED("endDocument") | |
| xmlSAX2EndDocument(ctx); | |
| } | |
| /** | |
| * attribute: | |
| * @ctx: the user data (XML parser context) | |
| * @fullname: The attribute name, including namespace prefix | |
| * @value: The attribute value | |
| * | |
| * Handle an attribute that has been read by the parser. | |
| * The default handling is to convert the attribute into an | |
| * DOM subtree and past it in a new xmlAttr element added to | |
| * the element. | |
| * DEPRECATED: use xmlSAX2Attribute() | |
| */ | |
| void | |
| attribute(void *ctx ATTRIBUTE_UNUSED, | |
| const xmlChar * fullname ATTRIBUTE_UNUSED, | |
| const xmlChar * value ATTRIBUTE_UNUSED) | |
| { | |
| DEPRECATED("attribute") | |
| } | |
| /** | |
| * startElement: | |
| * @ctx: the user data (XML parser context) | |
| * @fullname: The element name, including namespace prefix | |
| * @atts: An array of name/value attributes pairs, NULL terminated | |
| * | |
| * called when an opening tag has been processed. | |
| * DEPRECATED: use xmlSAX2StartElement() | |
| */ | |
| void | |
| startElement(void *ctx, const xmlChar * fullname, const xmlChar ** atts) | |
| { | |
| xmlSAX2StartElement(ctx, fullname, atts); | |
| } | |
| /** | |
| * endElement: | |
| * @ctx: the user data (XML parser context) | |
| * @name: The element name | |
| * | |
| * called when the end of an element has been detected. | |
| * DEPRECATED: use xmlSAX2EndElement() | |
| */ | |
| void | |
| endElement(void *ctx, const xmlChar * name ATTRIBUTE_UNUSED) | |
| { | |
| DEPRECATED("endElement") | |
| xmlSAX2EndElement(ctx, name); | |
| } | |
| /** | |
| * reference: | |
| * @ctx: the user data (XML parser context) | |
| * @name: The entity name | |
| * | |
| * called when an entity reference is detected. | |
| * DEPRECATED: use xmlSAX2Reference() | |
| */ | |
| void | |
| reference(void *ctx, const xmlChar * name) | |
| { | |
| DEPRECATED("reference") | |
| xmlSAX2Reference(ctx, name); | |
| } | |
| /** | |
| * characters: | |
| * @ctx: the user data (XML parser context) | |
| * @ch: a xmlChar string | |
| * @len: the number of xmlChar | |
| * | |
| * receiving some chars from the parser. | |
| * DEPRECATED: use xmlSAX2Characters() | |
| */ | |
| void | |
| characters(void *ctx, const xmlChar * ch, int len) | |
| { | |
| DEPRECATED("characters") | |
| xmlSAX2Characters(ctx, ch, len); | |
| } | |
| /** | |
| * ignorableWhitespace: | |
| * @ctx: the user data (XML parser context) | |
| * @ch: a xmlChar string | |
| * @len: the number of xmlChar | |
| * | |
| * receiving some ignorable whitespaces from the parser. | |
| * UNUSED: by default the DOM building will use characters | |
| * DEPRECATED: use xmlSAX2IgnorableWhitespace() | |
| */ | |
| void | |
| ignorableWhitespace(void *ctx ATTRIBUTE_UNUSED, | |
| const xmlChar * ch ATTRIBUTE_UNUSED, | |
| int len ATTRIBUTE_UNUSED) | |
| { | |
| DEPRECATED("ignorableWhitespace") | |
| } | |
| /** | |
| * processingInstruction: | |
| * @ctx: the user data (XML parser context) | |
| * @target: the target name | |
| * @data: the PI data's | |
| * | |
| * A processing instruction has been parsed. | |
| * DEPRECATED: use xmlSAX2ProcessingInstruction() | |
| */ | |
| void | |
| processingInstruction(void *ctx, const xmlChar * target, | |
| const xmlChar * data) | |
| { | |
| DEPRECATED("processingInstruction") | |
| xmlSAX2ProcessingInstruction(ctx, target, data); | |
| } | |
| /** | |
| * globalNamespace: | |
| * @ctx: the user data (XML parser context) | |
| * @href: the namespace associated URN | |
| * @prefix: the namespace prefix | |
| * | |
| * An old global namespace has been parsed. | |
| * DEPRECATED | |
| */ | |
| void | |
| globalNamespace(void *ctx ATTRIBUTE_UNUSED, | |
| const xmlChar * href ATTRIBUTE_UNUSED, | |
| const xmlChar * prefix ATTRIBUTE_UNUSED) | |
| { | |
| DEPRECATED("globalNamespace") | |
| } | |
| /** | |
| * setNamespace: | |
| * @ctx: the user data (XML parser context) | |
| * @name: the namespace prefix | |
| * | |
| * Set the current element namespace. | |
| * DEPRECATED | |
| */ | |
| void | |
| setNamespace(void *ctx ATTRIBUTE_UNUSED, | |
| const xmlChar * name ATTRIBUTE_UNUSED) | |
| { | |
| DEPRECATED("setNamespace") | |
| } | |
| /** | |
| * getNamespace: | |
| * @ctx: the user data (XML parser context) | |
| * | |
| * Get the current element namespace. | |
| * DEPRECATED | |
| * | |
| * Returns the xmlNsPtr or NULL if none | |
| */ | |
| xmlNsPtr | |
| getNamespace(void *ctx ATTRIBUTE_UNUSED) | |
| { | |
| DEPRECATED("getNamespace") | |
| return (NULL); | |
| } | |
| /** | |
| * checkNamespace: | |
| * @ctx: the user data (XML parser context) | |
| * @namespace: the namespace to check against | |
| * | |
| * Check that the current element namespace is the same as the | |
| * one read upon parsing. | |
| * DEPRECATED | |
| * | |
| * Returns 1 if true 0 otherwise | |
| */ | |
| int | |
| checkNamespace(void *ctx ATTRIBUTE_UNUSED, | |
| xmlChar * namespace ATTRIBUTE_UNUSED) | |
| { | |
| DEPRECATED("checkNamespace") | |
| return (0); | |
| } | |
| /** | |
| * namespaceDecl: | |
| * @ctx: the user data (XML parser context) | |
| * @href: the namespace associated URN | |
| * @prefix: the namespace prefix | |
| * | |
| * A namespace has been parsed. | |
| * DEPRECATED | |
| */ | |
| void | |
| namespaceDecl(void *ctx ATTRIBUTE_UNUSED, | |
| const xmlChar * href ATTRIBUTE_UNUSED, | |
| const xmlChar * prefix ATTRIBUTE_UNUSED) | |
| { | |
| DEPRECATED("namespaceDecl") | |
| } | |
| /** | |
| * comment: | |
| * @ctx: the user data (XML parser context) | |
| * @value: the comment content | |
| * | |
| * A comment has been parsed. | |
| * DEPRECATED: use xmlSAX2Comment() | |
| */ | |
| void | |
| comment(void *ctx, const xmlChar * value) | |
| { | |
| DEPRECATED("comment") | |
| xmlSAX2Comment(ctx, value); | |
| } | |
| /** | |
| * cdataBlock: | |
| * @ctx: the user data (XML parser context) | |
| * @value: The pcdata content | |
| * @len: the block length | |
| * | |
| * called when a pcdata block has been parsed | |
| * DEPRECATED: use xmlSAX2CDataBlock() | |
| */ | |
| void | |
| cdataBlock(void *ctx, const xmlChar * value, int len) | |
| { | |
| DEPRECATED("cdataBlock") | |
| xmlSAX2CDataBlock(ctx, value, len); | |
| } | |
| #define bottom_legacy | |
| #include "elfgcchack.h" | |
| #endif /* LIBXML_LEGACY_ENABLED */ | |