diff options
author | wawaka <wawaka@yandex-team.ru> | 2022-02-10 16:47:48 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:47:48 +0300 |
commit | ed524783c88c81047033c5d6e5543db3a2251ad5 (patch) | |
tree | 5c595c0ac1b14fbb70e7e71df44b52e47f850387 /contrib/libs/libxml/xlink.c | |
parent | 11ec0273ab97c87692cd0004865c7f24d14f9902 (diff) | |
download | ydb-ed524783c88c81047033c5d6e5543db3a2251ad5.tar.gz |
Restoring authorship annotation for <wawaka@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/libs/libxml/xlink.c')
-rw-r--r-- | contrib/libs/libxml/xlink.c | 362 |
1 files changed, 181 insertions, 181 deletions
diff --git a/contrib/libs/libxml/xlink.c b/contrib/libs/libxml/xlink.c index ecf9f968a7..0757d1c4a9 100644 --- a/contrib/libs/libxml/xlink.c +++ b/contrib/libs/libxml/xlink.c @@ -1,183 +1,183 @@ -/* - * xlink.c : implementation of the hyperlinks detection module - * This version supports both XML XLinks and HTML simple links - * - * See Copyright for the status of this software. - * - * daniel@veillard.com - */ - - -#define IN_LIBXML -#include "libxml.h" - -#ifdef LIBXML_XPTR_ENABLED -#include <string.h> /* for memset() only */ -#ifdef HAVE_CTYPE_H -#include <ctype.h> -#endif -#ifdef HAVE_STDLIB_H -#include <stdlib.h> -#endif -#ifdef HAVE_SYS_STAT_H -#include <sys/stat.h> -#endif -#ifdef HAVE_FCNTL_H -#include <fcntl.h> -#endif -#ifdef HAVE_UNISTD_H -#include <unistd.h> -#endif +/* + * xlink.c : implementation of the hyperlinks detection module + * This version supports both XML XLinks and HTML simple links + * + * See Copyright for the status of this software. + * + * daniel@veillard.com + */ + + +#define IN_LIBXML +#include "libxml.h" + +#ifdef LIBXML_XPTR_ENABLED +#include <string.h> /* for memset() only */ +#ifdef HAVE_CTYPE_H +#include <ctype.h> +#endif +#ifdef HAVE_STDLIB_H +#include <stdlib.h> +#endif +#ifdef HAVE_SYS_STAT_H +#include <sys/stat.h> +#endif +#ifdef HAVE_FCNTL_H +#include <fcntl.h> +#endif +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif #ifdef LIBXML_ZLIB_ENABLED #include <zlib.h> -#endif - -#include <libxml/xmlmemory.h> -#include <libxml/tree.h> -#include <libxml/parser.h> -#include <libxml/valid.h> -#include <libxml/xlink.h> -#include <libxml/globals.h> - -#define XLINK_NAMESPACE (BAD_CAST "http://www.w3.org/1999/xlink/namespace/") -#define XHTML_NAMESPACE (BAD_CAST "http://www.w3.org/1999/xhtml/") - -/**************************************************************** - * * - * Default setting and related functions * - * * - ****************************************************************/ - -static xlinkHandlerPtr xlinkDefaultHandler = NULL; -static xlinkNodeDetectFunc xlinkDefaultDetect = NULL; - -/** - * xlinkGetDefaultHandler: - * - * Get the default xlink handler. - * - * Returns the current xlinkHandlerPtr value. - */ -xlinkHandlerPtr -xlinkGetDefaultHandler(void) { - return(xlinkDefaultHandler); -} - - -/** - * xlinkSetDefaultHandler: - * @handler: the new value for the xlink handler block - * - * Set the default xlink handlers - */ -void -xlinkSetDefaultHandler(xlinkHandlerPtr handler) { - xlinkDefaultHandler = handler; -} - -/** - * xlinkGetDefaultDetect: - * - * Get the default xlink detection routine - * - * Returns the current function or NULL; - */ -xlinkNodeDetectFunc -xlinkGetDefaultDetect (void) { - return(xlinkDefaultDetect); -} - -/** - * xlinkSetDefaultDetect: - * @func: pointer to the new detection routine. - * - * Set the default xlink detection routine - */ -void -xlinkSetDefaultDetect (xlinkNodeDetectFunc func) { - xlinkDefaultDetect = func; -} - -/**************************************************************** - * * - * The detection routines * - * * - ****************************************************************/ - - -/** - * xlinkIsLink: - * @doc: the document containing the node - * @node: the node pointer itself - * - * Check whether the given node carries the attributes needed - * to be a link element (or is one of the linking elements issued - * from the (X)HTML DtDs). - * This routine don't try to do full checking of the link validity - * but tries to detect and return the appropriate link type. - * - * Returns the xlinkType of the node (XLINK_TYPE_NONE if there is no - * link detected. - */ -xlinkType -xlinkIsLink (xmlDocPtr doc, xmlNodePtr node) { - xmlChar *type = NULL, *role = NULL; - xlinkType ret = XLINK_TYPE_NONE; - - if (node == NULL) return(XLINK_TYPE_NONE); - if (doc == NULL) doc = node->doc; - if ((doc != NULL) && (doc->type == XML_HTML_DOCUMENT_NODE)) { - /* - * This is an HTML document. - */ - } else if ((node->ns != NULL) && - (xmlStrEqual(node->ns->href, XHTML_NAMESPACE))) { - /* - * !!!! We really need an IS_XHTML_ELEMENT function from HTMLtree.h @@@ - */ - /* - * This is an XHTML element within an XML document - * Check whether it's one of the element able to carry links - * and in that case if it holds the attributes. - */ - } - - /* - * We don't prevent a-priori having XML Linking constructs on - * XHTML elements - */ - type = xmlGetNsProp(node, BAD_CAST"type", XLINK_NAMESPACE); - if (type != NULL) { - if (xmlStrEqual(type, BAD_CAST "simple")) { - ret = XLINK_TYPE_SIMPLE; - } else if (xmlStrEqual(type, BAD_CAST "extended")) { - role = xmlGetNsProp(node, BAD_CAST "role", XLINK_NAMESPACE); - if (role != NULL) { - xmlNsPtr xlink; - xlink = xmlSearchNs(doc, node, XLINK_NAMESPACE); - if (xlink == NULL) { - /* Humm, fallback method */ - if (xmlStrEqual(role, BAD_CAST"xlink:external-linkset")) - ret = XLINK_TYPE_EXTENDED_SET; - } else { - xmlChar buf[200]; - snprintf((char *) buf, sizeof(buf), "%s:external-linkset", - (char *) xlink->prefix); - buf[sizeof(buf) - 1] = 0; - if (xmlStrEqual(role, buf)) - ret = XLINK_TYPE_EXTENDED_SET; - - } - - } - ret = XLINK_TYPE_EXTENDED; - } - } - - if (type != NULL) xmlFree(type); - if (role != NULL) xmlFree(role); - return(ret); -} -#endif /* LIBXML_XPTR_ENABLED */ -#define bottom_xlink -#include "elfgcchack.h" +#endif + +#include <libxml/xmlmemory.h> +#include <libxml/tree.h> +#include <libxml/parser.h> +#include <libxml/valid.h> +#include <libxml/xlink.h> +#include <libxml/globals.h> + +#define XLINK_NAMESPACE (BAD_CAST "http://www.w3.org/1999/xlink/namespace/") +#define XHTML_NAMESPACE (BAD_CAST "http://www.w3.org/1999/xhtml/") + +/**************************************************************** + * * + * Default setting and related functions * + * * + ****************************************************************/ + +static xlinkHandlerPtr xlinkDefaultHandler = NULL; +static xlinkNodeDetectFunc xlinkDefaultDetect = NULL; + +/** + * xlinkGetDefaultHandler: + * + * Get the default xlink handler. + * + * Returns the current xlinkHandlerPtr value. + */ +xlinkHandlerPtr +xlinkGetDefaultHandler(void) { + return(xlinkDefaultHandler); +} + + +/** + * xlinkSetDefaultHandler: + * @handler: the new value for the xlink handler block + * + * Set the default xlink handlers + */ +void +xlinkSetDefaultHandler(xlinkHandlerPtr handler) { + xlinkDefaultHandler = handler; +} + +/** + * xlinkGetDefaultDetect: + * + * Get the default xlink detection routine + * + * Returns the current function or NULL; + */ +xlinkNodeDetectFunc +xlinkGetDefaultDetect (void) { + return(xlinkDefaultDetect); +} + +/** + * xlinkSetDefaultDetect: + * @func: pointer to the new detection routine. + * + * Set the default xlink detection routine + */ +void +xlinkSetDefaultDetect (xlinkNodeDetectFunc func) { + xlinkDefaultDetect = func; +} + +/**************************************************************** + * * + * The detection routines * + * * + ****************************************************************/ + + +/** + * xlinkIsLink: + * @doc: the document containing the node + * @node: the node pointer itself + * + * Check whether the given node carries the attributes needed + * to be a link element (or is one of the linking elements issued + * from the (X)HTML DtDs). + * This routine don't try to do full checking of the link validity + * but tries to detect and return the appropriate link type. + * + * Returns the xlinkType of the node (XLINK_TYPE_NONE if there is no + * link detected. + */ +xlinkType +xlinkIsLink (xmlDocPtr doc, xmlNodePtr node) { + xmlChar *type = NULL, *role = NULL; + xlinkType ret = XLINK_TYPE_NONE; + + if (node == NULL) return(XLINK_TYPE_NONE); + if (doc == NULL) doc = node->doc; + if ((doc != NULL) && (doc->type == XML_HTML_DOCUMENT_NODE)) { + /* + * This is an HTML document. + */ + } else if ((node->ns != NULL) && + (xmlStrEqual(node->ns->href, XHTML_NAMESPACE))) { + /* + * !!!! We really need an IS_XHTML_ELEMENT function from HTMLtree.h @@@ + */ + /* + * This is an XHTML element within an XML document + * Check whether it's one of the element able to carry links + * and in that case if it holds the attributes. + */ + } + + /* + * We don't prevent a-priori having XML Linking constructs on + * XHTML elements + */ + type = xmlGetNsProp(node, BAD_CAST"type", XLINK_NAMESPACE); + if (type != NULL) { + if (xmlStrEqual(type, BAD_CAST "simple")) { + ret = XLINK_TYPE_SIMPLE; + } else if (xmlStrEqual(type, BAD_CAST "extended")) { + role = xmlGetNsProp(node, BAD_CAST "role", XLINK_NAMESPACE); + if (role != NULL) { + xmlNsPtr xlink; + xlink = xmlSearchNs(doc, node, XLINK_NAMESPACE); + if (xlink == NULL) { + /* Humm, fallback method */ + if (xmlStrEqual(role, BAD_CAST"xlink:external-linkset")) + ret = XLINK_TYPE_EXTENDED_SET; + } else { + xmlChar buf[200]; + snprintf((char *) buf, sizeof(buf), "%s:external-linkset", + (char *) xlink->prefix); + buf[sizeof(buf) - 1] = 0; + if (xmlStrEqual(role, buf)) + ret = XLINK_TYPE_EXTENDED_SET; + + } + + } + ret = XLINK_TYPE_EXTENDED; + } + } + + if (type != NULL) xmlFree(type); + if (role != NULL) xmlFree(role); + return(ret); +} +#endif /* LIBXML_XPTR_ENABLED */ +#define bottom_xlink +#include "elfgcchack.h" |