Index: third_party/libxslt/libxslt/documents.c |
diff --git a/third_party/libxslt/libxslt/documents.c b/third_party/libxslt/libxslt/documents.c |
deleted file mode 100644 |
index 3f3a7312ca8e27fac181866c44eeea80e772992f..0000000000000000000000000000000000000000 |
--- a/third_party/libxslt/libxslt/documents.c |
+++ /dev/null |
@@ -1,434 +0,0 @@ |
-/* |
- * documents.c: Implementation of the documents handling |
- * |
- * See Copyright for the status of this software. |
- * |
- * daniel@veillard.com |
- */ |
- |
-#define IN_LIBXSLT |
-#include "libxslt.h" |
- |
-#include <string.h> |
- |
-#include <libxml/xmlmemory.h> |
-#include <libxml/tree.h> |
-#include <libxml/hash.h> |
-#include <libxml/parser.h> |
-#include <libxml/parserInternals.h> |
-#include "xslt.h" |
-#include "xsltInternals.h" |
-#include "xsltutils.h" |
-#include "documents.h" |
-#include "transform.h" |
-#include "imports.h" |
-#include "keys.h" |
-#include "security.h" |
- |
-#ifdef LIBXML_XINCLUDE_ENABLED |
-#include <libxml/xinclude.h> |
-#endif |
- |
-#define WITH_XSLT_DEBUG_DOCUMENTS |
- |
-#ifdef WITH_XSLT_DEBUG |
-#define WITH_XSLT_DEBUG_DOCUMENTS |
-#endif |
- |
-/************************************************************************ |
- * * |
- * Hooks for the document loader * |
- * * |
- ************************************************************************/ |
- |
-/** |
- * xsltDocDefaultLoaderFunc: |
- * @URI: the URI of the document to load |
- * @dict: the dictionary to use when parsing that document |
- * @options: parsing options, a set of xmlParserOption |
- * @ctxt: the context, either a stylesheet or a transformation context |
- * @type: the xsltLoadType indicating the kind of loading required |
- * |
- * Default function to load document not provided by the compilation or |
- * transformation API themselve, for example when an xsl:import, |
- * xsl:include is found at compilation time or when a document() |
- * call is made at runtime. |
- * |
- * Returns the pointer to the document (which will be modified and |
- * freed by the engine later), or NULL in case of error. |
- */ |
-static xmlDocPtr |
-xsltDocDefaultLoaderFunc(const xmlChar * URI, xmlDictPtr dict, int options, |
- void *ctxt ATTRIBUTE_UNUSED, |
- xsltLoadType type ATTRIBUTE_UNUSED) |
-{ |
- xmlParserCtxtPtr pctxt; |
- xmlParserInputPtr inputStream; |
- xmlDocPtr doc; |
- |
- pctxt = xmlNewParserCtxt(); |
- if (pctxt == NULL) |
- return(NULL); |
- if ((dict != NULL) && (pctxt->dict != NULL)) { |
- xmlDictFree(pctxt->dict); |
- pctxt->dict = NULL; |
- } |
- if (dict != NULL) { |
- pctxt->dict = dict; |
- xmlDictReference(pctxt->dict); |
-#ifdef WITH_XSLT_DEBUG |
- xsltGenericDebug(xsltGenericDebugContext, |
- "Reusing dictionary for document\n"); |
-#endif |
- } |
- xmlCtxtUseOptions(pctxt, options); |
- inputStream = xmlLoadExternalEntity((const char *) URI, NULL, pctxt); |
- if (inputStream == NULL) { |
- xmlFreeParserCtxt(pctxt); |
- return(NULL); |
- } |
- inputPush(pctxt, inputStream); |
- if (pctxt->directory == NULL) |
- pctxt->directory = xmlParserGetDirectory((const char *) URI); |
- |
- xmlParseDocument(pctxt); |
- |
- if (pctxt->wellFormed) { |
- doc = pctxt->myDoc; |
- } |
- else { |
- doc = NULL; |
- xmlFreeDoc(pctxt->myDoc); |
- pctxt->myDoc = NULL; |
- } |
- xmlFreeParserCtxt(pctxt); |
- |
- return(doc); |
-} |
- |
- |
-xsltDocLoaderFunc xsltDocDefaultLoader = xsltDocDefaultLoaderFunc; |
- |
-/** |
- * xsltSetLoaderFunc: |
- * @f: the new function to handle document loading. |
- * |
- * Set the new function to load document, if NULL it resets it to the |
- * default function. |
- */ |
- |
-void |
-xsltSetLoaderFunc(xsltDocLoaderFunc f) { |
- if (f == NULL) |
- xsltDocDefaultLoader = xsltDocDefaultLoaderFunc; |
- else |
- xsltDocDefaultLoader = f; |
-} |
- |
-/************************************************************************ |
- * * |
- * Module interfaces * |
- * * |
- ************************************************************************/ |
- |
-/** |
- * xsltNewDocument: |
- * @ctxt: an XSLT transformation context (or NULL) |
- * @doc: a parsed XML document |
- * |
- * Register a new document, apply key computations |
- * |
- * Returns a handler to the document |
- */ |
-xsltDocumentPtr |
-xsltNewDocument(xsltTransformContextPtr ctxt, xmlDocPtr doc) { |
- xsltDocumentPtr cur; |
- |
- cur = (xsltDocumentPtr) xmlMalloc(sizeof(xsltDocument)); |
- if (cur == NULL) { |
- xsltTransformError(ctxt, NULL, (xmlNodePtr) doc, |
- "xsltNewDocument : malloc failed\n"); |
- return(NULL); |
- } |
- memset(cur, 0, sizeof(xsltDocument)); |
- cur->doc = doc; |
- if (ctxt != NULL) { |
- if (! XSLT_IS_RES_TREE_FRAG(doc)) { |
- cur->next = ctxt->docList; |
- ctxt->docList = cur; |
- } |
- /* |
- * A key with a specific name for a specific document |
- * will only be computed if there's a call to the key() |
- * function using that specific name for that specific |
- * document. I.e. computation of keys will be done in |
- * xsltGetKey() (keys.c) on an on-demand basis. |
- * |
- * xsltInitCtxtKeys(ctxt, cur); not called here anymore |
- */ |
- } |
- return(cur); |
-} |
- |
-/** |
- * xsltNewStyleDocument: |
- * @style: an XSLT style sheet |
- * @doc: a parsed XML document |
- * |
- * Register a new document, apply key computations |
- * |
- * Returns a handler to the document |
- */ |
-xsltDocumentPtr |
-xsltNewStyleDocument(xsltStylesheetPtr style, xmlDocPtr doc) { |
- xsltDocumentPtr cur; |
- |
- cur = (xsltDocumentPtr) xmlMalloc(sizeof(xsltDocument)); |
- if (cur == NULL) { |
- xsltTransformError(NULL, style, (xmlNodePtr) doc, |
- "xsltNewStyleDocument : malloc failed\n"); |
- return(NULL); |
- } |
- memset(cur, 0, sizeof(xsltDocument)); |
- cur->doc = doc; |
- if (style != NULL) { |
- cur->next = style->docList; |
- style->docList = cur; |
- } |
- return(cur); |
-} |
- |
-/** |
- * xsltFreeStyleDocuments: |
- * @style: an XSLT stylesheet (representing a stylesheet-level) |
- * |
- * Frees the node-trees (and xsltDocument structures) of all |
- * stylesheet-modules of the stylesheet-level represented by |
- * the given @style. |
- */ |
-void |
-xsltFreeStyleDocuments(xsltStylesheetPtr style) { |
- xsltDocumentPtr doc, cur; |
-#ifdef XSLT_REFACTORED_XSLT_NSCOMP |
- xsltNsMapPtr nsMap; |
-#endif |
- |
- if (style == NULL) |
- return; |
- |
-#ifdef XSLT_REFACTORED_XSLT_NSCOMP |
- if (XSLT_HAS_INTERNAL_NSMAP(style)) |
- nsMap = XSLT_GET_INTERNAL_NSMAP(style); |
- else |
- nsMap = NULL; |
-#endif |
- |
- cur = style->docList; |
- while (cur != NULL) { |
- doc = cur; |
- cur = cur->next; |
-#ifdef XSLT_REFACTORED_XSLT_NSCOMP |
- /* |
- * Restore all changed namespace URIs of ns-decls. |
- */ |
- if (nsMap) |
- xsltRestoreDocumentNamespaces(nsMap, doc->doc); |
-#endif |
- xsltFreeDocumentKeys(doc); |
- if (!doc->main) |
- xmlFreeDoc(doc->doc); |
- xmlFree(doc); |
- } |
-} |
- |
-/** |
- * xsltFreeDocuments: |
- * @ctxt: an XSLT transformation context |
- * |
- * Free up all the space used by the loaded documents |
- */ |
-void |
-xsltFreeDocuments(xsltTransformContextPtr ctxt) { |
- xsltDocumentPtr doc, cur; |
- |
- cur = ctxt->docList; |
- while (cur != NULL) { |
- doc = cur; |
- cur = cur->next; |
- xsltFreeDocumentKeys(doc); |
- if (!doc->main) |
- xmlFreeDoc(doc->doc); |
- xmlFree(doc); |
- } |
- cur = ctxt->styleList; |
- while (cur != NULL) { |
- doc = cur; |
- cur = cur->next; |
- xsltFreeDocumentKeys(doc); |
- if (!doc->main) |
- xmlFreeDoc(doc->doc); |
- xmlFree(doc); |
- } |
-} |
- |
-/** |
- * xsltLoadDocument: |
- * @ctxt: an XSLT transformation context |
- * @URI: the computed URI of the document |
- * |
- * Try to load a document (not a stylesheet) |
- * within the XSLT transformation context |
- * |
- * Returns the new xsltDocumentPtr or NULL in case of error |
- */ |
-xsltDocumentPtr |
-xsltLoadDocument(xsltTransformContextPtr ctxt, const xmlChar *URI) { |
- xsltDocumentPtr ret; |
- xmlDocPtr doc; |
- |
- if ((ctxt == NULL) || (URI == NULL)) |
- return(NULL); |
- |
- /* |
- * Security framework check |
- */ |
- if (ctxt->sec != NULL) { |
- int res; |
- |
- res = xsltCheckRead(ctxt->sec, ctxt, URI); |
- if (res == 0) { |
- xsltTransformError(ctxt, NULL, NULL, |
- "xsltLoadDocument: read rights for %s denied\n", |
- URI); |
- return(NULL); |
- } |
- } |
- |
- /* |
- * Walk the context list to find the document if preparsed |
- */ |
- ret = ctxt->docList; |
- while (ret != NULL) { |
- if ((ret->doc != NULL) && (ret->doc->URL != NULL) && |
- (xmlStrEqual(ret->doc->URL, URI))) |
- return(ret); |
- ret = ret->next; |
- } |
- |
- doc = xsltDocDefaultLoader(URI, ctxt->dict, ctxt->parserOptions, |
- (void *) ctxt, XSLT_LOAD_DOCUMENT); |
- |
- if (doc == NULL) |
- return(NULL); |
- |
- if (ctxt->xinclude != 0) { |
-#ifdef LIBXML_XINCLUDE_ENABLED |
-#if LIBXML_VERSION >= 20603 |
- xmlXIncludeProcessFlags(doc, ctxt->parserOptions); |
-#else |
- xmlXIncludeProcess(doc); |
-#endif |
-#else |
- xsltTransformError(ctxt, NULL, NULL, |
- "xsltLoadDocument(%s) : XInclude processing not compiled in\n", |
- URI); |
-#endif |
- } |
- /* |
- * Apply white-space stripping if asked for |
- */ |
- if (xsltNeedElemSpaceHandling(ctxt)) |
- xsltApplyStripSpaces(ctxt, xmlDocGetRootElement(doc)); |
- if (ctxt->debugStatus == XSLT_DEBUG_NONE) |
- xmlXPathOrderDocElems(doc); |
- |
- ret = xsltNewDocument(ctxt, doc); |
- return(ret); |
-} |
- |
-/** |
- * xsltLoadStyleDocument: |
- * @style: an XSLT style sheet |
- * @URI: the computed URI of the document |
- * |
- * Try to load a stylesheet document within the XSLT transformation context |
- * |
- * Returns the new xsltDocumentPtr or NULL in case of error |
- */ |
-xsltDocumentPtr |
-xsltLoadStyleDocument(xsltStylesheetPtr style, const xmlChar *URI) { |
- xsltDocumentPtr ret; |
- xmlDocPtr doc; |
- xsltSecurityPrefsPtr sec; |
- |
- if ((style == NULL) || (URI == NULL)) |
- return(NULL); |
- |
- /* |
- * Security framework check |
- */ |
- sec = xsltGetDefaultSecurityPrefs(); |
- if (sec != NULL) { |
- int res; |
- |
- res = xsltCheckRead(sec, NULL, URI); |
- if (res == 0) { |
- xsltTransformError(NULL, NULL, NULL, |
- "xsltLoadStyleDocument: read rights for %s denied\n", |
- URI); |
- return(NULL); |
- } |
- } |
- |
- /* |
- * Walk the context list to find the document if preparsed |
- */ |
- ret = style->docList; |
- while (ret != NULL) { |
- if ((ret->doc != NULL) && (ret->doc->URL != NULL) && |
- (xmlStrEqual(ret->doc->URL, URI))) |
- return(ret); |
- ret = ret->next; |
- } |
- |
- doc = xsltDocDefaultLoader(URI, style->dict, XSLT_PARSE_OPTIONS, |
- (void *) style, XSLT_LOAD_STYLESHEET); |
- if (doc == NULL) |
- return(NULL); |
- |
- ret = xsltNewStyleDocument(style, doc); |
- return(ret); |
-} |
- |
-/** |
- * xsltFindDocument: |
- * @ctxt: an XSLT transformation context |
- * @doc: a parsed XML document |
- * |
- * Try to find a document within the XSLT transformation context. |
- * This will not find document infos for temporary |
- * Result Tree Fragments. |
- * |
- * Returns the desired xsltDocumentPtr or NULL in case of error |
- */ |
-xsltDocumentPtr |
-xsltFindDocument (xsltTransformContextPtr ctxt, xmlDocPtr doc) { |
- xsltDocumentPtr ret; |
- |
- if ((ctxt == NULL) || (doc == NULL)) |
- return(NULL); |
- |
- /* |
- * Walk the context list to find the document |
- */ |
- ret = ctxt->docList; |
- while (ret != NULL) { |
- if (ret->doc == doc) |
- return(ret); |
- ret = ret->next; |
- } |
- if (doc == ctxt->style->doc) |
- return(ctxt->document); |
- return(NULL); |
-} |
- |