From 12d4370b3f7855984cce38481816e527d94ddbd5 Mon Sep 17 00:00:00 2001 From: zhengchao Date: Sun, 14 Oct 2018 17:11:45 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84cache=E7=9B=AE=E5=BD=95?= =?UTF-8?q?=EF=BC=8C=E5=B0=86libxml2=E3=80=81libcurl=E6=94=BE=E5=88=B0vend?= =?UTF-8?q?or=E7=9B=AE=E5=BD=95=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cache/CMakeLists.txt | 5 + cache/Makefile | 24 - cache/include/curl/curl.h | 2774 ----------------- cache/include/curl/curlver.h | 77 - cache/include/curl/easy.h | 102 - cache/include/curl/mprintf.h | 50 - cache/include/curl/multi.h | 441 --- cache/include/curl/stdcheaders.h | 33 - cache/include/curl/system.h | 473 --- cache/include/curl/typecheck-gcc.h | 696 ----- cache/include/libevent2/evdns.h | 45 - cache/include/libevent2/event.h | 83 - cache/include/libevent2/event2/buffer.h | 1076 ------- .../include/libevent2/event2/buffer_compat.h | 115 - cache/include/libevent2/event2/bufferevent.h | 1021 ------ .../libevent2/event2/bufferevent_compat.h | 100 - .../libevent2/event2/bufferevent_ssl.h | 134 - .../libevent2/event2/bufferevent_struct.h | 116 - cache/include/libevent2/event2/dns.h | 717 ----- cache/include/libevent2/event2/dns_compat.h | 336 -- cache/include/libevent2/event2/dns_struct.h | 80 - cache/include/libevent2/event2/event-config.h | 545 ---- cache/include/libevent2/event2/event.h | 1675 ---------- cache/include/libevent2/event2/event_compat.h | 230 -- cache/include/libevent2/event2/event_struct.h | 180 -- cache/include/libevent2/event2/http.h | 1189 ------- cache/include/libevent2/event2/http_compat.h | 90 - cache/include/libevent2/event2/http_struct.h | 152 - .../include/libevent2/event2/keyvalq_struct.h | 80 - cache/include/libevent2/event2/listener.h | 180 -- cache/include/libevent2/event2/rpc.h | 596 ---- cache/include/libevent2/event2/rpc_compat.h | 61 - cache/include/libevent2/event2/rpc_struct.h | 100 - cache/include/libevent2/event2/tag.h | 146 - cache/include/libevent2/event2/tag_compat.h | 49 - cache/include/libevent2/event2/thread.h | 253 -- cache/include/libevent2/event2/util.h | 866 ----- cache/include/libevent2/event2/visibility.h | 50 - cache/include/libevent2/evhttp.h | 45 - cache/include/libevent2/evrpc.h | 45 - cache/include/libevent2/evutil.h | 39 - cache/include/libxml/DOCBparser.h | 96 - cache/include/libxml/HTMLparser.h | 306 -- cache/include/libxml/HTMLtree.h | 147 - cache/include/libxml/SAX.h | 173 - cache/include/libxml/SAX2.h | 178 -- cache/include/libxml/c14n.h | 126 - cache/include/libxml/catalog.h | 182 -- cache/include/libxml/chvalid.h | 230 -- cache/include/libxml/debugXML.h | 217 -- cache/include/libxml/dict.h | 80 - cache/include/libxml/encoding.h | 240 -- cache/include/libxml/entities.h | 151 - cache/include/libxml/globals.h | 509 --- cache/include/libxml/hash.h | 233 -- cache/include/libxml/list.h | 137 - cache/include/libxml/nanoftp.h | 163 - cache/include/libxml/nanohttp.h | 81 - cache/include/libxml/parser.h | 1241 -------- cache/include/libxml/parserInternals.h | 644 ---- cache/include/libxml/pattern.h | 100 - cache/include/libxml/relaxng.h | 217 -- cache/include/libxml/schemasInternals.h | 958 ------ cache/include/libxml/schematron.h | 142 - cache/include/libxml/threads.h | 84 - cache/include/libxml/tree.h | 1310 -------- cache/include/libxml/uri.h | 94 - cache/include/libxml/valid.h | 458 --- cache/include/libxml/xinclude.h | 129 - cache/include/libxml/xlink.h | 189 -- cache/include/libxml/xmlIO.h | 366 --- cache/include/libxml/xmlautomata.h | 146 - cache/include/libxml/xmlerror.h | 945 ------ cache/include/libxml/xmlexports.h | 162 - cache/include/libxml/xmlmemory.h | 224 -- cache/include/libxml/xmlmodule.h | 57 - cache/include/libxml/xmlreader.h | 428 --- cache/include/libxml/xmlregexp.h | 222 -- cache/include/libxml/xmlsave.h | 88 - cache/include/libxml/xmlschemas.h | 246 -- cache/include/libxml/xmlschemastypes.h | 151 - cache/include/libxml/xmlstring.h | 140 - cache/include/libxml/xmlunicode.h | 202 -- cache/include/libxml/xmlversion.h | 489 --- cache/include/libxml/xmlwriter.h | 488 --- cache/include/libxml/xpath.h | 557 ---- cache/include/libxml/xpathInternals.h | 632 ---- cache/include/libxml/xpointer.h | 114 - cache/include/tango_cache_client.h | 8 +- cache/include/tango_cache_pending.h | 4 +- cache/pangu_tango_cache.a | Bin 251776 -> 0 bytes cache/{ => src}/cache_evbase_client.cpp | 0 cache/{ => src}/tango_cache_client.cpp | 0 cache/{ => src}/tango_cache_client_in.h | 0 cache/src/tango_cache_pending.cpp | 50 +- cache/{ => src}/tango_cache_tools.cpp | 0 cache/{ => src}/tango_cache_tools.h | 0 cache/{ => src}/tango_cache_transfer.cpp | 0 cache/{ => src}/tango_cache_transfer.h | 0 cache/{ => src}/tango_cache_xml.cpp | 0 cache/{ => src}/tango_cache_xml.h | 0 cache/support/libevent-2.1.8-stable.tar.gz | Bin 1026485 -> 0 bytes cache/support/wired_lb-master.zip | Bin 194042 -> 0 bytes cache/{test_demo => test}/Makefile | 0 cache/{test_demo => test}/README.txt | 0 .../{test_demo => test}/cache_evbase_test.cpp | 0 .../cache_evbase_test_threads.cpp | 0 cache/{test_demo => test}/pangu_tg_cahce.conf | 0 cache/{test_demo => test}/tango_cache_test.c | 0 cache/{test_demo => test}/urllist_get.txt | 0 cache/{test_demo => test}/urllist_put.txt | 0 common/include/tfe_http.h | 10 +- plugin/business/pangu-http/CMakeLists.txt | 4 +- plugin/business/pangu-http/pangu_http.cpp | 265 +- plugin/business/pangu-http/pangu_logger.cpp | 12 +- .../business/pangu-http/pangu_web_cache.cpp | 185 ++ plugin/business/pangu-http/pangu_web_cache.h | 39 + vendor/CMakeLists.txt | 32 + {cache/support => vendor}/curl-7.59.0.tar.gz | Bin .../support => vendor}/libxml2-2.9.2.tar.gz | Bin 120 files changed, 508 insertions(+), 29642 deletions(-) delete mode 100644 cache/Makefile delete mode 100644 cache/include/curl/curl.h delete mode 100644 cache/include/curl/curlver.h delete mode 100644 cache/include/curl/easy.h delete mode 100644 cache/include/curl/mprintf.h delete mode 100644 cache/include/curl/multi.h delete mode 100644 cache/include/curl/stdcheaders.h delete mode 100644 cache/include/curl/system.h delete mode 100644 cache/include/curl/typecheck-gcc.h delete mode 100644 cache/include/libevent2/evdns.h delete mode 100644 cache/include/libevent2/event.h delete mode 100644 cache/include/libevent2/event2/buffer.h delete mode 100644 cache/include/libevent2/event2/buffer_compat.h delete mode 100644 cache/include/libevent2/event2/bufferevent.h delete mode 100644 cache/include/libevent2/event2/bufferevent_compat.h delete mode 100644 cache/include/libevent2/event2/bufferevent_ssl.h delete mode 100644 cache/include/libevent2/event2/bufferevent_struct.h delete mode 100644 cache/include/libevent2/event2/dns.h delete mode 100644 cache/include/libevent2/event2/dns_compat.h delete mode 100644 cache/include/libevent2/event2/dns_struct.h delete mode 100644 cache/include/libevent2/event2/event-config.h delete mode 100644 cache/include/libevent2/event2/event.h delete mode 100644 cache/include/libevent2/event2/event_compat.h delete mode 100644 cache/include/libevent2/event2/event_struct.h delete mode 100644 cache/include/libevent2/event2/http.h delete mode 100644 cache/include/libevent2/event2/http_compat.h delete mode 100644 cache/include/libevent2/event2/http_struct.h delete mode 100644 cache/include/libevent2/event2/keyvalq_struct.h delete mode 100644 cache/include/libevent2/event2/listener.h delete mode 100644 cache/include/libevent2/event2/rpc.h delete mode 100644 cache/include/libevent2/event2/rpc_compat.h delete mode 100644 cache/include/libevent2/event2/rpc_struct.h delete mode 100644 cache/include/libevent2/event2/tag.h delete mode 100644 cache/include/libevent2/event2/tag_compat.h delete mode 100644 cache/include/libevent2/event2/thread.h delete mode 100644 cache/include/libevent2/event2/util.h delete mode 100644 cache/include/libevent2/event2/visibility.h delete mode 100644 cache/include/libevent2/evhttp.h delete mode 100644 cache/include/libevent2/evrpc.h delete mode 100644 cache/include/libevent2/evutil.h delete mode 100644 cache/include/libxml/DOCBparser.h delete mode 100644 cache/include/libxml/HTMLparser.h delete mode 100644 cache/include/libxml/HTMLtree.h delete mode 100644 cache/include/libxml/SAX.h delete mode 100644 cache/include/libxml/SAX2.h delete mode 100644 cache/include/libxml/c14n.h delete mode 100644 cache/include/libxml/catalog.h delete mode 100644 cache/include/libxml/chvalid.h delete mode 100644 cache/include/libxml/debugXML.h delete mode 100644 cache/include/libxml/dict.h delete mode 100644 cache/include/libxml/encoding.h delete mode 100644 cache/include/libxml/entities.h delete mode 100644 cache/include/libxml/globals.h delete mode 100644 cache/include/libxml/hash.h delete mode 100644 cache/include/libxml/list.h delete mode 100644 cache/include/libxml/nanoftp.h delete mode 100644 cache/include/libxml/nanohttp.h delete mode 100644 cache/include/libxml/parser.h delete mode 100644 cache/include/libxml/parserInternals.h delete mode 100644 cache/include/libxml/pattern.h delete mode 100644 cache/include/libxml/relaxng.h delete mode 100644 cache/include/libxml/schemasInternals.h delete mode 100644 cache/include/libxml/schematron.h delete mode 100644 cache/include/libxml/threads.h delete mode 100644 cache/include/libxml/tree.h delete mode 100644 cache/include/libxml/uri.h delete mode 100644 cache/include/libxml/valid.h delete mode 100644 cache/include/libxml/xinclude.h delete mode 100644 cache/include/libxml/xlink.h delete mode 100644 cache/include/libxml/xmlIO.h delete mode 100644 cache/include/libxml/xmlautomata.h delete mode 100644 cache/include/libxml/xmlerror.h delete mode 100644 cache/include/libxml/xmlexports.h delete mode 100644 cache/include/libxml/xmlmemory.h delete mode 100644 cache/include/libxml/xmlmodule.h delete mode 100644 cache/include/libxml/xmlreader.h delete mode 100644 cache/include/libxml/xmlregexp.h delete mode 100644 cache/include/libxml/xmlsave.h delete mode 100644 cache/include/libxml/xmlschemas.h delete mode 100644 cache/include/libxml/xmlschemastypes.h delete mode 100644 cache/include/libxml/xmlstring.h delete mode 100644 cache/include/libxml/xmlunicode.h delete mode 100644 cache/include/libxml/xmlversion.h delete mode 100644 cache/include/libxml/xmlwriter.h delete mode 100644 cache/include/libxml/xpath.h delete mode 100644 cache/include/libxml/xpathInternals.h delete mode 100644 cache/include/libxml/xpointer.h delete mode 100644 cache/pangu_tango_cache.a rename cache/{ => src}/cache_evbase_client.cpp (100%) rename cache/{ => src}/tango_cache_client.cpp (100%) rename cache/{ => src}/tango_cache_client_in.h (100%) rename cache/{ => src}/tango_cache_tools.cpp (100%) rename cache/{ => src}/tango_cache_tools.h (100%) rename cache/{ => src}/tango_cache_transfer.cpp (100%) rename cache/{ => src}/tango_cache_transfer.h (100%) rename cache/{ => src}/tango_cache_xml.cpp (100%) rename cache/{ => src}/tango_cache_xml.h (100%) delete mode 100644 cache/support/libevent-2.1.8-stable.tar.gz delete mode 100644 cache/support/wired_lb-master.zip rename cache/{test_demo => test}/Makefile (100%) rename cache/{test_demo => test}/README.txt (100%) rename cache/{test_demo => test}/cache_evbase_test.cpp (100%) rename cache/{test_demo => test}/cache_evbase_test_threads.cpp (100%) rename cache/{test_demo => test}/pangu_tg_cahce.conf (100%) rename cache/{test_demo => test}/tango_cache_test.c (100%) rename cache/{test_demo => test}/urllist_get.txt (100%) rename cache/{test_demo => test}/urllist_put.txt (100%) create mode 100644 plugin/business/pangu-http/pangu_web_cache.cpp create mode 100644 plugin/business/pangu-http/pangu_web_cache.h rename {cache/support => vendor}/curl-7.59.0.tar.gz (100%) rename {cache/support => vendor}/libxml2-2.9.2.tar.gz (100%) diff --git a/cache/CMakeLists.txt b/cache/CMakeLists.txt index e69de29..dea93d4 100644 --- a/cache/CMakeLists.txt +++ b/cache/CMakeLists.txt @@ -0,0 +1,5 @@ +add_library(tango-cache-client src/cache_evbase_client.cpp src/ src/tango_cache_client.cpp src/ src/tango_cache_pending.cpp src/ src/tango_cache_tools.cpp src/ src/tango_cache_transfer.cpp src/ src/tango_cache_xml.cpp) +target_link_libraries(tango-cache-client http) +target_include_directories(tango-cache-client PUBLIC ${CMAKE_CURRENT_LIST_DIR}/include) +target_link_libraries(tango-cache-client libevent-static openssl-crypto-static openssl-ssl-static libxml2-static libcurl-static) +target_link_libraries(tango-cache-client MESA_handle_logger MESA_htable MESA_prof_load wiredcfg) diff --git a/cache/Makefile b/cache/Makefile deleted file mode 100644 index effe201..0000000 --- a/cache/Makefile +++ /dev/null @@ -1,24 +0,0 @@ -CCC=g++ - -INC_PATH=-I./include -I./include/libevent2 -CFLAGS=-Wall -g -fPIC $(INC_PATH) -LDFLAGS = -LIBS = -lMESA_handle_logger -lMESA_htable -lMESA_prof_load -lwiredcfg -LIBS += -lssl -lcrypto -lcurl -levent -lxml2 - -OBJS = tango_cache_tools.o tango_cache_client.o tango_cache_transfer.o tango_cache_xml.o cache_evbase_client.o - -TARGET_A=pangu_tango_cache.a - -ALL:$(TARGET_A) - -$(TARGET_A):$(OBJS) - ar rs $@ $^ - -.cpp.o: - $(CCC) $(CFLAGS) -c $< - --include $(DEPS) - -clean: - rm -rf $(OBJS) $(DEPS) $(TARGET_A) diff --git a/cache/include/curl/curl.h b/cache/include/curl/curl.h deleted file mode 100644 index fa019ec..0000000 --- a/cache/include/curl/curl.h +++ /dev/null @@ -1,2774 +0,0 @@ -#ifndef __CURL_CURL_H -#define __CURL_CURL_H -/*************************************************************************** - * _ _ ____ _ - * Project ___| | | | _ \| | - * / __| | | | |_) | | - * | (__| |_| | _ <| |___ - * \___|\___/|_| \_\_____| - * - * Copyright (C) 1998 - 2018, Daniel Stenberg, , et al. - * - * This software is licensed as described in the file COPYING, which - * you should have received as part of this distribution. The terms - * are also available at https://curl.haxx.se/docs/copyright.html. - * - * You may opt to use, copy, modify, merge, publish, distribute and/or sell - * copies of the Software, and permit persons to whom the Software is - * furnished to do so, under the terms of the COPYING file. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ***************************************************************************/ - -/* - * If you have libcurl problems, all docs and details are found here: - * https://curl.haxx.se/libcurl/ - * - * curl-library mailing list subscription and unsubscription web interface: - * https://cool.haxx.se/mailman/listinfo/curl-library/ - */ - -#ifdef CURL_NO_OLDIES -#define CURL_STRICTER -#endif - -#include "curlver.h" /* libcurl version defines */ -#include "system.h" /* determine things run-time */ - -/* - * Define WIN32 when build target is Win32 API - */ - -#if (defined(_WIN32) || defined(__WIN32__)) && \ - !defined(WIN32) && !defined(__SYMBIAN32__) -#define WIN32 -#endif - -#include -#include - -#if defined(__FreeBSD__) && (__FreeBSD__ >= 2) -/* Needed for __FreeBSD_version symbol definition */ -#include -#endif - -/* The include stuff here below is mainly for time_t! */ -#include -#include - -#if defined(WIN32) && !defined(_WIN32_WCE) && !defined(__CYGWIN__) -#if !(defined(_WINSOCKAPI_) || defined(_WINSOCK_H) || \ - defined(__LWIP_OPT_H__) || defined(LWIP_HDR_OPT_H)) -/* The check above prevents the winsock2 inclusion if winsock.h already was - included, since they can't co-exist without problems */ -#include -#include -#endif -#endif - -/* HP-UX systems version 9, 10 and 11 lack sys/select.h and so does oldish - libc5-based Linux systems. Only include it on systems that are known to - require it! */ -#if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \ - defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY) || \ - defined(ANDROID) || defined(__ANDROID__) || defined(__OpenBSD__) || \ - defined(__CYGWIN__) || \ - (defined(__FreeBSD_version) && (__FreeBSD_version < 800000)) -#include -#endif - -#if !defined(WIN32) && !defined(_WIN32_WCE) -#include -#endif - -#if !defined(WIN32) && !defined(__WATCOMC__) && !defined(__VXWORKS__) -#include -#endif - -#ifdef __BEOS__ -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#if defined(BUILDING_LIBCURL) || defined(CURL_STRICTER) -typedef struct Curl_easy CURL; -typedef struct Curl_share CURLSH; -#else -typedef void CURL; -typedef void CURLSH; -#endif - -/* - * libcurl external API function linkage decorations. - */ - -#ifdef CURL_STATICLIB -# define CURL_EXTERN -#elif defined(WIN32) || defined(_WIN32) || defined(__SYMBIAN32__) -# if defined(BUILDING_LIBCURL) -# define CURL_EXTERN __declspec(dllexport) -# else -# define CURL_EXTERN __declspec(dllimport) -# endif -#elif defined(BUILDING_LIBCURL) && defined(CURL_HIDDEN_SYMBOLS) -# define CURL_EXTERN CURL_EXTERN_SYMBOL -#else -# define CURL_EXTERN -#endif - -#ifndef curl_socket_typedef -/* socket typedef */ -#if defined(WIN32) && !defined(__LWIP_OPT_H__) && !defined(LWIP_HDR_OPT_H) -typedef SOCKET curl_socket_t; -#define CURL_SOCKET_BAD INVALID_SOCKET -#else -typedef int curl_socket_t; -#define CURL_SOCKET_BAD -1 -#endif -#define curl_socket_typedef -#endif /* curl_socket_typedef */ - -/* enum for the different supported SSL backends */ -typedef enum { - CURLSSLBACKEND_NONE = 0, - CURLSSLBACKEND_OPENSSL = 1, - CURLSSLBACKEND_GNUTLS = 2, - CURLSSLBACKEND_NSS = 3, - CURLSSLBACKEND_OBSOLETE4 = 4, /* Was QSOSSL. */ - CURLSSLBACKEND_GSKIT = 5, - CURLSSLBACKEND_POLARSSL = 6, - CURLSSLBACKEND_WOLFSSL = 7, - CURLSSLBACKEND_SCHANNEL = 8, - CURLSSLBACKEND_DARWINSSL = 9, - CURLSSLBACKEND_AXTLS = 10, - CURLSSLBACKEND_MBEDTLS = 11 -} curl_sslbackend; - -/* aliases for library clones and renames */ -#define CURLSSLBACKEND_LIBRESSL CURLSSLBACKEND_OPENSSL -#define CURLSSLBACKEND_BORINGSSL CURLSSLBACKEND_OPENSSL -#define CURLSSLBACKEND_CYASSL CURLSSLBACKEND_WOLFSSL - -struct curl_httppost { - struct curl_httppost *next; /* next entry in the list */ - char *name; /* pointer to allocated name */ - long namelength; /* length of name length */ - char *contents; /* pointer to allocated data contents */ - long contentslength; /* length of contents field, see also - CURL_HTTPPOST_LARGE */ - char *buffer; /* pointer to allocated buffer contents */ - long bufferlength; /* length of buffer field */ - char *contenttype; /* Content-Type */ - struct curl_slist *contentheader; /* list of extra headers for this form */ - struct curl_httppost *more; /* if one field name has more than one - file, this link should link to following - files */ - long flags; /* as defined below */ - -/* specified content is a file name */ -#define CURL_HTTPPOST_FILENAME (1<<0) -/* specified content is a file name */ -#define CURL_HTTPPOST_READFILE (1<<1) -/* name is only stored pointer do not free in formfree */ -#define CURL_HTTPPOST_PTRNAME (1<<2) -/* contents is only stored pointer do not free in formfree */ -#define CURL_HTTPPOST_PTRCONTENTS (1<<3) -/* upload file from buffer */ -#define CURL_HTTPPOST_BUFFER (1<<4) -/* upload file from pointer contents */ -#define CURL_HTTPPOST_PTRBUFFER (1<<5) -/* upload file contents by using the regular read callback to get the data and - pass the given pointer as custom pointer */ -#define CURL_HTTPPOST_CALLBACK (1<<6) -/* use size in 'contentlen', added in 7.46.0 */ -#define CURL_HTTPPOST_LARGE (1<<7) - - char *showfilename; /* The file name to show. If not set, the - actual file name will be used (if this - is a file part) */ - void *userp; /* custom pointer used for - HTTPPOST_CALLBACK posts */ - curl_off_t contentlen; /* alternative length of contents - field. Used if CURL_HTTPPOST_LARGE is - set. Added in 7.46.0 */ -}; - -/* This is the CURLOPT_PROGRESSFUNCTION callback proto. It is now considered - deprecated but was the only choice up until 7.31.0 */ -typedef int (*curl_progress_callback)(void *clientp, - double dltotal, - double dlnow, - double ultotal, - double ulnow); - -/* This is the CURLOPT_XFERINFOFUNCTION callback proto. It was introduced in - 7.32.0, it avoids floating point and provides more detailed information. */ -typedef int (*curl_xferinfo_callback)(void *clientp, - curl_off_t dltotal, - curl_off_t dlnow, - curl_off_t ultotal, - curl_off_t ulnow); - -#ifndef CURL_MAX_READ_SIZE - /* The maximum receive buffer size configurable via CURLOPT_BUFFERSIZE. */ -#define CURL_MAX_READ_SIZE 524288 -#endif - -#ifndef CURL_MAX_WRITE_SIZE - /* Tests have proven that 20K is a very bad buffer size for uploads on - Windows, while 16K for some odd reason performed a lot better. - We do the ifndef check to allow this value to easier be changed at build - time for those who feel adventurous. The practical minimum is about - 400 bytes since libcurl uses a buffer of this size as a scratch area - (unrelated to network send operations). */ -#define CURL_MAX_WRITE_SIZE 16384 -#endif - -#ifndef CURL_MAX_HTTP_HEADER -/* The only reason to have a max limit for this is to avoid the risk of a bad - server feeding libcurl with a never-ending header that will cause reallocs - infinitely */ -#define CURL_MAX_HTTP_HEADER (100*1024) -#endif - -/* This is a magic return code for the write callback that, when returned, - will signal libcurl to pause receiving on the current transfer. */ -#define CURL_WRITEFUNC_PAUSE 0x10000001 - -typedef size_t (*curl_write_callback)(char *buffer, - size_t size, - size_t nitems, - void *outstream); - -/* This callback will be called when a new resolver request is made */ -typedef int (*curl_resolver_start_callback)(void *resolver_state, - void *reserved, void *userdata); - -/* enumeration of file types */ -typedef enum { - CURLFILETYPE_FILE = 0, - CURLFILETYPE_DIRECTORY, - CURLFILETYPE_SYMLINK, - CURLFILETYPE_DEVICE_BLOCK, - CURLFILETYPE_DEVICE_CHAR, - CURLFILETYPE_NAMEDPIPE, - CURLFILETYPE_SOCKET, - CURLFILETYPE_DOOR, /* is possible only on Sun Solaris now */ - - CURLFILETYPE_UNKNOWN /* should never occur */ -} curlfiletype; - -#define CURLFINFOFLAG_KNOWN_FILENAME (1<<0) -#define CURLFINFOFLAG_KNOWN_FILETYPE (1<<1) -#define CURLFINFOFLAG_KNOWN_TIME (1<<2) -#define CURLFINFOFLAG_KNOWN_PERM (1<<3) -#define CURLFINFOFLAG_KNOWN_UID (1<<4) -#define CURLFINFOFLAG_KNOWN_GID (1<<5) -#define CURLFINFOFLAG_KNOWN_SIZE (1<<6) -#define CURLFINFOFLAG_KNOWN_HLINKCOUNT (1<<7) - -/* Content of this structure depends on information which is known and is - achievable (e.g. by FTP LIST parsing). Please see the url_easy_setopt(3) man - page for callbacks returning this structure -- some fields are mandatory, - some others are optional. The FLAG field has special meaning. */ -struct curl_fileinfo { - char *filename; - curlfiletype filetype; - time_t time; - unsigned int perm; - int uid; - int gid; - curl_off_t size; - long int hardlinks; - - struct { - /* If some of these fields is not NULL, it is a pointer to b_data. */ - char *time; - char *perm; - char *user; - char *group; - char *target; /* pointer to the target filename of a symlink */ - } strings; - - unsigned int flags; - - /* used internally */ - char *b_data; - size_t b_size; - size_t b_used; -}; - -/* return codes for CURLOPT_CHUNK_BGN_FUNCTION */ -#define CURL_CHUNK_BGN_FUNC_OK 0 -#define CURL_CHUNK_BGN_FUNC_FAIL 1 /* tell the lib to end the task */ -#define CURL_CHUNK_BGN_FUNC_SKIP 2 /* skip this chunk over */ - -/* if splitting of data transfer is enabled, this callback is called before - download of an individual chunk started. Note that parameter "remains" works - only for FTP wildcard downloading (for now), otherwise is not used */ -typedef long (*curl_chunk_bgn_callback)(const void *transfer_info, - void *ptr, - int remains); - -/* return codes for CURLOPT_CHUNK_END_FUNCTION */ -#define CURL_CHUNK_END_FUNC_OK 0 -#define CURL_CHUNK_END_FUNC_FAIL 1 /* tell the lib to end the task */ - -/* If splitting of data transfer is enabled this callback is called after - download of an individual chunk finished. - Note! After this callback was set then it have to be called FOR ALL chunks. - Even if downloading of this chunk was skipped in CHUNK_BGN_FUNC. - This is the reason why we don't need "transfer_info" parameter in this - callback and we are not interested in "remains" parameter too. */ -typedef long (*curl_chunk_end_callback)(void *ptr); - -/* return codes for FNMATCHFUNCTION */ -#define CURL_FNMATCHFUNC_MATCH 0 /* string corresponds to the pattern */ -#define CURL_FNMATCHFUNC_NOMATCH 1 /* pattern doesn't match the string */ -#define CURL_FNMATCHFUNC_FAIL 2 /* an error occurred */ - -/* callback type for wildcard downloading pattern matching. If the - string matches the pattern, return CURL_FNMATCHFUNC_MATCH value, etc. */ -typedef int (*curl_fnmatch_callback)(void *ptr, - const char *pattern, - const char *string); - -/* These are the return codes for the seek callbacks */ -#define CURL_SEEKFUNC_OK 0 -#define CURL_SEEKFUNC_FAIL 1 /* fail the entire transfer */ -#define CURL_SEEKFUNC_CANTSEEK 2 /* tell libcurl seeking can't be done, so - libcurl might try other means instead */ -typedef int (*curl_seek_callback)(void *instream, - curl_off_t offset, - int origin); /* 'whence' */ - -/* This is a return code for the read callback that, when returned, will - signal libcurl to immediately abort the current transfer. */ -#define CURL_READFUNC_ABORT 0x10000000 -/* This is a return code for the read callback that, when returned, will - signal libcurl to pause sending data on the current transfer. */ -#define CURL_READFUNC_PAUSE 0x10000001 - -typedef size_t (*curl_read_callback)(char *buffer, - size_t size, - size_t nitems, - void *instream); - -typedef enum { - CURLSOCKTYPE_IPCXN, /* socket created for a specific IP connection */ - CURLSOCKTYPE_ACCEPT, /* socket created by accept() call */ - CURLSOCKTYPE_LAST /* never use */ -} curlsocktype; - -/* The return code from the sockopt_callback can signal information back - to libcurl: */ -#define CURL_SOCKOPT_OK 0 -#define CURL_SOCKOPT_ERROR 1 /* causes libcurl to abort and return - CURLE_ABORTED_BY_CALLBACK */ -#define CURL_SOCKOPT_ALREADY_CONNECTED 2 - -typedef int (*curl_sockopt_callback)(void *clientp, - curl_socket_t curlfd, - curlsocktype purpose); - -struct curl_sockaddr { - int family; - int socktype; - int protocol; - unsigned int addrlen; /* addrlen was a socklen_t type before 7.18.0 but it - turned really ugly and painful on the systems that - lack this type */ - struct sockaddr addr; -}; - -typedef curl_socket_t -(*curl_opensocket_callback)(void *clientp, - curlsocktype purpose, - struct curl_sockaddr *address); - -typedef int -(*curl_closesocket_callback)(void *clientp, curl_socket_t item); - -typedef enum { - CURLIOE_OK, /* I/O operation successful */ - CURLIOE_UNKNOWNCMD, /* command was unknown to callback */ - CURLIOE_FAILRESTART, /* failed to restart the read */ - CURLIOE_LAST /* never use */ -} curlioerr; - -typedef enum { - CURLIOCMD_NOP, /* no operation */ - CURLIOCMD_RESTARTREAD, /* restart the read stream from start */ - CURLIOCMD_LAST /* never use */ -} curliocmd; - -typedef curlioerr (*curl_ioctl_callback)(CURL *handle, - int cmd, - void *clientp); - -#ifndef CURL_DID_MEMORY_FUNC_TYPEDEFS -/* - * The following typedef's are signatures of malloc, free, realloc, strdup and - * calloc respectively. Function pointers of these types can be passed to the - * curl_global_init_mem() function to set user defined memory management - * callback routines. - */ -typedef void *(*curl_malloc_callback)(size_t size); -typedef void (*curl_free_callback)(void *ptr); -typedef void *(*curl_realloc_callback)(void *ptr, size_t size); -typedef char *(*curl_strdup_callback)(const char *str); -typedef void *(*curl_calloc_callback)(size_t nmemb, size_t size); - -#define CURL_DID_MEMORY_FUNC_TYPEDEFS -#endif - -/* the kind of data that is passed to information_callback*/ -typedef enum { - CURLINFO_TEXT = 0, - CURLINFO_HEADER_IN, /* 1 */ - CURLINFO_HEADER_OUT, /* 2 */ - CURLINFO_DATA_IN, /* 3 */ - CURLINFO_DATA_OUT, /* 4 */ - CURLINFO_SSL_DATA_IN, /* 5 */ - CURLINFO_SSL_DATA_OUT, /* 6 */ - CURLINFO_END -} curl_infotype; - -typedef int (*curl_debug_callback) - (CURL *handle, /* the handle/transfer this concerns */ - curl_infotype type, /* what kind of data */ - char *data, /* points to the data */ - size_t size, /* size of the data pointed to */ - void *userptr); /* whatever the user please */ - -/* All possible error codes from all sorts of curl functions. Future versions - may return other values, stay prepared. - - Always add new return codes last. Never *EVER* remove any. The return - codes must remain the same! - */ - -typedef enum { - CURLE_OK = 0, - CURLE_UNSUPPORTED_PROTOCOL, /* 1 */ - CURLE_FAILED_INIT, /* 2 */ - CURLE_URL_MALFORMAT, /* 3 */ - CURLE_NOT_BUILT_IN, /* 4 - [was obsoleted in August 2007 for - 7.17.0, reused in April 2011 for 7.21.5] */ - CURLE_COULDNT_RESOLVE_PROXY, /* 5 */ - CURLE_COULDNT_RESOLVE_HOST, /* 6 */ - CURLE_COULDNT_CONNECT, /* 7 */ - CURLE_WEIRD_SERVER_REPLY, /* 8 */ - CURLE_REMOTE_ACCESS_DENIED, /* 9 a service was denied by the server - due to lack of access - when login fails - this is not returned. */ - CURLE_FTP_ACCEPT_FAILED, /* 10 - [was obsoleted in April 2006 for - 7.15.4, reused in Dec 2011 for 7.24.0]*/ - CURLE_FTP_WEIRD_PASS_REPLY, /* 11 */ - CURLE_FTP_ACCEPT_TIMEOUT, /* 12 - timeout occurred accepting server - [was obsoleted in August 2007 for 7.17.0, - reused in Dec 2011 for 7.24.0]*/ - CURLE_FTP_WEIRD_PASV_REPLY, /* 13 */ - CURLE_FTP_WEIRD_227_FORMAT, /* 14 */ - CURLE_FTP_CANT_GET_HOST, /* 15 */ - CURLE_HTTP2, /* 16 - A problem in the http2 framing layer. - [was obsoleted in August 2007 for 7.17.0, - reused in July 2014 for 7.38.0] */ - CURLE_FTP_COULDNT_SET_TYPE, /* 17 */ - CURLE_PARTIAL_FILE, /* 18 */ - CURLE_FTP_COULDNT_RETR_FILE, /* 19 */ - CURLE_OBSOLETE20, /* 20 - NOT USED */ - CURLE_QUOTE_ERROR, /* 21 - quote command failure */ - CURLE_HTTP_RETURNED_ERROR, /* 22 */ - CURLE_WRITE_ERROR, /* 23 */ - CURLE_OBSOLETE24, /* 24 - NOT USED */ - CURLE_UPLOAD_FAILED, /* 25 - failed upload "command" */ - CURLE_READ_ERROR, /* 26 - couldn't open/read from file */ - CURLE_OUT_OF_MEMORY, /* 27 */ - /* Note: CURLE_OUT_OF_MEMORY may sometimes indicate a conversion error - instead of a memory allocation error if CURL_DOES_CONVERSIONS - is defined - */ - CURLE_OPERATION_TIMEDOUT, /* 28 - the timeout time was reached */ - CURLE_OBSOLETE29, /* 29 - NOT USED */ - CURLE_FTP_PORT_FAILED, /* 30 - FTP PORT operation failed */ - CURLE_FTP_COULDNT_USE_REST, /* 31 - the REST command failed */ - CURLE_OBSOLETE32, /* 32 - NOT USED */ - CURLE_RANGE_ERROR, /* 33 - RANGE "command" didn't work */ - CURLE_HTTP_POST_ERROR, /* 34 */ - CURLE_SSL_CONNECT_ERROR, /* 35 - wrong when connecting with SSL */ - CURLE_BAD_DOWNLOAD_RESUME, /* 36 - couldn't resume download */ - CURLE_FILE_COULDNT_READ_FILE, /* 37 */ - CURLE_LDAP_CANNOT_BIND, /* 38 */ - CURLE_LDAP_SEARCH_FAILED, /* 39 */ - CURLE_OBSOLETE40, /* 40 - NOT USED */ - CURLE_FUNCTION_NOT_FOUND, /* 41 - NOT USED starting with 7.53.0 */ - CURLE_ABORTED_BY_CALLBACK, /* 42 */ - CURLE_BAD_FUNCTION_ARGUMENT, /* 43 */ - CURLE_OBSOLETE44, /* 44 - NOT USED */ - CURLE_INTERFACE_FAILED, /* 45 - CURLOPT_INTERFACE failed */ - CURLE_OBSOLETE46, /* 46 - NOT USED */ - CURLE_TOO_MANY_REDIRECTS, /* 47 - catch endless re-direct loops */ - CURLE_UNKNOWN_OPTION, /* 48 - User specified an unknown option */ - CURLE_TELNET_OPTION_SYNTAX, /* 49 - Malformed telnet option */ - CURLE_OBSOLETE50, /* 50 - NOT USED */ - CURLE_PEER_FAILED_VERIFICATION, /* 51 - peer's certificate or fingerprint - wasn't verified fine */ - CURLE_GOT_NOTHING, /* 52 - when this is a specific error */ - CURLE_SSL_ENGINE_NOTFOUND, /* 53 - SSL crypto engine not found */ - CURLE_SSL_ENGINE_SETFAILED, /* 54 - can not set SSL crypto engine as - default */ - CURLE_SEND_ERROR, /* 55 - failed sending network data */ - CURLE_RECV_ERROR, /* 56 - failure in receiving network data */ - CURLE_OBSOLETE57, /* 57 - NOT IN USE */ - CURLE_SSL_CERTPROBLEM, /* 58 - problem with the local certificate */ - CURLE_SSL_CIPHER, /* 59 - couldn't use specified cipher */ - CURLE_SSL_CACERT, /* 60 - problem with the CA cert (path?) */ - CURLE_BAD_CONTENT_ENCODING, /* 61 - Unrecognized/bad encoding */ - CURLE_LDAP_INVALID_URL, /* 62 - Invalid LDAP URL */ - CURLE_FILESIZE_EXCEEDED, /* 63 - Maximum file size exceeded */ - CURLE_USE_SSL_FAILED, /* 64 - Requested FTP SSL level failed */ - CURLE_SEND_FAIL_REWIND, /* 65 - Sending the data requires a rewind - that failed */ - CURLE_SSL_ENGINE_INITFAILED, /* 66 - failed to initialise ENGINE */ - CURLE_LOGIN_DENIED, /* 67 - user, password or similar was not - accepted and we failed to login */ - CURLE_TFTP_NOTFOUND, /* 68 - file not found on server */ - CURLE_TFTP_PERM, /* 69 - permission problem on server */ - CURLE_REMOTE_DISK_FULL, /* 70 - out of disk space on server */ - CURLE_TFTP_ILLEGAL, /* 71 - Illegal TFTP operation */ - CURLE_TFTP_UNKNOWNID, /* 72 - Unknown transfer ID */ - CURLE_REMOTE_FILE_EXISTS, /* 73 - File already exists */ - CURLE_TFTP_NOSUCHUSER, /* 74 - No such user */ - CURLE_CONV_FAILED, /* 75 - conversion failed */ - CURLE_CONV_REQD, /* 76 - caller must register conversion - callbacks using curl_easy_setopt options - CURLOPT_CONV_FROM_NETWORK_FUNCTION, - CURLOPT_CONV_TO_NETWORK_FUNCTION, and - CURLOPT_CONV_FROM_UTF8_FUNCTION */ - CURLE_SSL_CACERT_BADFILE, /* 77 - could not load CACERT file, missing - or wrong format */ - CURLE_REMOTE_FILE_NOT_FOUND, /* 78 - remote file not found */ - CURLE_SSH, /* 79 - error from the SSH layer, somewhat - generic so the error message will be of - interest when this has happened */ - - CURLE_SSL_SHUTDOWN_FAILED, /* 80 - Failed to shut down the SSL - connection */ - CURLE_AGAIN, /* 81 - socket is not ready for send/recv, - wait till it's ready and try again (Added - in 7.18.2) */ - CURLE_SSL_CRL_BADFILE, /* 82 - could not load CRL file, missing or - wrong format (Added in 7.19.0) */ - CURLE_SSL_ISSUER_ERROR, /* 83 - Issuer check failed. (Added in - 7.19.0) */ - CURLE_FTP_PRET_FAILED, /* 84 - a PRET command failed */ - CURLE_RTSP_CSEQ_ERROR, /* 85 - mismatch of RTSP CSeq numbers */ - CURLE_RTSP_SESSION_ERROR, /* 86 - mismatch of RTSP Session Ids */ - CURLE_FTP_BAD_FILE_LIST, /* 87 - unable to parse FTP file list */ - CURLE_CHUNK_FAILED, /* 88 - chunk callback reported error */ - CURLE_NO_CONNECTION_AVAILABLE, /* 89 - No connection available, the - session will be queued */ - CURLE_SSL_PINNEDPUBKEYNOTMATCH, /* 90 - specified pinned public key did not - match */ - CURLE_SSL_INVALIDCERTSTATUS, /* 91 - invalid certificate status */ - CURLE_HTTP2_STREAM, /* 92 - stream error in HTTP/2 framing layer - */ - CURLE_RECURSIVE_API_CALL, /* 93 - an api function was called from - inside a callback */ - CURL_LAST /* never use! */ -} CURLcode; - -#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all - the obsolete stuff removed! */ - -/* Previously obsolete error code re-used in 7.38.0 */ -#define CURLE_OBSOLETE16 CURLE_HTTP2 - -/* Previously obsolete error codes re-used in 7.24.0 */ -#define CURLE_OBSOLETE10 CURLE_FTP_ACCEPT_FAILED -#define CURLE_OBSOLETE12 CURLE_FTP_ACCEPT_TIMEOUT - -/* compatibility with older names */ -#define CURLOPT_ENCODING CURLOPT_ACCEPT_ENCODING -#define CURLE_FTP_WEIRD_SERVER_REPLY CURLE_WEIRD_SERVER_REPLY - -/* The following were added in 7.21.5, April 2011 */ -#define CURLE_UNKNOWN_TELNET_OPTION CURLE_UNKNOWN_OPTION - -/* The following were added in 7.17.1 */ -/* These are scheduled to disappear by 2009 */ -#define CURLE_SSL_PEER_CERTIFICATE CURLE_PEER_FAILED_VERIFICATION - -/* The following were added in 7.17.0 */ -/* These are scheduled to disappear by 2009 */ -#define CURLE_OBSOLETE CURLE_OBSOLETE50 /* no one should be using this! */ -#define CURLE_BAD_PASSWORD_ENTERED CURLE_OBSOLETE46 -#define CURLE_BAD_CALLING_ORDER CURLE_OBSOLETE44 -#define CURLE_FTP_USER_PASSWORD_INCORRECT CURLE_OBSOLETE10 -#define CURLE_FTP_CANT_RECONNECT CURLE_OBSOLETE16 -#define CURLE_FTP_COULDNT_GET_SIZE CURLE_OBSOLETE32 -#define CURLE_FTP_COULDNT_SET_ASCII CURLE_OBSOLETE29 -#define CURLE_FTP_WEIRD_USER_REPLY CURLE_OBSOLETE12 -#define CURLE_FTP_WRITE_ERROR CURLE_OBSOLETE20 -#define CURLE_LIBRARY_NOT_FOUND CURLE_OBSOLETE40 -#define CURLE_MALFORMAT_USER CURLE_OBSOLETE24 -#define CURLE_SHARE_IN_USE CURLE_OBSOLETE57 -#define CURLE_URL_MALFORMAT_USER CURLE_NOT_BUILT_IN - -#define CURLE_FTP_ACCESS_DENIED CURLE_REMOTE_ACCESS_DENIED -#define CURLE_FTP_COULDNT_SET_BINARY CURLE_FTP_COULDNT_SET_TYPE -#define CURLE_FTP_QUOTE_ERROR CURLE_QUOTE_ERROR -#define CURLE_TFTP_DISKFULL CURLE_REMOTE_DISK_FULL -#define CURLE_TFTP_EXISTS CURLE_REMOTE_FILE_EXISTS -#define CURLE_HTTP_RANGE_ERROR CURLE_RANGE_ERROR -#define CURLE_FTP_SSL_FAILED CURLE_USE_SSL_FAILED - -/* The following were added earlier */ - -#define CURLE_OPERATION_TIMEOUTED CURLE_OPERATION_TIMEDOUT - -#define CURLE_HTTP_NOT_FOUND CURLE_HTTP_RETURNED_ERROR -#define CURLE_HTTP_PORT_FAILED CURLE_INTERFACE_FAILED -#define CURLE_FTP_COULDNT_STOR_FILE CURLE_UPLOAD_FAILED - -#define CURLE_FTP_PARTIAL_FILE CURLE_PARTIAL_FILE -#define CURLE_FTP_BAD_DOWNLOAD_RESUME CURLE_BAD_DOWNLOAD_RESUME - -/* This was the error code 50 in 7.7.3 and a few earlier versions, this - is no longer used by libcurl but is instead #defined here only to not - make programs break */ -#define CURLE_ALREADY_COMPLETE 99999 - -/* Provide defines for really old option names */ -#define CURLOPT_FILE CURLOPT_WRITEDATA /* name changed in 7.9.7 */ -#define CURLOPT_INFILE CURLOPT_READDATA /* name changed in 7.9.7 */ -#define CURLOPT_WRITEHEADER CURLOPT_HEADERDATA - -/* Since long deprecated options with no code in the lib that does anything - with them. */ -#define CURLOPT_WRITEINFO CURLOPT_OBSOLETE40 -#define CURLOPT_CLOSEPOLICY CURLOPT_OBSOLETE72 - -#endif /*!CURL_NO_OLDIES*/ - -/* This prototype applies to all conversion callbacks */ -typedef CURLcode (*curl_conv_callback)(char *buffer, size_t length); - -typedef CURLcode (*curl_ssl_ctx_callback)(CURL *curl, /* easy handle */ - void *ssl_ctx, /* actually an - OpenSSL SSL_CTX */ - void *userptr); - -typedef enum { - CURLPROXY_HTTP = 0, /* added in 7.10, new in 7.19.4 default is to use - CONNECT HTTP/1.1 */ - CURLPROXY_HTTP_1_0 = 1, /* added in 7.19.4, force to use CONNECT - HTTP/1.0 */ - CURLPROXY_HTTPS = 2, /* added in 7.52.0 */ - CURLPROXY_SOCKS4 = 4, /* support added in 7.15.2, enum existed already - in 7.10 */ - CURLPROXY_SOCKS5 = 5, /* added in 7.10 */ - CURLPROXY_SOCKS4A = 6, /* added in 7.18.0 */ - CURLPROXY_SOCKS5_HOSTNAME = 7 /* Use the SOCKS5 protocol but pass along the - host name rather than the IP address. added - in 7.18.0 */ -} curl_proxytype; /* this enum was added in 7.10 */ - -/* - * Bitmasks for CURLOPT_HTTPAUTH and CURLOPT_PROXYAUTH options: - * - * CURLAUTH_NONE - No HTTP authentication - * CURLAUTH_BASIC - HTTP Basic authentication (default) - * CURLAUTH_DIGEST - HTTP Digest authentication - * CURLAUTH_NEGOTIATE - HTTP Negotiate (SPNEGO) authentication - * CURLAUTH_GSSNEGOTIATE - Alias for CURLAUTH_NEGOTIATE (deprecated) - * CURLAUTH_NTLM - HTTP NTLM authentication - * CURLAUTH_DIGEST_IE - HTTP Digest authentication with IE flavour - * CURLAUTH_NTLM_WB - HTTP NTLM authentication delegated to winbind helper - * CURLAUTH_ONLY - Use together with a single other type to force no - * authentication or just that single type - * CURLAUTH_ANY - All fine types set - * CURLAUTH_ANYSAFE - All fine types except Basic - */ - -#define CURLAUTH_NONE ((unsigned long)0) -#define CURLAUTH_BASIC (((unsigned long)1)<<0) -#define CURLAUTH_DIGEST (((unsigned long)1)<<1) -#define CURLAUTH_NEGOTIATE (((unsigned long)1)<<2) -/* Deprecated since the advent of CURLAUTH_NEGOTIATE */ -#define CURLAUTH_GSSNEGOTIATE CURLAUTH_NEGOTIATE -/* Used for CURLOPT_SOCKS5_AUTH to stay terminologically correct */ -#define CURLAUTH_GSSAPI CURLAUTH_NEGOTIATE -#define CURLAUTH_NTLM (((unsigned long)1)<<3) -#define CURLAUTH_DIGEST_IE (((unsigned long)1)<<4) -#define CURLAUTH_NTLM_WB (((unsigned long)1)<<5) -#define CURLAUTH_ONLY (((unsigned long)1)<<31) -#define CURLAUTH_ANY (~CURLAUTH_DIGEST_IE) -#define CURLAUTH_ANYSAFE (~(CURLAUTH_BASIC|CURLAUTH_DIGEST_IE)) - -#define CURLSSH_AUTH_ANY ~0 /* all types supported by the server */ -#define CURLSSH_AUTH_NONE 0 /* none allowed, silly but complete */ -#define CURLSSH_AUTH_PUBLICKEY (1<<0) /* public/private key files */ -#define CURLSSH_AUTH_PASSWORD (1<<1) /* password */ -#define CURLSSH_AUTH_HOST (1<<2) /* host key files */ -#define CURLSSH_AUTH_KEYBOARD (1<<3) /* keyboard interactive */ -#define CURLSSH_AUTH_AGENT (1<<4) /* agent (ssh-agent, pageant...) */ -#define CURLSSH_AUTH_GSSAPI (1<<5) /* gssapi (kerberos, ...) */ -#define CURLSSH_AUTH_DEFAULT CURLSSH_AUTH_ANY - -#define CURLGSSAPI_DELEGATION_NONE 0 /* no delegation (default) */ -#define CURLGSSAPI_DELEGATION_POLICY_FLAG (1<<0) /* if permitted by policy */ -#define CURLGSSAPI_DELEGATION_FLAG (1<<1) /* delegate always */ - -#define CURL_ERROR_SIZE 256 - -enum curl_khtype { - CURLKHTYPE_UNKNOWN, - CURLKHTYPE_RSA1, - CURLKHTYPE_RSA, - CURLKHTYPE_DSS, - CURLKHTYPE_ECDSA, - CURLKHTYPE_ED25519 -}; - -struct curl_khkey { - const char *key; /* points to a zero-terminated string encoded with base64 - if len is zero, otherwise to the "raw" data */ - size_t len; - enum curl_khtype keytype; -}; - -/* this is the set of return values expected from the curl_sshkeycallback - callback */ -enum curl_khstat { - CURLKHSTAT_FINE_ADD_TO_FILE, - CURLKHSTAT_FINE, - CURLKHSTAT_REJECT, /* reject the connection, return an error */ - CURLKHSTAT_DEFER, /* do not accept it, but we can't answer right now so - this causes a CURLE_DEFER error but otherwise the - connection will be left intact etc */ - CURLKHSTAT_LAST /* not for use, only a marker for last-in-list */ -}; - -/* this is the set of status codes pass in to the callback */ -enum curl_khmatch { - CURLKHMATCH_OK, /* match */ - CURLKHMATCH_MISMATCH, /* host found, key mismatch! */ - CURLKHMATCH_MISSING, /* no matching host/key found */ - CURLKHMATCH_LAST /* not for use, only a marker for last-in-list */ -}; - -typedef int - (*curl_sshkeycallback) (CURL *easy, /* easy handle */ - const struct curl_khkey *knownkey, /* known */ - const struct curl_khkey *foundkey, /* found */ - enum curl_khmatch, /* libcurl's view on the keys */ - void *clientp); /* custom pointer passed from app */ - -/* parameter for the CURLOPT_USE_SSL option */ -typedef enum { - CURLUSESSL_NONE, /* do not attempt to use SSL */ - CURLUSESSL_TRY, /* try using SSL, proceed anyway otherwise */ - CURLUSESSL_CONTROL, /* SSL for the control connection or fail */ - CURLUSESSL_ALL, /* SSL for all communication or fail */ - CURLUSESSL_LAST /* not an option, never use */ -} curl_usessl; - -/* Definition of bits for the CURLOPT_SSL_OPTIONS argument: */ - -/* - ALLOW_BEAST tells libcurl to allow the BEAST SSL vulnerability in the - name of improving interoperability with older servers. Some SSL libraries - have introduced work-arounds for this flaw but those work-arounds sometimes - make the SSL communication fail. To regain functionality with those broken - servers, a user can this way allow the vulnerability back. */ -#define CURLSSLOPT_ALLOW_BEAST (1<<0) - -/* - NO_REVOKE tells libcurl to disable certificate revocation checks for those - SSL backends where such behavior is present. */ -#define CURLSSLOPT_NO_REVOKE (1<<1) - -/* The default connection attempt delay in milliseconds for happy eyeballs. - CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3 and happy-eyeballs-timeout-ms.d document - this value, keep them in sync. */ -#define CURL_HET_DEFAULT 200L - -#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all - the obsolete stuff removed! */ - -/* Backwards compatibility with older names */ -/* These are scheduled to disappear by 2009 */ - -#define CURLFTPSSL_NONE CURLUSESSL_NONE -#define CURLFTPSSL_TRY CURLUSESSL_TRY -#define CURLFTPSSL_CONTROL CURLUSESSL_CONTROL -#define CURLFTPSSL_ALL CURLUSESSL_ALL -#define CURLFTPSSL_LAST CURLUSESSL_LAST -#define curl_ftpssl curl_usessl -#endif /*!CURL_NO_OLDIES*/ - -/* parameter for the CURLOPT_FTP_SSL_CCC option */ -typedef enum { - CURLFTPSSL_CCC_NONE, /* do not send CCC */ - CURLFTPSSL_CCC_PASSIVE, /* Let the server initiate the shutdown */ - CURLFTPSSL_CCC_ACTIVE, /* Initiate the shutdown */ - CURLFTPSSL_CCC_LAST /* not an option, never use */ -} curl_ftpccc; - -/* parameter for the CURLOPT_FTPSSLAUTH option */ -typedef enum { - CURLFTPAUTH_DEFAULT, /* let libcurl decide */ - CURLFTPAUTH_SSL, /* use "AUTH SSL" */ - CURLFTPAUTH_TLS, /* use "AUTH TLS" */ - CURLFTPAUTH_LAST /* not an option, never use */ -} curl_ftpauth; - -/* parameter for the CURLOPT_FTP_CREATE_MISSING_DIRS option */ -typedef enum { - CURLFTP_CREATE_DIR_NONE, /* do NOT create missing dirs! */ - CURLFTP_CREATE_DIR, /* (FTP/SFTP) if CWD fails, try MKD and then CWD - again if MKD succeeded, for SFTP this does - similar magic */ - CURLFTP_CREATE_DIR_RETRY, /* (FTP only) if CWD fails, try MKD and then CWD - again even if MKD failed! */ - CURLFTP_CREATE_DIR_LAST /* not an option, never use */ -} curl_ftpcreatedir; - -/* parameter for the CURLOPT_FTP_FILEMETHOD option */ -typedef enum { - CURLFTPMETHOD_DEFAULT, /* let libcurl pick */ - CURLFTPMETHOD_MULTICWD, /* single CWD operation for each path part */ - CURLFTPMETHOD_NOCWD, /* no CWD at all */ - CURLFTPMETHOD_SINGLECWD, /* one CWD to full dir, then work on file */ - CURLFTPMETHOD_LAST /* not an option, never use */ -} curl_ftpmethod; - -/* bitmask defines for CURLOPT_HEADEROPT */ -#define CURLHEADER_UNIFIED 0 -#define CURLHEADER_SEPARATE (1<<0) - -/* CURLPROTO_ defines are for the CURLOPT_*PROTOCOLS options */ -#define CURLPROTO_HTTP (1<<0) -#define CURLPROTO_HTTPS (1<<1) -#define CURLPROTO_FTP (1<<2) -#define CURLPROTO_FTPS (1<<3) -#define CURLPROTO_SCP (1<<4) -#define CURLPROTO_SFTP (1<<5) -#define CURLPROTO_TELNET (1<<6) -#define CURLPROTO_LDAP (1<<7) -#define CURLPROTO_LDAPS (1<<8) -#define CURLPROTO_DICT (1<<9) -#define CURLPROTO_FILE (1<<10) -#define CURLPROTO_TFTP (1<<11) -#define CURLPROTO_IMAP (1<<12) -#define CURLPROTO_IMAPS (1<<13) -#define CURLPROTO_POP3 (1<<14) -#define CURLPROTO_POP3S (1<<15) -#define CURLPROTO_SMTP (1<<16) -#define CURLPROTO_SMTPS (1<<17) -#define CURLPROTO_RTSP (1<<18) -#define CURLPROTO_RTMP (1<<19) -#define CURLPROTO_RTMPT (1<<20) -#define CURLPROTO_RTMPE (1<<21) -#define CURLPROTO_RTMPTE (1<<22) -#define CURLPROTO_RTMPS (1<<23) -#define CURLPROTO_RTMPTS (1<<24) -#define CURLPROTO_GOPHER (1<<25) -#define CURLPROTO_SMB (1<<26) -#define CURLPROTO_SMBS (1<<27) -#define CURLPROTO_ALL (~0) /* enable everything */ - -/* long may be 32 or 64 bits, but we should never depend on anything else - but 32 */ -#define CURLOPTTYPE_LONG 0 -#define CURLOPTTYPE_OBJECTPOINT 10000 -#define CURLOPTTYPE_STRINGPOINT 10000 -#define CURLOPTTYPE_FUNCTIONPOINT 20000 -#define CURLOPTTYPE_OFF_T 30000 - -/* *STRINGPOINT is an alias for OBJECTPOINT to allow tools to extract the - string options from the header file */ - -/* name is uppercase CURLOPT_, - type is one of the defined CURLOPTTYPE_ - number is unique identifier */ -#ifdef CINIT -#undef CINIT -#endif - -#ifdef CURL_ISOCPP -#define CINIT(na,t,nu) CURLOPT_ ## na = CURLOPTTYPE_ ## t + nu -#else -/* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */ -#define LONG CURLOPTTYPE_LONG -#define OBJECTPOINT CURLOPTTYPE_OBJECTPOINT -#define STRINGPOINT CURLOPTTYPE_OBJECTPOINT -#define FUNCTIONPOINT CURLOPTTYPE_FUNCTIONPOINT -#define OFF_T CURLOPTTYPE_OFF_T -#define CINIT(name,type,number) CURLOPT_/**/name = type + number -#endif - -/* - * This macro-mania below setups the CURLOPT_[what] enum, to be used with - * curl_easy_setopt(). The first argument in the CINIT() macro is the [what] - * word. - */ - -typedef enum { - /* This is the FILE * or void * the regular output should be written to. */ - CINIT(WRITEDATA, OBJECTPOINT, 1), - - /* The full URL to get/put */ - CINIT(URL, STRINGPOINT, 2), - - /* Port number to connect to, if other than default. */ - CINIT(PORT, LONG, 3), - - /* Name of proxy to use. */ - CINIT(PROXY, STRINGPOINT, 4), - - /* "user:password;options" to use when fetching. */ - CINIT(USERPWD, STRINGPOINT, 5), - - /* "user:password" to use with proxy. */ - CINIT(PROXYUSERPWD, STRINGPOINT, 6), - - /* Range to get, specified as an ASCII string. */ - CINIT(RANGE, STRINGPOINT, 7), - - /* not used */ - - /* Specified file stream to upload from (use as input): */ - CINIT(READDATA, OBJECTPOINT, 9), - - /* Buffer to receive error messages in, must be at least CURL_ERROR_SIZE - * bytes big. */ - CINIT(ERRORBUFFER, OBJECTPOINT, 10), - - /* Function that will be called to store the output (instead of fwrite). The - * parameters will use fwrite() syntax, make sure to follow them. */ - CINIT(WRITEFUNCTION, FUNCTIONPOINT, 11), - - /* Function that will be called to read the input (instead of fread). The - * parameters will use fread() syntax, make sure to follow them. */ - CINIT(READFUNCTION, FUNCTIONPOINT, 12), - - /* Time-out the read operation after this amount of seconds */ - CINIT(TIMEOUT, LONG, 13), - - /* If the CURLOPT_INFILE is used, this can be used to inform libcurl about - * how large the file being sent really is. That allows better error - * checking and better verifies that the upload was successful. -1 means - * unknown size. - * - * For large file support, there is also a _LARGE version of the key - * which takes an off_t type, allowing platforms with larger off_t - * sizes to handle larger files. See below for INFILESIZE_LARGE. - */ - CINIT(INFILESIZE, LONG, 14), - - /* POST static input fields. */ - CINIT(POSTFIELDS, OBJECTPOINT, 15), - - /* Set the referrer page (needed by some CGIs) */ - CINIT(REFERER, STRINGPOINT, 16), - - /* Set the FTP PORT string (interface name, named or numerical IP address) - Use i.e '-' to use default address. */ - CINIT(FTPPORT, STRINGPOINT, 17), - - /* Set the User-Agent string (examined by some CGIs) */ - CINIT(USERAGENT, STRINGPOINT, 18), - - /* If the download receives less than "low speed limit" bytes/second - * during "low speed time" seconds, the operations is aborted. - * You could i.e if you have a pretty high speed connection, abort if - * it is less than 2000 bytes/sec during 20 seconds. - */ - - /* Set the "low speed limit" */ - CINIT(LOW_SPEED_LIMIT, LONG, 19), - - /* Set the "low speed time" */ - CINIT(LOW_SPEED_TIME, LONG, 20), - - /* Set the continuation offset. - * - * Note there is also a _LARGE version of this key which uses - * off_t types, allowing for large file offsets on platforms which - * use larger-than-32-bit off_t's. Look below for RESUME_FROM_LARGE. - */ - CINIT(RESUME_FROM, LONG, 21), - - /* Set cookie in request: */ - CINIT(COOKIE, STRINGPOINT, 22), - - /* This points to a linked list of headers, struct curl_slist kind. This - list is also used for RTSP (in spite of its name) */ - CINIT(HTTPHEADER, OBJECTPOINT, 23), - - /* This points to a linked list of post entries, struct curl_httppost */ - CINIT(HTTPPOST, OBJECTPOINT, 24), - - /* name of the file keeping your private SSL-certificate */ - CINIT(SSLCERT, STRINGPOINT, 25), - - /* password for the SSL or SSH private key */ - CINIT(KEYPASSWD, STRINGPOINT, 26), - - /* send TYPE parameter? */ - CINIT(CRLF, LONG, 27), - - /* send linked-list of QUOTE commands */ - CINIT(QUOTE, OBJECTPOINT, 28), - - /* send FILE * or void * to store headers to, if you use a callback it - is simply passed to the callback unmodified */ - CINIT(HEADERDATA, OBJECTPOINT, 29), - - /* point to a file to read the initial cookies from, also enables - "cookie awareness" */ - CINIT(COOKIEFILE, STRINGPOINT, 31), - - /* What version to specifically try to use. - See CURL_SSLVERSION defines below. */ - CINIT(SSLVERSION, LONG, 32), - - /* What kind of HTTP time condition to use, see defines */ - CINIT(TIMECONDITION, LONG, 33), - - /* Time to use with the above condition. Specified in number of seconds - since 1 Jan 1970 */ - CINIT(TIMEVALUE, LONG, 34), - - /* 35 = OBSOLETE */ - - /* Custom request, for customizing the get command like - HTTP: DELETE, TRACE and others - FTP: to use a different list command - */ - CINIT(CUSTOMREQUEST, STRINGPOINT, 36), - - /* FILE handle to use instead of stderr */ - CINIT(STDERR, OBJECTPOINT, 37), - - /* 38 is not used */ - - /* send linked-list of post-transfer QUOTE commands */ - CINIT(POSTQUOTE, OBJECTPOINT, 39), - - CINIT(OBSOLETE40, OBJECTPOINT, 40), /* OBSOLETE, do not use! */ - - CINIT(VERBOSE, LONG, 41), /* talk a lot */ - CINIT(HEADER, LONG, 42), /* throw the header out too */ - CINIT(NOPROGRESS, LONG, 43), /* shut off the progress meter */ - CINIT(NOBODY, LONG, 44), /* use HEAD to get http document */ - CINIT(FAILONERROR, LONG, 45), /* no output on http error codes >= 400 */ - CINIT(UPLOAD, LONG, 46), /* this is an upload */ - CINIT(POST, LONG, 47), /* HTTP POST method */ - CINIT(DIRLISTONLY, LONG, 48), /* bare names when listing directories */ - - CINIT(APPEND, LONG, 50), /* Append instead of overwrite on upload! */ - - /* Specify whether to read the user+password from the .netrc or the URL. - * This must be one of the CURL_NETRC_* enums below. */ - CINIT(NETRC, LONG, 51), - - CINIT(FOLLOWLOCATION, LONG, 52), /* use Location: Luke! */ - - CINIT(TRANSFERTEXT, LONG, 53), /* transfer data in text/ASCII format */ - CINIT(PUT, LONG, 54), /* HTTP PUT */ - - /* 55 = OBSOLETE */ - - /* DEPRECATED - * Function that will be called instead of the internal progress display - * function. This function should be defined as the curl_progress_callback - * prototype defines. */ - CINIT(PROGRESSFUNCTION, FUNCTIONPOINT, 56), - - /* Data passed to the CURLOPT_PROGRESSFUNCTION and CURLOPT_XFERINFOFUNCTION - callbacks */ - CINIT(PROGRESSDATA, OBJECTPOINT, 57), -#define CURLOPT_XFERINFODATA CURLOPT_PROGRESSDATA - - /* We want the referrer field set automatically when following locations */ - CINIT(AUTOREFERER, LONG, 58), - - /* Port of the proxy, can be set in the proxy string as well with: - "[host]:[port]" */ - CINIT(PROXYPORT, LONG, 59), - - /* size of the POST input data, if strlen() is not good to use */ - CINIT(POSTFIELDSIZE, LONG, 60), - - /* tunnel non-http operations through a HTTP proxy */ - CINIT(HTTPPROXYTUNNEL, LONG, 61), - - /* Set the interface string to use as outgoing network interface */ - CINIT(INTERFACE, STRINGPOINT, 62), - - /* Set the krb4/5 security level, this also enables krb4/5 awareness. This - * is a string, 'clear', 'safe', 'confidential' or 'private'. If the string - * is set but doesn't match one of these, 'private' will be used. */ - CINIT(KRBLEVEL, STRINGPOINT, 63), - - /* Set if we should verify the peer in ssl handshake, set 1 to verify. */ - CINIT(SSL_VERIFYPEER, LONG, 64), - - /* The CApath or CAfile used to validate the peer certificate - this option is used only if SSL_VERIFYPEER is true */ - CINIT(CAINFO, STRINGPOINT, 65), - - /* 66 = OBSOLETE */ - /* 67 = OBSOLETE */ - - /* Maximum number of http redirects to follow */ - CINIT(MAXREDIRS, LONG, 68), - - /* Pass a long set to 1 to get the date of the requested document (if - possible)! Pass a zero to shut it off. */ - CINIT(FILETIME, LONG, 69), - - /* This points to a linked list of telnet options */ - CINIT(TELNETOPTIONS, OBJECTPOINT, 70), - - /* Max amount of cached alive connections */ - CINIT(MAXCONNECTS, LONG, 71), - - CINIT(OBSOLETE72, LONG, 72), /* OBSOLETE, do not use! */ - - /* 73 = OBSOLETE */ - - /* Set to explicitly use a new connection for the upcoming transfer. - Do not use this unless you're absolutely sure of this, as it makes the - operation slower and is less friendly for the network. */ - CINIT(FRESH_CONNECT, LONG, 74), - - /* Set to explicitly forbid the upcoming transfer's connection to be re-used - when done. Do not use this unless you're absolutely sure of this, as it - makes the operation slower and is less friendly for the network. */ - CINIT(FORBID_REUSE, LONG, 75), - - /* Set to a file name that contains random data for libcurl to use to - seed the random engine when doing SSL connects. */ - CINIT(RANDOM_FILE, STRINGPOINT, 76), - - /* Set to the Entropy Gathering Daemon socket pathname */ - CINIT(EGDSOCKET, STRINGPOINT, 77), - - /* Time-out connect operations after this amount of seconds, if connects are - OK within this time, then fine... This only aborts the connect phase. */ - CINIT(CONNECTTIMEOUT, LONG, 78), - - /* Function that will be called to store headers (instead of fwrite). The - * parameters will use fwrite() syntax, make sure to follow them. */ - CINIT(HEADERFUNCTION, FUNCTIONPOINT, 79), - - /* Set this to force the HTTP request to get back to GET. Only really usable - if POST, PUT or a custom request have been used first. - */ - CINIT(HTTPGET, LONG, 80), - - /* Set if we should verify the Common name from the peer certificate in ssl - * handshake, set 1 to check existence, 2 to ensure that it matches the - * provided hostname. */ - CINIT(SSL_VERIFYHOST, LONG, 81), - - /* Specify which file name to write all known cookies in after completed - operation. Set file name to "-" (dash) to make it go to stdout. */ - CINIT(COOKIEJAR, STRINGPOINT, 82), - - /* Specify which SSL ciphers to use */ - CINIT(SSL_CIPHER_LIST, STRINGPOINT, 83), - - /* Specify which HTTP version to use! This must be set to one of the - CURL_HTTP_VERSION* enums set below. */ - CINIT(HTTP_VERSION, LONG, 84), - - /* Specifically switch on or off the FTP engine's use of the EPSV command. By - default, that one will always be attempted before the more traditional - PASV command. */ - CINIT(FTP_USE_EPSV, LONG, 85), - - /* type of the file keeping your SSL-certificate ("DER", "PEM", "ENG") */ - CINIT(SSLCERTTYPE, STRINGPOINT, 86), - - /* name of the file keeping your private SSL-key */ - CINIT(SSLKEY, STRINGPOINT, 87), - - /* type of the file keeping your private SSL-key ("DER", "PEM", "ENG") */ - CINIT(SSLKEYTYPE, STRINGPOINT, 88), - - /* crypto engine for the SSL-sub system */ - CINIT(SSLENGINE, STRINGPOINT, 89), - - /* set the crypto engine for the SSL-sub system as default - the param has no meaning... - */ - CINIT(SSLENGINE_DEFAULT, LONG, 90), - - /* Non-zero value means to use the global dns cache */ - CINIT(DNS_USE_GLOBAL_CACHE, LONG, 91), /* DEPRECATED, do not use! */ - - /* DNS cache timeout */ - CINIT(DNS_CACHE_TIMEOUT, LONG, 92), - - /* send linked-list of pre-transfer QUOTE commands */ - CINIT(PREQUOTE, OBJECTPOINT, 93), - - /* set the debug function */ - CINIT(DEBUGFUNCTION, FUNCTIONPOINT, 94), - - /* set the data for the debug function */ - CINIT(DEBUGDATA, OBJECTPOINT, 95), - - /* mark this as start of a cookie session */ - CINIT(COOKIESESSION, LONG, 96), - - /* The CApath directory used to validate the peer certificate - this option is used only if SSL_VERIFYPEER is true */ - CINIT(CAPATH, STRINGPOINT, 97), - - /* Instruct libcurl to use a smaller receive buffer */ - CINIT(BUFFERSIZE, LONG, 98), - - /* Instruct libcurl to not use any signal/alarm handlers, even when using - timeouts. This option is useful for multi-threaded applications. - See libcurl-the-guide for more background information. */ - CINIT(NOSIGNAL, LONG, 99), - - /* Provide a CURLShare for mutexing non-ts data */ - CINIT(SHARE, OBJECTPOINT, 100), - - /* indicates type of proxy. accepted values are CURLPROXY_HTTP (default), - CURLPROXY_HTTPS, CURLPROXY_SOCKS4, CURLPROXY_SOCKS4A and - CURLPROXY_SOCKS5. */ - CINIT(PROXYTYPE, LONG, 101), - - /* Set the Accept-Encoding string. Use this to tell a server you would like - the response to be compressed. Before 7.21.6, this was known as - CURLOPT_ENCODING */ - CINIT(ACCEPT_ENCODING, STRINGPOINT, 102), - - /* Set pointer to private data */ - CINIT(PRIVATE, OBJECTPOINT, 103), - - /* Set aliases for HTTP 200 in the HTTP Response header */ - CINIT(HTTP200ALIASES, OBJECTPOINT, 104), - - /* Continue to send authentication (user+password) when following locations, - even when hostname changed. This can potentially send off the name - and password to whatever host the server decides. */ - CINIT(UNRESTRICTED_AUTH, LONG, 105), - - /* Specifically switch on or off the FTP engine's use of the EPRT command ( - it also disables the LPRT attempt). By default, those ones will always be - attempted before the good old traditional PORT command. */ - CINIT(FTP_USE_EPRT, LONG, 106), - - /* Set this to a bitmask value to enable the particular authentications - methods you like. Use this in combination with CURLOPT_USERPWD. - Note that setting multiple bits may cause extra network round-trips. */ - CINIT(HTTPAUTH, LONG, 107), - - /* Set the ssl context callback function, currently only for OpenSSL ssl_ctx - in second argument. The function must be matching the - curl_ssl_ctx_callback proto. */ - CINIT(SSL_CTX_FUNCTION, FUNCTIONPOINT, 108), - - /* Set the userdata for the ssl context callback function's third - argument */ - CINIT(SSL_CTX_DATA, OBJECTPOINT, 109), - - /* FTP Option that causes missing dirs to be created on the remote server. - In 7.19.4 we introduced the convenience enums for this option using the - CURLFTP_CREATE_DIR prefix. - */ - CINIT(FTP_CREATE_MISSING_DIRS, LONG, 110), - - /* Set this to a bitmask value to enable the particular authentications - methods you like. Use this in combination with CURLOPT_PROXYUSERPWD. - Note that setting multiple bits may cause extra network round-trips. */ - CINIT(PROXYAUTH, LONG, 111), - - /* FTP option that changes the timeout, in seconds, associated with - getting a response. This is different from transfer timeout time and - essentially places a demand on the FTP server to acknowledge commands - in a timely manner. */ - CINIT(FTP_RESPONSE_TIMEOUT, LONG, 112), -#define CURLOPT_SERVER_RESPONSE_TIMEOUT CURLOPT_FTP_RESPONSE_TIMEOUT - - /* Set this option to one of the CURL_IPRESOLVE_* defines (see below) to - tell libcurl to resolve names to those IP versions only. This only has - affect on systems with support for more than one, i.e IPv4 _and_ IPv6. */ - CINIT(IPRESOLVE, LONG, 113), - - /* Set this option to limit the size of a file that will be downloaded from - an HTTP or FTP server. - - Note there is also _LARGE version which adds large file support for - platforms which have larger off_t sizes. See MAXFILESIZE_LARGE below. */ - CINIT(MAXFILESIZE, LONG, 114), - - /* See the comment for INFILESIZE above, but in short, specifies - * the size of the file being uploaded. -1 means unknown. - */ - CINIT(INFILESIZE_LARGE, OFF_T, 115), - - /* Sets the continuation offset. There is also a LONG version of this; - * look above for RESUME_FROM. - */ - CINIT(RESUME_FROM_LARGE, OFF_T, 116), - - /* Sets the maximum size of data that will be downloaded from - * an HTTP or FTP server. See MAXFILESIZE above for the LONG version. - */ - CINIT(MAXFILESIZE_LARGE, OFF_T, 117), - - /* Set this option to the file name of your .netrc file you want libcurl - to parse (using the CURLOPT_NETRC option). If not set, libcurl will do - a poor attempt to find the user's home directory and check for a .netrc - file in there. */ - CINIT(NETRC_FILE, STRINGPOINT, 118), - - /* Enable SSL/TLS for FTP, pick one of: - CURLUSESSL_TRY - try using SSL, proceed anyway otherwise - CURLUSESSL_CONTROL - SSL for the control connection or fail - CURLUSESSL_ALL - SSL for all communication or fail - */ - CINIT(USE_SSL, LONG, 119), - - /* The _LARGE version of the standard POSTFIELDSIZE option */ - CINIT(POSTFIELDSIZE_LARGE, OFF_T, 120), - - /* Enable/disable the TCP Nagle algorithm */ - CINIT(TCP_NODELAY, LONG, 121), - - /* 122 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */ - /* 123 OBSOLETE. Gone in 7.16.0 */ - /* 124 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */ - /* 125 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */ - /* 126 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */ - /* 127 OBSOLETE. Gone in 7.16.0 */ - /* 128 OBSOLETE. Gone in 7.16.0 */ - - /* When FTP over SSL/TLS is selected (with CURLOPT_USE_SSL), this option - can be used to change libcurl's default action which is to first try - "AUTH SSL" and then "AUTH TLS" in this order, and proceed when a OK - response has been received. - - Available parameters are: - CURLFTPAUTH_DEFAULT - let libcurl decide - CURLFTPAUTH_SSL - try "AUTH SSL" first, then TLS - CURLFTPAUTH_TLS - try "AUTH TLS" first, then SSL - */ - CINIT(FTPSSLAUTH, LONG, 129), - - CINIT(IOCTLFUNCTION, FUNCTIONPOINT, 130), - CINIT(IOCTLDATA, OBJECTPOINT, 131), - - /* 132 OBSOLETE. Gone in 7.16.0 */ - /* 133 OBSOLETE. Gone in 7.16.0 */ - - /* zero terminated string for pass on to the FTP server when asked for - "account" info */ - CINIT(FTP_ACCOUNT, STRINGPOINT, 134), - - /* feed cookie into cookie engine */ - CINIT(COOKIELIST, STRINGPOINT, 135), - - /* ignore Content-Length */ - CINIT(IGNORE_CONTENT_LENGTH, LONG, 136), - - /* Set to non-zero to skip the IP address received in a 227 PASV FTP server - response. Typically used for FTP-SSL purposes but is not restricted to - that. libcurl will then instead use the same IP address it used for the - control connection. */ - CINIT(FTP_SKIP_PASV_IP, LONG, 137), - - /* Select "file method" to use when doing FTP, see the curl_ftpmethod - above. */ - CINIT(FTP_FILEMETHOD, LONG, 138), - - /* Local port number to bind the socket to */ - CINIT(LOCALPORT, LONG, 139), - - /* Number of ports to try, including the first one set with LOCALPORT. - Thus, setting it to 1 will make no additional attempts but the first. - */ - CINIT(LOCALPORTRANGE, LONG, 140), - - /* no transfer, set up connection and let application use the socket by - extracting it with CURLINFO_LASTSOCKET */ - CINIT(CONNECT_ONLY, LONG, 141), - - /* Function that will be called to convert from the - network encoding (instead of using the iconv calls in libcurl) */ - CINIT(CONV_FROM_NETWORK_FUNCTION, FUNCTIONPOINT, 142), - - /* Function that will be called to convert to the - network encoding (instead of using the iconv calls in libcurl) */ - CINIT(CONV_TO_NETWORK_FUNCTION, FUNCTIONPOINT, 143), - - /* Function that will be called to convert from UTF8 - (instead of using the iconv calls in libcurl) - Note that this is used only for SSL certificate processing */ - CINIT(CONV_FROM_UTF8_FUNCTION, FUNCTIONPOINT, 144), - - /* if the connection proceeds too quickly then need to slow it down */ - /* limit-rate: maximum number of bytes per second to send or receive */ - CINIT(MAX_SEND_SPEED_LARGE, OFF_T, 145), - CINIT(MAX_RECV_SPEED_LARGE, OFF_T, 146), - - /* Pointer to command string to send if USER/PASS fails. */ - CINIT(FTP_ALTERNATIVE_TO_USER, STRINGPOINT, 147), - - /* callback function for setting socket options */ - CINIT(SOCKOPTFUNCTION, FUNCTIONPOINT, 148), - CINIT(SOCKOPTDATA, OBJECTPOINT, 149), - - /* set to 0 to disable session ID re-use for this transfer, default is - enabled (== 1) */ - CINIT(SSL_SESSIONID_CACHE, LONG, 150), - - /* allowed SSH authentication methods */ - CINIT(SSH_AUTH_TYPES, LONG, 151), - - /* Used by scp/sftp to do public/private key authentication */ - CINIT(SSH_PUBLIC_KEYFILE, STRINGPOINT, 152), - CINIT(SSH_PRIVATE_KEYFILE, STRINGPOINT, 153), - - /* Send CCC (Clear Command Channel) after authentication */ - CINIT(FTP_SSL_CCC, LONG, 154), - - /* Same as TIMEOUT and CONNECTTIMEOUT, but with ms resolution */ - CINIT(TIMEOUT_MS, LONG, 155), - CINIT(CONNECTTIMEOUT_MS, LONG, 156), - - /* set to zero to disable the libcurl's decoding and thus pass the raw body - data to the application even when it is encoded/compressed */ - CINIT(HTTP_TRANSFER_DECODING, LONG, 157), - CINIT(HTTP_CONTENT_DECODING, LONG, 158), - - /* Permission used when creating new files and directories on the remote - server for protocols that support it, SFTP/SCP/FILE */ - CINIT(NEW_FILE_PERMS, LONG, 159), - CINIT(NEW_DIRECTORY_PERMS, LONG, 160), - - /* Set the behaviour of POST when redirecting. Values must be set to one - of CURL_REDIR* defines below. This used to be called CURLOPT_POST301 */ - CINIT(POSTREDIR, LONG, 161), - - /* used by scp/sftp to verify the host's public key */ - CINIT(SSH_HOST_PUBLIC_KEY_MD5, STRINGPOINT, 162), - - /* Callback function for opening socket (instead of socket(2)). Optionally, - callback is able change the address or refuse to connect returning - CURL_SOCKET_BAD. The callback should have type - curl_opensocket_callback */ - CINIT(OPENSOCKETFUNCTION, FUNCTIONPOINT, 163), - CINIT(OPENSOCKETDATA, OBJECTPOINT, 164), - - /* POST volatile input fields. */ - CINIT(COPYPOSTFIELDS, OBJECTPOINT, 165), - - /* set transfer mode (;type=) when doing FTP via an HTTP proxy */ - CINIT(PROXY_TRANSFER_MODE, LONG, 166), - - /* Callback function for seeking in the input stream */ - CINIT(SEEKFUNCTION, FUNCTIONPOINT, 167), - CINIT(SEEKDATA, OBJECTPOINT, 168), - - /* CRL file */ - CINIT(CRLFILE, STRINGPOINT, 169), - - /* Issuer certificate */ - CINIT(ISSUERCERT, STRINGPOINT, 170), - - /* (IPv6) Address scope */ - CINIT(ADDRESS_SCOPE, LONG, 171), - - /* Collect certificate chain info and allow it to get retrievable with - CURLINFO_CERTINFO after the transfer is complete. */ - CINIT(CERTINFO, LONG, 172), - - /* "name" and "pwd" to use when fetching. */ - CINIT(USERNAME, STRINGPOINT, 173), - CINIT(PASSWORD, STRINGPOINT, 174), - - /* "name" and "pwd" to use with Proxy when fetching. */ - CINIT(PROXYUSERNAME, STRINGPOINT, 175), - CINIT(PROXYPASSWORD, STRINGPOINT, 176), - - /* Comma separated list of hostnames defining no-proxy zones. These should - match both hostnames directly, and hostnames within a domain. For - example, local.com will match local.com and www.local.com, but NOT - notlocal.com or www.notlocal.com. For compatibility with other - implementations of this, .local.com will be considered to be the same as - local.com. A single * is the only valid wildcard, and effectively - disables the use of proxy. */ - CINIT(NOPROXY, STRINGPOINT, 177), - - /* block size for TFTP transfers */ - CINIT(TFTP_BLKSIZE, LONG, 178), - - /* Socks Service */ - CINIT(SOCKS5_GSSAPI_SERVICE, STRINGPOINT, 179), /* DEPRECATED, do not use! */ - - /* Socks Service */ - CINIT(SOCKS5_GSSAPI_NEC, LONG, 180), - - /* set the bitmask for the protocols that are allowed to be used for the - transfer, which thus helps the app which takes URLs from users or other - external inputs and want to restrict what protocol(s) to deal - with. Defaults to CURLPROTO_ALL. */ - CINIT(PROTOCOLS, LONG, 181), - - /* set the bitmask for the protocols that libcurl is allowed to follow to, - as a subset of the CURLOPT_PROTOCOLS ones. That means the protocol needs - to be set in both bitmasks to be allowed to get redirected to. Defaults - to all protocols except FILE and SCP. */ - CINIT(REDIR_PROTOCOLS, LONG, 182), - - /* set the SSH knownhost file name to use */ - CINIT(SSH_KNOWNHOSTS, STRINGPOINT, 183), - - /* set the SSH host key callback, must point to a curl_sshkeycallback - function */ - CINIT(SSH_KEYFUNCTION, FUNCTIONPOINT, 184), - - /* set the SSH host key callback custom pointer */ - CINIT(SSH_KEYDATA, OBJECTPOINT, 185), - - /* set the SMTP mail originator */ - CINIT(MAIL_FROM, STRINGPOINT, 186), - - /* set the list of SMTP mail receiver(s) */ - CINIT(MAIL_RCPT, OBJECTPOINT, 187), - - /* FTP: send PRET before PASV */ - CINIT(FTP_USE_PRET, LONG, 188), - - /* RTSP request method (OPTIONS, SETUP, PLAY, etc...) */ - CINIT(RTSP_REQUEST, LONG, 189), - - /* The RTSP session identifier */ - CINIT(RTSP_SESSION_ID, STRINGPOINT, 190), - - /* The RTSP stream URI */ - CINIT(RTSP_STREAM_URI, STRINGPOINT, 191), - - /* The Transport: header to use in RTSP requests */ - CINIT(RTSP_TRANSPORT, STRINGPOINT, 192), - - /* Manually initialize the client RTSP CSeq for this handle */ - CINIT(RTSP_CLIENT_CSEQ, LONG, 193), - - /* Manually initialize the server RTSP CSeq for this handle */ - CINIT(RTSP_SERVER_CSEQ, LONG, 194), - - /* The stream to pass to INTERLEAVEFUNCTION. */ - CINIT(INTERLEAVEDATA, OBJECTPOINT, 195), - - /* Let the application define a custom write method for RTP data */ - CINIT(INTERLEAVEFUNCTION, FUNCTIONPOINT, 196), - - /* Turn on wildcard matching */ - CINIT(WILDCARDMATCH, LONG, 197), - - /* Directory matching callback called before downloading of an - individual file (chunk) started */ - CINIT(CHUNK_BGN_FUNCTION, FUNCTIONPOINT, 198), - - /* Directory matching callback called after the file (chunk) - was downloaded, or skipped */ - CINIT(CHUNK_END_FUNCTION, FUNCTIONPOINT, 199), - - /* Change match (fnmatch-like) callback for wildcard matching */ - CINIT(FNMATCH_FUNCTION, FUNCTIONPOINT, 200), - - /* Let the application define custom chunk data pointer */ - CINIT(CHUNK_DATA, OBJECTPOINT, 201), - - /* FNMATCH_FUNCTION user pointer */ - CINIT(FNMATCH_DATA, OBJECTPOINT, 202), - - /* send linked-list of name:port:address sets */ - CINIT(RESOLVE, OBJECTPOINT, 203), - - /* Set a username for authenticated TLS */ - CINIT(TLSAUTH_USERNAME, STRINGPOINT, 204), - - /* Set a password for authenticated TLS */ - CINIT(TLSAUTH_PASSWORD, STRINGPOINT, 205), - - /* Set authentication type for authenticated TLS */ - CINIT(TLSAUTH_TYPE, STRINGPOINT, 206), - - /* Set to 1 to enable the "TE:" header in HTTP requests to ask for - compressed transfer-encoded responses. Set to 0 to disable the use of TE: - in outgoing requests. The current default is 0, but it might change in a - future libcurl release. - - libcurl will ask for the compressed methods it knows of, and if that - isn't any, it will not ask for transfer-encoding at all even if this - option is set to 1. - - */ - CINIT(TRANSFER_ENCODING, LONG, 207), - - /* Callback function for closing socket (instead of close(2)). The callback - should have type curl_closesocket_callback */ - CINIT(CLOSESOCKETFUNCTION, FUNCTIONPOINT, 208), - CINIT(CLOSESOCKETDATA, OBJECTPOINT, 209), - - /* allow GSSAPI credential delegation */ - CINIT(GSSAPI_DELEGATION, LONG, 210), - - /* Set the name servers to use for DNS resolution */ - CINIT(DNS_SERVERS, STRINGPOINT, 211), - - /* Time-out accept operations (currently for FTP only) after this amount - of milliseconds. */ - CINIT(ACCEPTTIMEOUT_MS, LONG, 212), - - /* Set TCP keepalive */ - CINIT(TCP_KEEPALIVE, LONG, 213), - - /* non-universal keepalive knobs (Linux, AIX, HP-UX, more) */ - CINIT(TCP_KEEPIDLE, LONG, 214), - CINIT(TCP_KEEPINTVL, LONG, 215), - - /* Enable/disable specific SSL features with a bitmask, see CURLSSLOPT_* */ - CINIT(SSL_OPTIONS, LONG, 216), - - /* Set the SMTP auth originator */ - CINIT(MAIL_AUTH, STRINGPOINT, 217), - - /* Enable/disable SASL initial response */ - CINIT(SASL_IR, LONG, 218), - - /* Function that will be called instead of the internal progress display - * function. This function should be defined as the curl_xferinfo_callback - * prototype defines. (Deprecates CURLOPT_PROGRESSFUNCTION) */ - CINIT(XFERINFOFUNCTION, FUNCTIONPOINT, 219), - - /* The XOAUTH2 bearer token */ - CINIT(XOAUTH2_BEARER, STRINGPOINT, 220), - - /* Set the interface string to use as outgoing network - * interface for DNS requests. - * Only supported by the c-ares DNS backend */ - CINIT(DNS_INTERFACE, STRINGPOINT, 221), - - /* Set the local IPv4 address to use for outgoing DNS requests. - * Only supported by the c-ares DNS backend */ - CINIT(DNS_LOCAL_IP4, STRINGPOINT, 222), - - /* Set the local IPv6 address to use for outgoing DNS requests. - * Only supported by the c-ares DNS backend */ - CINIT(DNS_LOCAL_IP6, STRINGPOINT, 223), - - /* Set authentication options directly */ - CINIT(LOGIN_OPTIONS, STRINGPOINT, 224), - - /* Enable/disable TLS NPN extension (http2 over ssl might fail without) */ - CINIT(SSL_ENABLE_NPN, LONG, 225), - - /* Enable/disable TLS ALPN extension (http2 over ssl might fail without) */ - CINIT(SSL_ENABLE_ALPN, LONG, 226), - - /* Time to wait for a response to a HTTP request containing an - * Expect: 100-continue header before sending the data anyway. */ - CINIT(EXPECT_100_TIMEOUT_MS, LONG, 227), - - /* This points to a linked list of headers used for proxy requests only, - struct curl_slist kind */ - CINIT(PROXYHEADER, OBJECTPOINT, 228), - - /* Pass in a bitmask of "header options" */ - CINIT(HEADEROPT, LONG, 229), - - /* The public key in DER form used to validate the peer public key - this option is used only if SSL_VERIFYPEER is true */ - CINIT(PINNEDPUBLICKEY, STRINGPOINT, 230), - - /* Path to Unix domain socket */ - CINIT(UNIX_SOCKET_PATH, STRINGPOINT, 231), - - /* Set if we should verify the certificate status. */ - CINIT(SSL_VERIFYSTATUS, LONG, 232), - - /* Set if we should enable TLS false start. */ - CINIT(SSL_FALSESTART, LONG, 233), - - /* Do not squash dot-dot sequences */ - CINIT(PATH_AS_IS, LONG, 234), - - /* Proxy Service Name */ - CINIT(PROXY_SERVICE_NAME, STRINGPOINT, 235), - - /* Service Name */ - CINIT(SERVICE_NAME, STRINGPOINT, 236), - - /* Wait/don't wait for pipe/mutex to clarify */ - CINIT(PIPEWAIT, LONG, 237), - - /* Set the protocol used when curl is given a URL without a protocol */ - CINIT(DEFAULT_PROTOCOL, STRINGPOINT, 238), - - /* Set stream weight, 1 - 256 (default is 16) */ - CINIT(STREAM_WEIGHT, LONG, 239), - - /* Set stream dependency on another CURL handle */ - CINIT(STREAM_DEPENDS, OBJECTPOINT, 240), - - /* Set E-xclusive stream dependency on another CURL handle */ - CINIT(STREAM_DEPENDS_E, OBJECTPOINT, 241), - - /* Do not send any tftp option requests to the server */ - CINIT(TFTP_NO_OPTIONS, LONG, 242), - - /* Linked-list of host:port:connect-to-host:connect-to-port, - overrides the URL's host:port (only for the network layer) */ - CINIT(CONNECT_TO, OBJECTPOINT, 243), - - /* Set TCP Fast Open */ - CINIT(TCP_FASTOPEN, LONG, 244), - - /* Continue to send data if the server responds early with an - * HTTP status code >= 300 */ - CINIT(KEEP_SENDING_ON_ERROR, LONG, 245), - - /* The CApath or CAfile used to validate the proxy certificate - this option is used only if PROXY_SSL_VERIFYPEER is true */ - CINIT(PROXY_CAINFO, STRINGPOINT, 246), - - /* The CApath directory used to validate the proxy certificate - this option is used only if PROXY_SSL_VERIFYPEER is true */ - CINIT(PROXY_CAPATH, STRINGPOINT, 247), - - /* Set if we should verify the proxy in ssl handshake, - set 1 to verify. */ - CINIT(PROXY_SSL_VERIFYPEER, LONG, 248), - - /* Set if we should verify the Common name from the proxy certificate in ssl - * handshake, set 1 to check existence, 2 to ensure that it matches - * the provided hostname. */ - CINIT(PROXY_SSL_VERIFYHOST, LONG, 249), - - /* What version to specifically try to use for proxy. - See CURL_SSLVERSION defines below. */ - CINIT(PROXY_SSLVERSION, LONG, 250), - - /* Set a username for authenticated TLS for proxy */ - CINIT(PROXY_TLSAUTH_USERNAME, STRINGPOINT, 251), - - /* Set a password for authenticated TLS for proxy */ - CINIT(PROXY_TLSAUTH_PASSWORD, STRINGPOINT, 252), - - /* Set authentication type for authenticated TLS for proxy */ - CINIT(PROXY_TLSAUTH_TYPE, STRINGPOINT, 253), - - /* name of the file keeping your private SSL-certificate for proxy */ - CINIT(PROXY_SSLCERT, STRINGPOINT, 254), - - /* type of the file keeping your SSL-certificate ("DER", "PEM", "ENG") for - proxy */ - CINIT(PROXY_SSLCERTTYPE, STRINGPOINT, 255), - - /* name of the file keeping your private SSL-key for proxy */ - CINIT(PROXY_SSLKEY, STRINGPOINT, 256), - - /* type of the file keeping your private SSL-key ("DER", "PEM", "ENG") for - proxy */ - CINIT(PROXY_SSLKEYTYPE, STRINGPOINT, 257), - - /* password for the SSL private key for proxy */ - CINIT(PROXY_KEYPASSWD, STRINGPOINT, 258), - - /* Specify which SSL ciphers to use for proxy */ - CINIT(PROXY_SSL_CIPHER_LIST, STRINGPOINT, 259), - - /* CRL file for proxy */ - CINIT(PROXY_CRLFILE, STRINGPOINT, 260), - - /* Enable/disable specific SSL features with a bitmask for proxy, see - CURLSSLOPT_* */ - CINIT(PROXY_SSL_OPTIONS, LONG, 261), - - /* Name of pre proxy to use. */ - CINIT(PRE_PROXY, STRINGPOINT, 262), - - /* The public key in DER form used to validate the proxy public key - this option is used only if PROXY_SSL_VERIFYPEER is true */ - CINIT(PROXY_PINNEDPUBLICKEY, STRINGPOINT, 263), - - /* Path to an abstract Unix domain socket */ - CINIT(ABSTRACT_UNIX_SOCKET, STRINGPOINT, 264), - - /* Suppress proxy CONNECT response headers from user callbacks */ - CINIT(SUPPRESS_CONNECT_HEADERS, LONG, 265), - - /* The request target, instead of extracted from the URL */ - CINIT(REQUEST_TARGET, STRINGPOINT, 266), - - /* bitmask of allowed auth methods for connections to SOCKS5 proxies */ - CINIT(SOCKS5_AUTH, LONG, 267), - - /* Enable/disable SSH compression */ - CINIT(SSH_COMPRESSION, LONG, 268), - - /* Post MIME data. */ - CINIT(MIMEPOST, OBJECTPOINT, 269), - - /* Time to use with the CURLOPT_TIMECONDITION. Specified in number of - seconds since 1 Jan 1970. */ - CINIT(TIMEVALUE_LARGE, OFF_T, 270), - - /* Head start in milliseconds to give happy eyeballs. */ - CINIT(HAPPY_EYEBALLS_TIMEOUT_MS, LONG, 271), - - /* Function that will be called before a resolver request is made */ - CINIT(RESOLVER_START_FUNCTION, FUNCTIONPOINT, 272), - - /* User data to pass to the resolver start callback. */ - CINIT(RESOLVER_START_DATA, OBJECTPOINT, 273), - - CURLOPT_LASTENTRY /* the last unused */ -} CURLoption; - -#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all - the obsolete stuff removed! */ - -/* Backwards compatibility with older names */ -/* These are scheduled to disappear by 2011 */ - -/* This was added in version 7.19.1 */ -#define CURLOPT_POST301 CURLOPT_POSTREDIR - -/* These are scheduled to disappear by 2009 */ - -/* The following were added in 7.17.0 */ -#define CURLOPT_SSLKEYPASSWD CURLOPT_KEYPASSWD -#define CURLOPT_FTPAPPEND CURLOPT_APPEND -#define CURLOPT_FTPLISTONLY CURLOPT_DIRLISTONLY -#define CURLOPT_FTP_SSL CURLOPT_USE_SSL - -/* The following were added earlier */ - -#define CURLOPT_SSLCERTPASSWD CURLOPT_KEYPASSWD -#define CURLOPT_KRB4LEVEL CURLOPT_KRBLEVEL - -#else -/* This is set if CURL_NO_OLDIES is defined at compile-time */ -#undef CURLOPT_DNS_USE_GLOBAL_CACHE /* soon obsolete */ -#endif - - - /* Below here follows defines for the CURLOPT_IPRESOLVE option. If a host - name resolves addresses using more than one IP protocol version, this - option might be handy to force libcurl to use a specific IP version. */ -#define CURL_IPRESOLVE_WHATEVER 0 /* default, resolves addresses to all IP - versions that your system allows */ -#define CURL_IPRESOLVE_V4 1 /* resolve to IPv4 addresses */ -#define CURL_IPRESOLVE_V6 2 /* resolve to IPv6 addresses */ - - /* three convenient "aliases" that follow the name scheme better */ -#define CURLOPT_RTSPHEADER CURLOPT_HTTPHEADER - - /* These enums are for use with the CURLOPT_HTTP_VERSION option. */ -enum { - CURL_HTTP_VERSION_NONE, /* setting this means we don't care, and that we'd - like the library to choose the best possible - for us! */ - CURL_HTTP_VERSION_1_0, /* please use HTTP 1.0 in the request */ - CURL_HTTP_VERSION_1_1, /* please use HTTP 1.1 in the request */ - CURL_HTTP_VERSION_2_0, /* please use HTTP 2 in the request */ - CURL_HTTP_VERSION_2TLS, /* use version 2 for HTTPS, version 1.1 for HTTP */ - CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE, /* please use HTTP 2 without HTTP/1.1 - Upgrade */ - - CURL_HTTP_VERSION_LAST /* *ILLEGAL* http version */ -}; - -/* Convenience definition simple because the name of the version is HTTP/2 and - not 2.0. The 2_0 version of the enum name was set while the version was - still planned to be 2.0 and we stick to it for compatibility. */ -#define CURL_HTTP_VERSION_2 CURL_HTTP_VERSION_2_0 - -/* - * Public API enums for RTSP requests - */ -enum { - CURL_RTSPREQ_NONE, /* first in list */ - CURL_RTSPREQ_OPTIONS, - CURL_RTSPREQ_DESCRIBE, - CURL_RTSPREQ_ANNOUNCE, - CURL_RTSPREQ_SETUP, - CURL_RTSPREQ_PLAY, - CURL_RTSPREQ_PAUSE, - CURL_RTSPREQ_TEARDOWN, - CURL_RTSPREQ_GET_PARAMETER, - CURL_RTSPREQ_SET_PARAMETER, - CURL_RTSPREQ_RECORD, - CURL_RTSPREQ_RECEIVE, - CURL_RTSPREQ_LAST /* last in list */ -}; - - /* These enums are for use with the CURLOPT_NETRC option. */ -enum CURL_NETRC_OPTION { - CURL_NETRC_IGNORED, /* The .netrc will never be read. - * This is the default. */ - CURL_NETRC_OPTIONAL, /* A user:password in the URL will be preferred - * to one in the .netrc. */ - CURL_NETRC_REQUIRED, /* A user:password in the URL will be ignored. - * Unless one is set programmatically, the .netrc - * will be queried. */ - CURL_NETRC_LAST -}; - -enum { - CURL_SSLVERSION_DEFAULT, - CURL_SSLVERSION_TLSv1, /* TLS 1.x */ - CURL_SSLVERSION_SSLv2, - CURL_SSLVERSION_SSLv3, - CURL_SSLVERSION_TLSv1_0, - CURL_SSLVERSION_TLSv1_1, - CURL_SSLVERSION_TLSv1_2, - CURL_SSLVERSION_TLSv1_3, - - CURL_SSLVERSION_LAST /* never use, keep last */ -}; - -enum { - CURL_SSLVERSION_MAX_NONE = 0, - CURL_SSLVERSION_MAX_DEFAULT = (CURL_SSLVERSION_TLSv1 << 16), - CURL_SSLVERSION_MAX_TLSv1_0 = (CURL_SSLVERSION_TLSv1_0 << 16), - CURL_SSLVERSION_MAX_TLSv1_1 = (CURL_SSLVERSION_TLSv1_1 << 16), - CURL_SSLVERSION_MAX_TLSv1_2 = (CURL_SSLVERSION_TLSv1_2 << 16), - CURL_SSLVERSION_MAX_TLSv1_3 = (CURL_SSLVERSION_TLSv1_3 << 16), - - /* never use, keep last */ - CURL_SSLVERSION_MAX_LAST = (CURL_SSLVERSION_LAST << 16) -}; - -enum CURL_TLSAUTH { - CURL_TLSAUTH_NONE, - CURL_TLSAUTH_SRP, - CURL_TLSAUTH_LAST /* never use, keep last */ -}; - -/* symbols to use with CURLOPT_POSTREDIR. - CURL_REDIR_POST_301, CURL_REDIR_POST_302 and CURL_REDIR_POST_303 - can be bitwise ORed so that CURL_REDIR_POST_301 | CURL_REDIR_POST_302 - | CURL_REDIR_POST_303 == CURL_REDIR_POST_ALL */ - -#define CURL_REDIR_GET_ALL 0 -#define CURL_REDIR_POST_301 1 -#define CURL_REDIR_POST_302 2 -#define CURL_REDIR_POST_303 4 -#define CURL_REDIR_POST_ALL \ - (CURL_REDIR_POST_301|CURL_REDIR_POST_302|CURL_REDIR_POST_303) - -typedef enum { - CURL_TIMECOND_NONE, - - CURL_TIMECOND_IFMODSINCE, - CURL_TIMECOND_IFUNMODSINCE, - CURL_TIMECOND_LASTMOD, - - CURL_TIMECOND_LAST -} curl_TimeCond; - -/* Special size_t value signaling a zero-terminated string. */ -#define CURL_ZERO_TERMINATED ((size_t) -1) - -/* curl_strequal() and curl_strnequal() are subject for removal in a future - release */ -CURL_EXTERN int curl_strequal(const char *s1, const char *s2); -CURL_EXTERN int curl_strnequal(const char *s1, const char *s2, size_t n); - -/* Mime/form handling support. */ -typedef struct curl_mime_s curl_mime; /* Mime context. */ -typedef struct curl_mimepart_s curl_mimepart; /* Mime part context. */ - -/* - * NAME curl_mime_init() - * - * DESCRIPTION - * - * Create a mime context and return its handle. The easy parameter is the - * target handle. - */ -CURL_EXTERN curl_mime *curl_mime_init(CURL *easy); - -/* - * NAME curl_mime_free() - * - * DESCRIPTION - * - * release a mime handle and its substructures. - */ -CURL_EXTERN void curl_mime_free(curl_mime *mime); - -/* - * NAME curl_mime_addpart() - * - * DESCRIPTION - * - * Append a new empty part to the given mime context and return a handle to - * the created part. - */ -CURL_EXTERN curl_mimepart *curl_mime_addpart(curl_mime *mime); - -/* - * NAME curl_mime_name() - * - * DESCRIPTION - * - * Set mime/form part name. - */ -CURL_EXTERN CURLcode curl_mime_name(curl_mimepart *part, const char *name); - -/* - * NAME curl_mime_filename() - * - * DESCRIPTION - * - * Set mime part remote file name. - */ -CURL_EXTERN CURLcode curl_mime_filename(curl_mimepart *part, - const char *filename); - -/* - * NAME curl_mime_type() - * - * DESCRIPTION - * - * Set mime part type. - */ -CURL_EXTERN CURLcode curl_mime_type(curl_mimepart *part, const char *mimetype); - -/* - * NAME curl_mime_encoder() - * - * DESCRIPTION - * - * Set mime data transfer encoder. - */ -CURL_EXTERN CURLcode curl_mime_encoder(curl_mimepart *part, - const char *encoding); - -/* - * NAME curl_mime_data() - * - * DESCRIPTION - * - * Set mime part data source from memory data, - */ -CURL_EXTERN CURLcode curl_mime_data(curl_mimepart *part, - const char *data, size_t datasize); - -/* - * NAME curl_mime_filedata() - * - * DESCRIPTION - * - * Set mime part data source from named file. - */ -CURL_EXTERN CURLcode curl_mime_filedata(curl_mimepart *part, - const char *filename); - -/* - * NAME curl_mime_data_cb() - * - * DESCRIPTION - * - * Set mime part data source from callback function. - */ -CURL_EXTERN CURLcode curl_mime_data_cb(curl_mimepart *part, - curl_off_t datasize, - curl_read_callback readfunc, - curl_seek_callback seekfunc, - curl_free_callback freefunc, - void *arg); - -/* - * NAME curl_mime_subparts() - * - * DESCRIPTION - * - * Set mime part data source from subparts. - */ -CURL_EXTERN CURLcode curl_mime_subparts(curl_mimepart *part, - curl_mime *subparts); -/* - * NAME curl_mime_headers() - * - * DESCRIPTION - * - * Set mime part headers. - */ -CURL_EXTERN CURLcode curl_mime_headers(curl_mimepart *part, - struct curl_slist *headers, - int take_ownership); - -/* Old form API. */ -/* name is uppercase CURLFORM_ */ -#ifdef CFINIT -#undef CFINIT -#endif - -#ifdef CURL_ISOCPP -#define CFINIT(name) CURLFORM_ ## name -#else -/* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */ -#define CFINIT(name) CURLFORM_/**/name -#endif - -typedef enum { - CFINIT(NOTHING), /********* the first one is unused ************/ - - /* */ - CFINIT(COPYNAME), - CFINIT(PTRNAME), - CFINIT(NAMELENGTH), - CFINIT(COPYCONTENTS), - CFINIT(PTRCONTENTS), - CFINIT(CONTENTSLENGTH), - CFINIT(FILECONTENT), - CFINIT(ARRAY), - CFINIT(OBSOLETE), - CFINIT(FILE), - - CFINIT(BUFFER), - CFINIT(BUFFERPTR), - CFINIT(BUFFERLENGTH), - - CFINIT(CONTENTTYPE), - CFINIT(CONTENTHEADER), - CFINIT(FILENAME), - CFINIT(END), - CFINIT(OBSOLETE2), - - CFINIT(STREAM), - CFINIT(CONTENTLEN), /* added in 7.46.0, provide a curl_off_t length */ - - CURLFORM_LASTENTRY /* the last unused */ -} CURLformoption; - -#undef CFINIT /* done */ - -/* structure to be used as parameter for CURLFORM_ARRAY */ -struct curl_forms { - CURLformoption option; - const char *value; -}; - -/* use this for multipart formpost building */ -/* Returns code for curl_formadd() - * - * Returns: - * CURL_FORMADD_OK on success - * CURL_FORMADD_MEMORY if the FormInfo allocation fails - * CURL_FORMADD_OPTION_TWICE if one option is given twice for one Form - * CURL_FORMADD_NULL if a null pointer was given for a char - * CURL_FORMADD_MEMORY if the allocation of a FormInfo struct failed - * CURL_FORMADD_UNKNOWN_OPTION if an unknown option was used - * CURL_FORMADD_INCOMPLETE if the some FormInfo is not complete (or error) - * CURL_FORMADD_MEMORY if a curl_httppost struct cannot be allocated - * CURL_FORMADD_MEMORY if some allocation for string copying failed. - * CURL_FORMADD_ILLEGAL_ARRAY if an illegal option is used in an array - * - ***************************************************************************/ -typedef enum { - CURL_FORMADD_OK, /* first, no error */ - - CURL_FORMADD_MEMORY, - CURL_FORMADD_OPTION_TWICE, - CURL_FORMADD_NULL, - CURL_FORMADD_UNKNOWN_OPTION, - CURL_FORMADD_INCOMPLETE, - CURL_FORMADD_ILLEGAL_ARRAY, - CURL_FORMADD_DISABLED, /* libcurl was built with this disabled */ - - CURL_FORMADD_LAST /* last */ -} CURLFORMcode; - -/* - * NAME curl_formadd() - * - * DESCRIPTION - * - * Pretty advanced function for building multi-part formposts. Each invoke - * adds one part that together construct a full post. Then use - * CURLOPT_HTTPPOST to send it off to libcurl. - */ -CURL_EXTERN CURLFORMcode curl_formadd(struct curl_httppost **httppost, - struct curl_httppost **last_post, - ...); - -/* - * callback function for curl_formget() - * The void *arg pointer will be the one passed as second argument to - * curl_formget(). - * The character buffer passed to it must not be freed. - * Should return the buffer length passed to it as the argument "len" on - * success. - */ -typedef size_t (*curl_formget_callback)(void *arg, const char *buf, - size_t len); - -/* - * NAME curl_formget() - * - * DESCRIPTION - * - * Serialize a curl_httppost struct built with curl_formadd(). - * Accepts a void pointer as second argument which will be passed to - * the curl_formget_callback function. - * Returns 0 on success. - */ -CURL_EXTERN int curl_formget(struct curl_httppost *form, void *arg, - curl_formget_callback append); -/* - * NAME curl_formfree() - * - * DESCRIPTION - * - * Free a multipart formpost previously built with curl_formadd(). - */ -CURL_EXTERN void curl_formfree(struct curl_httppost *form); - -/* - * NAME curl_getenv() - * - * DESCRIPTION - * - * Returns a malloc()'ed string that MUST be curl_free()ed after usage is - * complete. DEPRECATED - see lib/README.curlx - */ -CURL_EXTERN char *curl_getenv(const char *variable); - -/* - * NAME curl_version() - * - * DESCRIPTION - * - * Returns a static ascii string of the libcurl version. - */ -CURL_EXTERN char *curl_version(void); - -/* - * NAME curl_easy_escape() - * - * DESCRIPTION - * - * Escapes URL strings (converts all letters consider illegal in URLs to their - * %XX versions). This function returns a new allocated string or NULL if an - * error occurred. - */ -CURL_EXTERN char *curl_easy_escape(CURL *handle, - const char *string, - int length); - -/* the previous version: */ -CURL_EXTERN char *curl_escape(const char *string, - int length); - - -/* - * NAME curl_easy_unescape() - * - * DESCRIPTION - * - * Unescapes URL encoding in strings (converts all %XX codes to their 8bit - * versions). This function returns a new allocated string or NULL if an error - * occurred. - * Conversion Note: On non-ASCII platforms the ASCII %XX codes are - * converted into the host encoding. - */ -CURL_EXTERN char *curl_easy_unescape(CURL *handle, - const char *string, - int length, - int *outlength); - -/* the previous version */ -CURL_EXTERN char *curl_unescape(const char *string, - int length); - -/* - * NAME curl_free() - * - * DESCRIPTION - * - * Provided for de-allocation in the same translation unit that did the - * allocation. Added in libcurl 7.10 - */ -CURL_EXTERN void curl_free(void *p); - -/* - * NAME curl_global_init() - * - * DESCRIPTION - * - * curl_global_init() should be invoked exactly once for each application that - * uses libcurl and before any call of other libcurl functions. - * - * This function is not thread-safe! - */ -CURL_EXTERN CURLcode curl_global_init(long flags); - -/* - * NAME curl_global_init_mem() - * - * DESCRIPTION - * - * curl_global_init() or curl_global_init_mem() should be invoked exactly once - * for each application that uses libcurl. This function can be used to - * initialize libcurl and set user defined memory management callback - * functions. Users can implement memory management routines to check for - * memory leaks, check for mis-use of the curl library etc. User registered - * callback routines with be invoked by this library instead of the system - * memory management routines like malloc, free etc. - */ -CURL_EXTERN CURLcode curl_global_init_mem(long flags, - curl_malloc_callback m, - curl_free_callback f, - curl_realloc_callback r, - curl_strdup_callback s, - curl_calloc_callback c); - -/* - * NAME curl_global_cleanup() - * - * DESCRIPTION - * - * curl_global_cleanup() should be invoked exactly once for each application - * that uses libcurl - */ -CURL_EXTERN void curl_global_cleanup(void); - -/* linked-list structure for the CURLOPT_QUOTE option (and other) */ -struct curl_slist { - char *data; - struct curl_slist *next; -}; - -/* - * NAME curl_global_sslset() - * - * DESCRIPTION - * - * When built with multiple SSL backends, curl_global_sslset() allows to - * choose one. This function can only be called once, and it must be called - * *before* curl_global_init(). - * - * The backend can be identified by the id (e.g. CURLSSLBACKEND_OPENSSL). The - * backend can also be specified via the name parameter (passing -1 as id). - * If both id and name are specified, the name will be ignored. If neither id - * nor name are specified, the function will fail with - * CURLSSLSET_UNKNOWN_BACKEND and set the "avail" pointer to the - * NULL-terminated list of available backends. - * - * Upon success, the function returns CURLSSLSET_OK. - * - * If the specified SSL backend is not available, the function returns - * CURLSSLSET_UNKNOWN_BACKEND and sets the "avail" pointer to a NULL-terminated - * list of available SSL backends. - * - * The SSL backend can be set only once. If it has already been set, a - * subsequent attempt to change it will result in a CURLSSLSET_TOO_LATE. - */ - -typedef struct { - curl_sslbackend id; - const char *name; -} curl_ssl_backend; - -typedef enum { - CURLSSLSET_OK = 0, - CURLSSLSET_UNKNOWN_BACKEND, - CURLSSLSET_TOO_LATE, - CURLSSLSET_NO_BACKENDS /* libcurl was built without any SSL support */ -} CURLsslset; - -CURL_EXTERN CURLsslset curl_global_sslset(curl_sslbackend id, const char *name, - const curl_ssl_backend ***avail); - -/* - * NAME curl_slist_append() - * - * DESCRIPTION - * - * Appends a string to a linked list. If no list exists, it will be created - * first. Returns the new list, after appending. - */ -CURL_EXTERN struct curl_slist *curl_slist_append(struct curl_slist *, - const char *); - -/* - * NAME curl_slist_free_all() - * - * DESCRIPTION - * - * free a previously built curl_slist. - */ -CURL_EXTERN void curl_slist_free_all(struct curl_slist *); - -/* - * NAME curl_getdate() - * - * DESCRIPTION - * - * Returns the time, in seconds since 1 Jan 1970 of the time string given in - * the first argument. The time argument in the second parameter is unused - * and should be set to NULL. - */ -CURL_EXTERN time_t curl_getdate(const char *p, const time_t *unused); - -/* info about the certificate chain, only for OpenSSL builds. Asked - for with CURLOPT_CERTINFO / CURLINFO_CERTINFO */ -struct curl_certinfo { - int num_of_certs; /* number of certificates with information */ - struct curl_slist **certinfo; /* for each index in this array, there's a - linked list with textual information in the - format "name: value" */ -}; - -/* Information about the SSL library used and the respective internal SSL - handle, which can be used to obtain further information regarding the - connection. Asked for with CURLINFO_TLS_SSL_PTR or CURLINFO_TLS_SESSION. */ -struct curl_tlssessioninfo { - curl_sslbackend backend; - void *internals; -}; - -#define CURLINFO_STRING 0x100000 -#define CURLINFO_LONG 0x200000 -#define CURLINFO_DOUBLE 0x300000 -#define CURLINFO_SLIST 0x400000 -#define CURLINFO_PTR 0x400000 /* same as SLIST */ -#define CURLINFO_SOCKET 0x500000 -#define CURLINFO_OFF_T 0x600000 -#define CURLINFO_MASK 0x0fffff -#define CURLINFO_TYPEMASK 0xf00000 - -typedef enum { - CURLINFO_NONE, /* first, never use this */ - CURLINFO_EFFECTIVE_URL = CURLINFO_STRING + 1, - CURLINFO_RESPONSE_CODE = CURLINFO_LONG + 2, - CURLINFO_TOTAL_TIME = CURLINFO_DOUBLE + 3, - CURLINFO_NAMELOOKUP_TIME = CURLINFO_DOUBLE + 4, - CURLINFO_CONNECT_TIME = CURLINFO_DOUBLE + 5, - CURLINFO_PRETRANSFER_TIME = CURLINFO_DOUBLE + 6, - CURLINFO_SIZE_UPLOAD = CURLINFO_DOUBLE + 7, - CURLINFO_SIZE_UPLOAD_T = CURLINFO_OFF_T + 7, - CURLINFO_SIZE_DOWNLOAD = CURLINFO_DOUBLE + 8, - CURLINFO_SIZE_DOWNLOAD_T = CURLINFO_OFF_T + 8, - CURLINFO_SPEED_DOWNLOAD = CURLINFO_DOUBLE + 9, - CURLINFO_SPEED_DOWNLOAD_T = CURLINFO_OFF_T + 9, - CURLINFO_SPEED_UPLOAD = CURLINFO_DOUBLE + 10, - CURLINFO_SPEED_UPLOAD_T = CURLINFO_OFF_T + 10, - CURLINFO_HEADER_SIZE = CURLINFO_LONG + 11, - CURLINFO_REQUEST_SIZE = CURLINFO_LONG + 12, - CURLINFO_SSL_VERIFYRESULT = CURLINFO_LONG + 13, - CURLINFO_FILETIME = CURLINFO_LONG + 14, - CURLINFO_FILETIME_T = CURLINFO_OFF_T + 14, - CURLINFO_CONTENT_LENGTH_DOWNLOAD = CURLINFO_DOUBLE + 15, - CURLINFO_CONTENT_LENGTH_DOWNLOAD_T = CURLINFO_OFF_T + 15, - CURLINFO_CONTENT_LENGTH_UPLOAD = CURLINFO_DOUBLE + 16, - CURLINFO_CONTENT_LENGTH_UPLOAD_T = CURLINFO_OFF_T + 16, - CURLINFO_STARTTRANSFER_TIME = CURLINFO_DOUBLE + 17, - CURLINFO_CONTENT_TYPE = CURLINFO_STRING + 18, - CURLINFO_REDIRECT_TIME = CURLINFO_DOUBLE + 19, - CURLINFO_REDIRECT_COUNT = CURLINFO_LONG + 20, - CURLINFO_PRIVATE = CURLINFO_STRING + 21, - CURLINFO_HTTP_CONNECTCODE = CURLINFO_LONG + 22, - CURLINFO_HTTPAUTH_AVAIL = CURLINFO_LONG + 23, - CURLINFO_PROXYAUTH_AVAIL = CURLINFO_LONG + 24, - CURLINFO_OS_ERRNO = CURLINFO_LONG + 25, - CURLINFO_NUM_CONNECTS = CURLINFO_LONG + 26, - CURLINFO_SSL_ENGINES = CURLINFO_SLIST + 27, - CURLINFO_COOKIELIST = CURLINFO_SLIST + 28, - CURLINFO_LASTSOCKET = CURLINFO_LONG + 29, - CURLINFO_FTP_ENTRY_PATH = CURLINFO_STRING + 30, - CURLINFO_REDIRECT_URL = CURLINFO_STRING + 31, - CURLINFO_PRIMARY_IP = CURLINFO_STRING + 32, - CURLINFO_APPCONNECT_TIME = CURLINFO_DOUBLE + 33, - CURLINFO_CERTINFO = CURLINFO_PTR + 34, - CURLINFO_CONDITION_UNMET = CURLINFO_LONG + 35, - CURLINFO_RTSP_SESSION_ID = CURLINFO_STRING + 36, - CURLINFO_RTSP_CLIENT_CSEQ = CURLINFO_LONG + 37, - CURLINFO_RTSP_SERVER_CSEQ = CURLINFO_LONG + 38, - CURLINFO_RTSP_CSEQ_RECV = CURLINFO_LONG + 39, - CURLINFO_PRIMARY_PORT = CURLINFO_LONG + 40, - CURLINFO_LOCAL_IP = CURLINFO_STRING + 41, - CURLINFO_LOCAL_PORT = CURLINFO_LONG + 42, - CURLINFO_TLS_SESSION = CURLINFO_PTR + 43, - CURLINFO_ACTIVESOCKET = CURLINFO_SOCKET + 44, - CURLINFO_TLS_SSL_PTR = CURLINFO_PTR + 45, - CURLINFO_HTTP_VERSION = CURLINFO_LONG + 46, - CURLINFO_PROXY_SSL_VERIFYRESULT = CURLINFO_LONG + 47, - CURLINFO_PROTOCOL = CURLINFO_LONG + 48, - CURLINFO_SCHEME = CURLINFO_STRING + 49, - /* Fill in new entries below here! */ - - CURLINFO_LASTONE = 49 -} CURLINFO; - -/* CURLINFO_RESPONSE_CODE is the new name for the option previously known as - CURLINFO_HTTP_CODE */ -#define CURLINFO_HTTP_CODE CURLINFO_RESPONSE_CODE - -typedef enum { - CURLCLOSEPOLICY_NONE, /* first, never use this */ - - CURLCLOSEPOLICY_OLDEST, - CURLCLOSEPOLICY_LEAST_RECENTLY_USED, - CURLCLOSEPOLICY_LEAST_TRAFFIC, - CURLCLOSEPOLICY_SLOWEST, - CURLCLOSEPOLICY_CALLBACK, - - CURLCLOSEPOLICY_LAST /* last, never use this */ -} curl_closepolicy; - -#define CURL_GLOBAL_SSL (1<<0) /* no purpose since since 7.57.0 */ -#define CURL_GLOBAL_WIN32 (1<<1) -#define CURL_GLOBAL_ALL (CURL_GLOBAL_SSL|CURL_GLOBAL_WIN32) -#define CURL_GLOBAL_NOTHING 0 -#define CURL_GLOBAL_DEFAULT CURL_GLOBAL_ALL -#define CURL_GLOBAL_ACK_EINTR (1<<2) - - -/***************************************************************************** - * Setup defines, protos etc for the sharing stuff. - */ - -/* Different data locks for a single share */ -typedef enum { - CURL_LOCK_DATA_NONE = 0, - /* CURL_LOCK_DATA_SHARE is used internally to say that - * the locking is just made to change the internal state of the share - * itself. - */ - CURL_LOCK_DATA_SHARE, - CURL_LOCK_DATA_COOKIE, - CURL_LOCK_DATA_DNS, - CURL_LOCK_DATA_SSL_SESSION, - CURL_LOCK_DATA_CONNECT, - CURL_LOCK_DATA_LAST -} curl_lock_data; - -/* Different lock access types */ -typedef enum { - CURL_LOCK_ACCESS_NONE = 0, /* unspecified action */ - CURL_LOCK_ACCESS_SHARED = 1, /* for read perhaps */ - CURL_LOCK_ACCESS_SINGLE = 2, /* for write perhaps */ - CURL_LOCK_ACCESS_LAST /* never use */ -} curl_lock_access; - -typedef void (*curl_lock_function)(CURL *handle, - curl_lock_data data, - curl_lock_access locktype, - void *userptr); -typedef void (*curl_unlock_function)(CURL *handle, - curl_lock_data data, - void *userptr); - - -typedef enum { - CURLSHE_OK, /* all is fine */ - CURLSHE_BAD_OPTION, /* 1 */ - CURLSHE_IN_USE, /* 2 */ - CURLSHE_INVALID, /* 3 */ - CURLSHE_NOMEM, /* 4 out of memory */ - CURLSHE_NOT_BUILT_IN, /* 5 feature not present in lib */ - CURLSHE_LAST /* never use */ -} CURLSHcode; - -typedef enum { - CURLSHOPT_NONE, /* don't use */ - CURLSHOPT_SHARE, /* specify a data type to share */ - CURLSHOPT_UNSHARE, /* specify which data type to stop sharing */ - CURLSHOPT_LOCKFUNC, /* pass in a 'curl_lock_function' pointer */ - CURLSHOPT_UNLOCKFUNC, /* pass in a 'curl_unlock_function' pointer */ - CURLSHOPT_USERDATA, /* pass in a user data pointer used in the lock/unlock - callback functions */ - CURLSHOPT_LAST /* never use */ -} CURLSHoption; - -CURL_EXTERN CURLSH *curl_share_init(void); -CURL_EXTERN CURLSHcode curl_share_setopt(CURLSH *, CURLSHoption option, ...); -CURL_EXTERN CURLSHcode curl_share_cleanup(CURLSH *); - -/**************************************************************************** - * Structures for querying information about the curl library at runtime. - */ - -typedef enum { - CURLVERSION_FIRST, - CURLVERSION_SECOND, - CURLVERSION_THIRD, - CURLVERSION_FOURTH, - CURLVERSION_FIFTH, - CURLVERSION_LAST /* never actually use this */ -} CURLversion; - -/* The 'CURLVERSION_NOW' is the symbolic name meant to be used by - basically all programs ever that want to get version information. It is - meant to be a built-in version number for what kind of struct the caller - expects. If the struct ever changes, we redefine the NOW to another enum - from above. */ -#define CURLVERSION_NOW CURLVERSION_FIFTH - -typedef struct { - CURLversion age; /* age of the returned struct */ - const char *version; /* LIBCURL_VERSION */ - unsigned int version_num; /* LIBCURL_VERSION_NUM */ - const char *host; /* OS/host/cpu/machine when configured */ - int features; /* bitmask, see defines below */ - const char *ssl_version; /* human readable string */ - long ssl_version_num; /* not used anymore, always 0 */ - const char *libz_version; /* human readable string */ - /* protocols is terminated by an entry with a NULL protoname */ - const char * const *protocols; - - /* The fields below this were added in CURLVERSION_SECOND */ - const char *ares; - int ares_num; - - /* This field was added in CURLVERSION_THIRD */ - const char *libidn; - - /* These field were added in CURLVERSION_FOURTH */ - - /* Same as '_libiconv_version' if built with HAVE_ICONV */ - int iconv_ver_num; - - const char *libssh_version; /* human readable string */ - - /* These fields were added in CURLVERSION_FIFTH */ - - unsigned int brotli_ver_num; /* Numeric Brotli version - (MAJOR << 24) | (MINOR << 12) | PATCH */ - const char *brotli_version; /* human readable string. */ - -} curl_version_info_data; - -#define CURL_VERSION_IPV6 (1<<0) /* IPv6-enabled */ -#define CURL_VERSION_KERBEROS4 (1<<1) /* Kerberos V4 auth is supported - (deprecated) */ -#define CURL_VERSION_SSL (1<<2) /* SSL options are present */ -#define CURL_VERSION_LIBZ (1<<3) /* libz features are present */ -#define CURL_VERSION_NTLM (1<<4) /* NTLM auth is supported */ -#define CURL_VERSION_GSSNEGOTIATE (1<<5) /* Negotiate auth is supported - (deprecated) */ -#define CURL_VERSION_DEBUG (1<<6) /* Built with debug capabilities */ -#define CURL_VERSION_ASYNCHDNS (1<<7) /* Asynchronous DNS resolves */ -#define CURL_VERSION_SPNEGO (1<<8) /* SPNEGO auth is supported */ -#define CURL_VERSION_LARGEFILE (1<<9) /* Supports files larger than 2GB */ -#define CURL_VERSION_IDN (1<<10) /* Internationized Domain Names are - supported */ -#define CURL_VERSION_SSPI (1<<11) /* Built against Windows SSPI */ -#define CURL_VERSION_CONV (1<<12) /* Character conversions supported */ -#define CURL_VERSION_CURLDEBUG (1<<13) /* Debug memory tracking supported */ -#define CURL_VERSION_TLSAUTH_SRP (1<<14) /* TLS-SRP auth is supported */ -#define CURL_VERSION_NTLM_WB (1<<15) /* NTLM delegation to winbind helper - is supported */ -#define CURL_VERSION_HTTP2 (1<<16) /* HTTP2 support built-in */ -#define CURL_VERSION_GSSAPI (1<<17) /* Built against a GSS-API library */ -#define CURL_VERSION_KERBEROS5 (1<<18) /* Kerberos V5 auth is supported */ -#define CURL_VERSION_UNIX_SOCKETS (1<<19) /* Unix domain sockets support */ -#define CURL_VERSION_PSL (1<<20) /* Mozilla's Public Suffix List, used - for cookie domain verification */ -#define CURL_VERSION_HTTPS_PROXY (1<<21) /* HTTPS-proxy support built-in */ -#define CURL_VERSION_MULTI_SSL (1<<22) /* Multiple SSL backends available */ -#define CURL_VERSION_BROTLI (1<<23) /* Brotli features are present. */ - - /* - * NAME curl_version_info() - * - * DESCRIPTION - * - * This function returns a pointer to a static copy of the version info - * struct. See above. - */ -CURL_EXTERN curl_version_info_data *curl_version_info(CURLversion); - -/* - * NAME curl_easy_strerror() - * - * DESCRIPTION - * - * The curl_easy_strerror function may be used to turn a CURLcode value - * into the equivalent human readable error string. This is useful - * for printing meaningful error messages. - */ -CURL_EXTERN const char *curl_easy_strerror(CURLcode); - -/* - * NAME curl_share_strerror() - * - * DESCRIPTION - * - * The curl_share_strerror function may be used to turn a CURLSHcode value - * into the equivalent human readable error string. This is useful - * for printing meaningful error messages. - */ -CURL_EXTERN const char *curl_share_strerror(CURLSHcode); - -/* - * NAME curl_easy_pause() - * - * DESCRIPTION - * - * The curl_easy_pause function pauses or unpauses transfers. Select the new - * state by setting the bitmask, use the convenience defines below. - * - */ -CURL_EXTERN CURLcode curl_easy_pause(CURL *handle, int bitmask); - -#define CURLPAUSE_RECV (1<<0) -#define CURLPAUSE_RECV_CONT (0) - -#define CURLPAUSE_SEND (1<<2) -#define CURLPAUSE_SEND_CONT (0) - -#define CURLPAUSE_ALL (CURLPAUSE_RECV|CURLPAUSE_SEND) -#define CURLPAUSE_CONT (CURLPAUSE_RECV_CONT|CURLPAUSE_SEND_CONT) - -#ifdef __cplusplus -} -#endif - -/* unfortunately, the easy.h and multi.h include files need options and info - stuff before they can be included! */ -#include "easy.h" /* nothing in curl is fun without the easy stuff */ -#include "multi.h" - -/* the typechecker doesn't work in C++ (yet) */ -#if defined(__GNUC__) && defined(__GNUC_MINOR__) && \ - ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) && \ - !defined(__cplusplus) && !defined(CURL_DISABLE_TYPECHECK) -#include "typecheck-gcc.h" -#else -#if defined(__STDC__) && (__STDC__ >= 1) -/* This preprocessor magic that replaces a call with the exact same call is - only done to make sure application authors pass exactly three arguments - to these functions. */ -#define curl_easy_setopt(handle,opt,param) curl_easy_setopt(handle,opt,param) -#define curl_easy_getinfo(handle,info,arg) curl_easy_getinfo(handle,info,arg) -#define curl_share_setopt(share,opt,param) curl_share_setopt(share,opt,param) -#define curl_multi_setopt(handle,opt,param) curl_multi_setopt(handle,opt,param) -#endif /* __STDC__ >= 1 */ -#endif /* gcc >= 4.3 && !__cplusplus */ - -#endif /* __CURL_CURL_H */ diff --git a/cache/include/curl/curlver.h b/cache/include/curl/curlver.h deleted file mode 100644 index 225f935..0000000 --- a/cache/include/curl/curlver.h +++ /dev/null @@ -1,77 +0,0 @@ -#ifndef __CURL_CURLVER_H -#define __CURL_CURLVER_H -/*************************************************************************** - * _ _ ____ _ - * Project ___| | | | _ \| | - * / __| | | | |_) | | - * | (__| |_| | _ <| |___ - * \___|\___/|_| \_\_____| - * - * Copyright (C) 1998 - 2018, Daniel Stenberg, , et al. - * - * This software is licensed as described in the file COPYING, which - * you should have received as part of this distribution. The terms - * are also available at https://curl.haxx.se/docs/copyright.html. - * - * You may opt to use, copy, modify, merge, publish, distribute and/or sell - * copies of the Software, and permit persons to whom the Software is - * furnished to do so, under the terms of the COPYING file. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ***************************************************************************/ - -/* This header file contains nothing but libcurl version info, generated by - a script at release-time. This was made its own header file in 7.11.2 */ - -/* This is the global package copyright */ -#define LIBCURL_COPYRIGHT "1996 - 2018 Daniel Stenberg, ." - -/* This is the version number of the libcurl package from which this header - file origins: */ -#define LIBCURL_VERSION "7.59.0" - -/* The numeric version number is also available "in parts" by using these - defines: */ -#define LIBCURL_VERSION_MAJOR 7 -#define LIBCURL_VERSION_MINOR 59 -#define LIBCURL_VERSION_PATCH 0 - -/* This is the numeric version of the libcurl version number, meant for easier - parsing and comparions by programs. The LIBCURL_VERSION_NUM define will - always follow this syntax: - - 0xXXYYZZ - - Where XX, YY and ZZ are the main version, release and patch numbers in - hexadecimal (using 8 bits each). All three numbers are always represented - using two digits. 1.2 would appear as "0x010200" while version 9.11.7 - appears as "0x090b07". - - This 6-digit (24 bits) hexadecimal number does not show pre-release number, - and it is always a greater number in a more recent release. It makes - comparisons with greater than and less than work. - - Note: This define is the full hex number and _does not_ use the - CURL_VERSION_BITS() macro since curl's own configure script greps for it - and needs it to contain the full number. -*/ -#define LIBCURL_VERSION_NUM 0x073b00 - -/* - * This is the date and time when the full source package was created. The - * timestamp is not stored in git, as the timestamp is properly set in the - * tarballs by the maketgz script. - * - * The format of the date follows this template: - * - * "2007-11-23" - */ -#define LIBCURL_TIMESTAMP "2018-03-14" - -#define CURL_VERSION_BITS(x,y,z) ((x)<<16|(y)<<8|z) -#define CURL_AT_LEAST_VERSION(x,y,z) \ - (LIBCURL_VERSION_NUM >= CURL_VERSION_BITS(x, y, z)) - -#endif /* __CURL_CURLVER_H */ diff --git a/cache/include/curl/easy.h b/cache/include/curl/easy.h deleted file mode 100644 index 752c504..0000000 --- a/cache/include/curl/easy.h +++ /dev/null @@ -1,102 +0,0 @@ -#ifndef __CURL_EASY_H -#define __CURL_EASY_H -/*************************************************************************** - * _ _ ____ _ - * Project ___| | | | _ \| | - * / __| | | | |_) | | - * | (__| |_| | _ <| |___ - * \___|\___/|_| \_\_____| - * - * Copyright (C) 1998 - 2016, Daniel Stenberg, , et al. - * - * This software is licensed as described in the file COPYING, which - * you should have received as part of this distribution. The terms - * are also available at https://curl.haxx.se/docs/copyright.html. - * - * You may opt to use, copy, modify, merge, publish, distribute and/or sell - * copies of the Software, and permit persons to whom the Software is - * furnished to do so, under the terms of the COPYING file. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ***************************************************************************/ -#ifdef __cplusplus -extern "C" { -#endif - -CURL_EXTERN CURL *curl_easy_init(void); -CURL_EXTERN CURLcode curl_easy_setopt(CURL *curl, CURLoption option, ...); -CURL_EXTERN CURLcode curl_easy_perform(CURL *curl); -CURL_EXTERN void curl_easy_cleanup(CURL *curl); - -/* - * NAME curl_easy_getinfo() - * - * DESCRIPTION - * - * Request internal information from the curl session with this function. The - * third argument MUST be a pointer to a long, a pointer to a char * or a - * pointer to a double (as the documentation describes elsewhere). The data - * pointed to will be filled in accordingly and can be relied upon only if the - * function returns CURLE_OK. This function is intended to get used *AFTER* a - * performed transfer, all results from this function are undefined until the - * transfer is completed. - */ -CURL_EXTERN CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ...); - - -/* - * NAME curl_easy_duphandle() - * - * DESCRIPTION - * - * Creates a new curl session handle with the same options set for the handle - * passed in. Duplicating a handle could only be a matter of cloning data and - * options, internal state info and things like persistent connections cannot - * be transferred. It is useful in multithreaded applications when you can run - * curl_easy_duphandle() for each new thread to avoid a series of identical - * curl_easy_setopt() invokes in every thread. - */ -CURL_EXTERN CURL *curl_easy_duphandle(CURL *curl); - -/* - * NAME curl_easy_reset() - * - * DESCRIPTION - * - * Re-initializes a CURL handle to the default values. This puts back the - * handle to the same state as it was in when it was just created. - * - * It does keep: live connections, the Session ID cache, the DNS cache and the - * cookies. - */ -CURL_EXTERN void curl_easy_reset(CURL *curl); - -/* - * NAME curl_easy_recv() - * - * DESCRIPTION - * - * Receives data from the connected socket. Use after successful - * curl_easy_perform() with CURLOPT_CONNECT_ONLY option. - */ -CURL_EXTERN CURLcode curl_easy_recv(CURL *curl, void *buffer, size_t buflen, - size_t *n); - -/* - * NAME curl_easy_send() - * - * DESCRIPTION - * - * Sends data over the connected socket. Use after successful - * curl_easy_perform() with CURLOPT_CONNECT_ONLY option. - */ -CURL_EXTERN CURLcode curl_easy_send(CURL *curl, const void *buffer, - size_t buflen, size_t *n); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/cache/include/curl/mprintf.h b/cache/include/curl/mprintf.h deleted file mode 100644 index e20f546..0000000 --- a/cache/include/curl/mprintf.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef __CURL_MPRINTF_H -#define __CURL_MPRINTF_H -/*************************************************************************** - * _ _ ____ _ - * Project ___| | | | _ \| | - * / __| | | | |_) | | - * | (__| |_| | _ <| |___ - * \___|\___/|_| \_\_____| - * - * Copyright (C) 1998 - 2016, Daniel Stenberg, , et al. - * - * This software is licensed as described in the file COPYING, which - * you should have received as part of this distribution. The terms - * are also available at https://curl.haxx.se/docs/copyright.html. - * - * You may opt to use, copy, modify, merge, publish, distribute and/or sell - * copies of the Software, and permit persons to whom the Software is - * furnished to do so, under the terms of the COPYING file. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ***************************************************************************/ - -#include -#include /* needed for FILE */ -#include "curl.h" /* for CURL_EXTERN */ - -#ifdef __cplusplus -extern "C" { -#endif - -CURL_EXTERN int curl_mprintf(const char *format, ...); -CURL_EXTERN int curl_mfprintf(FILE *fd, const char *format, ...); -CURL_EXTERN int curl_msprintf(char *buffer, const char *format, ...); -CURL_EXTERN int curl_msnprintf(char *buffer, size_t maxlength, - const char *format, ...); -CURL_EXTERN int curl_mvprintf(const char *format, va_list args); -CURL_EXTERN int curl_mvfprintf(FILE *fd, const char *format, va_list args); -CURL_EXTERN int curl_mvsprintf(char *buffer, const char *format, va_list args); -CURL_EXTERN int curl_mvsnprintf(char *buffer, size_t maxlength, - const char *format, va_list args); -CURL_EXTERN char *curl_maprintf(const char *format, ...); -CURL_EXTERN char *curl_mvaprintf(const char *format, va_list args); - -#ifdef __cplusplus -} -#endif - -#endif /* __CURL_MPRINTF_H */ diff --git a/cache/include/curl/multi.h b/cache/include/curl/multi.h deleted file mode 100644 index b19dbaf..0000000 --- a/cache/include/curl/multi.h +++ /dev/null @@ -1,441 +0,0 @@ -#ifndef __CURL_MULTI_H -#define __CURL_MULTI_H -/*************************************************************************** - * _ _ ____ _ - * Project ___| | | | _ \| | - * / __| | | | |_) | | - * | (__| |_| | _ <| |___ - * \___|\___/|_| \_\_____| - * - * Copyright (C) 1998 - 2017, Daniel Stenberg, , et al. - * - * This software is licensed as described in the file COPYING, which - * you should have received as part of this distribution. The terms - * are also available at https://curl.haxx.se/docs/copyright.html. - * - * You may opt to use, copy, modify, merge, publish, distribute and/or sell - * copies of the Software, and permit persons to whom the Software is - * furnished to do so, under the terms of the COPYING file. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ***************************************************************************/ -/* - This is an "external" header file. Don't give away any internals here! - - GOALS - - o Enable a "pull" interface. The application that uses libcurl decides where - and when to ask libcurl to get/send data. - - o Enable multiple simultaneous transfers in the same thread without making it - complicated for the application. - - o Enable the application to select() on its own file descriptors and curl's - file descriptors simultaneous easily. - -*/ - -/* - * This header file should not really need to include "curl.h" since curl.h - * itself includes this file and we expect user applications to do #include - * without the need for especially including multi.h. - * - * For some reason we added this include here at one point, and rather than to - * break existing (wrongly written) libcurl applications, we leave it as-is - * but with this warning attached. - */ -#include "curl.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#if defined(BUILDING_LIBCURL) || defined(CURL_STRICTER) -typedef struct Curl_multi CURLM; -#else -typedef void CURLM; -#endif - -typedef enum { - CURLM_CALL_MULTI_PERFORM = -1, /* please call curl_multi_perform() or - curl_multi_socket*() soon */ - CURLM_OK, - CURLM_BAD_HANDLE, /* the passed-in handle is not a valid CURLM handle */ - CURLM_BAD_EASY_HANDLE, /* an easy handle was not good/valid */ - CURLM_OUT_OF_MEMORY, /* if you ever get this, you're in deep sh*t */ - CURLM_INTERNAL_ERROR, /* this is a libcurl bug */ - CURLM_BAD_SOCKET, /* the passed in socket argument did not match */ - CURLM_UNKNOWN_OPTION, /* curl_multi_setopt() with unsupported option */ - CURLM_ADDED_ALREADY, /* an easy handle already added to a multi handle was - attempted to get added - again */ - CURLM_RECURSIVE_API_CALL, /* an api function was called from inside a - callback */ - CURLM_LAST -} CURLMcode; - -/* just to make code nicer when using curl_multi_socket() you can now check - for CURLM_CALL_MULTI_SOCKET too in the same style it works for - curl_multi_perform() and CURLM_CALL_MULTI_PERFORM */ -#define CURLM_CALL_MULTI_SOCKET CURLM_CALL_MULTI_PERFORM - -/* bitmask bits for CURLMOPT_PIPELINING */ -#define CURLPIPE_NOTHING 0L -#define CURLPIPE_HTTP1 1L -#define CURLPIPE_MULTIPLEX 2L - -typedef enum { - CURLMSG_NONE, /* first, not used */ - CURLMSG_DONE, /* This easy handle has completed. 'result' contains - the CURLcode of the transfer */ - CURLMSG_LAST /* last, not used */ -} CURLMSG; - -struct CURLMsg { - CURLMSG msg; /* what this message means */ - CURL *easy_handle; /* the handle it concerns */ - union { - void *whatever; /* message-specific data */ - CURLcode result; /* return code for transfer */ - } data; -}; -typedef struct CURLMsg CURLMsg; - -/* Based on poll(2) structure and values. - * We don't use pollfd and POLL* constants explicitly - * to cover platforms without poll(). */ -#define CURL_WAIT_POLLIN 0x0001 -#define CURL_WAIT_POLLPRI 0x0002 -#define CURL_WAIT_POLLOUT 0x0004 - -struct curl_waitfd { - curl_socket_t fd; - short events; - short revents; /* not supported yet */ -}; - -/* - * Name: curl_multi_init() - * - * Desc: inititalize multi-style curl usage - * - * Returns: a new CURLM handle to use in all 'curl_multi' functions. - */ -CURL_EXTERN CURLM *curl_multi_init(void); - -/* - * Name: curl_multi_add_handle() - * - * Desc: add a standard curl handle to the multi stack - * - * Returns: CURLMcode type, general multi error code. - */ -CURL_EXTERN CURLMcode curl_multi_add_handle(CURLM *multi_handle, - CURL *curl_handle); - - /* - * Name: curl_multi_remove_handle() - * - * Desc: removes a curl handle from the multi stack again - * - * Returns: CURLMcode type, general multi error code. - */ -CURL_EXTERN CURLMcode curl_multi_remove_handle(CURLM *multi_handle, - CURL *curl_handle); - - /* - * Name: curl_multi_fdset() - * - * Desc: Ask curl for its fd_set sets. The app can use these to select() or - * poll() on. We want curl_multi_perform() called as soon as one of - * them are ready. - * - * Returns: CURLMcode type, general multi error code. - */ -CURL_EXTERN CURLMcode curl_multi_fdset(CURLM *multi_handle, - fd_set *read_fd_set, - fd_set *write_fd_set, - fd_set *exc_fd_set, - int *max_fd); - -/* - * Name: curl_multi_wait() - * - * Desc: Poll on all fds within a CURLM set as well as any - * additional fds passed to the function. - * - * Returns: CURLMcode type, general multi error code. - */ -CURL_EXTERN CURLMcode curl_multi_wait(CURLM *multi_handle, - struct curl_waitfd extra_fds[], - unsigned int extra_nfds, - int timeout_ms, - int *ret); - - /* - * Name: curl_multi_perform() - * - * Desc: When the app thinks there's data available for curl it calls this - * function to read/write whatever there is right now. This returns - * as soon as the reads and writes are done. This function does not - * require that there actually is data available for reading or that - * data can be written, it can be called just in case. It returns - * the number of handles that still transfer data in the second - * argument's integer-pointer. - * - * Returns: CURLMcode type, general multi error code. *NOTE* that this only - * returns errors etc regarding the whole multi stack. There might - * still have occurred problems on individual transfers even when - * this returns OK. - */ -CURL_EXTERN CURLMcode curl_multi_perform(CURLM *multi_handle, - int *running_handles); - - /* - * Name: curl_multi_cleanup() - * - * Desc: Cleans up and removes a whole multi stack. It does not free or - * touch any individual easy handles in any way. We need to define - * in what state those handles will be if this function is called - * in the middle of a transfer. - * - * Returns: CURLMcode type, general multi error code. - */ -CURL_EXTERN CURLMcode curl_multi_cleanup(CURLM *multi_handle); - -/* - * Name: curl_multi_info_read() - * - * Desc: Ask the multi handle if there's any messages/informationals from - * the individual transfers. Messages include informationals such as - * error code from the transfer or just the fact that a transfer is - * completed. More details on these should be written down as well. - * - * Repeated calls to this function will return a new struct each - * time, until a special "end of msgs" struct is returned as a signal - * that there is no more to get at this point. - * - * The data the returned pointer points to will not survive calling - * curl_multi_cleanup(). - * - * The 'CURLMsg' struct is meant to be very simple and only contain - * very basic information. If more involved information is wanted, - * we will provide the particular "transfer handle" in that struct - * and that should/could/would be used in subsequent - * curl_easy_getinfo() calls (or similar). The point being that we - * must never expose complex structs to applications, as then we'll - * undoubtably get backwards compatibility problems in the future. - * - * Returns: A pointer to a filled-in struct, or NULL if it failed or ran out - * of structs. It also writes the number of messages left in the - * queue (after this read) in the integer the second argument points - * to. - */ -CURL_EXTERN CURLMsg *curl_multi_info_read(CURLM *multi_handle, - int *msgs_in_queue); - -/* - * Name: curl_multi_strerror() - * - * Desc: The curl_multi_strerror function may be used to turn a CURLMcode - * value into the equivalent human readable error string. This is - * useful for printing meaningful error messages. - * - * Returns: A pointer to a zero-terminated error message. - */ -CURL_EXTERN const char *curl_multi_strerror(CURLMcode); - -/* - * Name: curl_multi_socket() and - * curl_multi_socket_all() - * - * Desc: An alternative version of curl_multi_perform() that allows the - * application to pass in one of the file descriptors that have been - * detected to have "action" on them and let libcurl perform. - * See man page for details. - */ -#define CURL_POLL_NONE 0 -#define CURL_POLL_IN 1 -#define CURL_POLL_OUT 2 -#define CURL_POLL_INOUT 3 -#define CURL_POLL_REMOVE 4 - -#define CURL_SOCKET_TIMEOUT CURL_SOCKET_BAD - -#define CURL_CSELECT_IN 0x01 -#define CURL_CSELECT_OUT 0x02 -#define CURL_CSELECT_ERR 0x04 - -typedef int (*curl_socket_callback)(CURL *easy, /* easy handle */ - curl_socket_t s, /* socket */ - int what, /* see above */ - void *userp, /* private callback - pointer */ - void *socketp); /* private socket - pointer */ -/* - * Name: curl_multi_timer_callback - * - * Desc: Called by libcurl whenever the library detects a change in the - * maximum number of milliseconds the app is allowed to wait before - * curl_multi_socket() or curl_multi_perform() must be called - * (to allow libcurl's timed events to take place). - * - * Returns: The callback should return zero. - */ -typedef int (*curl_multi_timer_callback)(CURLM *multi, /* multi handle */ - long timeout_ms, /* see above */ - void *userp); /* private callback - pointer */ - -CURL_EXTERN CURLMcode curl_multi_socket(CURLM *multi_handle, curl_socket_t s, - int *running_handles); - -CURL_EXTERN CURLMcode curl_multi_socket_action(CURLM *multi_handle, - curl_socket_t s, - int ev_bitmask, - int *running_handles); - -CURL_EXTERN CURLMcode curl_multi_socket_all(CURLM *multi_handle, - int *running_handles); - -#ifndef CURL_ALLOW_OLD_MULTI_SOCKET -/* This macro below was added in 7.16.3 to push users who recompile to use - the new curl_multi_socket_action() instead of the old curl_multi_socket() -*/ -#define curl_multi_socket(x,y,z) curl_multi_socket_action(x,y,0,z) -#endif - -/* - * Name: curl_multi_timeout() - * - * Desc: Returns the maximum number of milliseconds the app is allowed to - * wait before curl_multi_socket() or curl_multi_perform() must be - * called (to allow libcurl's timed events to take place). - * - * Returns: CURLM error code. - */ -CURL_EXTERN CURLMcode curl_multi_timeout(CURLM *multi_handle, - long *milliseconds); - -#undef CINIT /* re-using the same name as in curl.h */ - -#ifdef CURL_ISOCPP -#define CINIT(name,type,num) CURLMOPT_ ## name = CURLOPTTYPE_ ## type + num -#else -/* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */ -#define LONG CURLOPTTYPE_LONG -#define OBJECTPOINT CURLOPTTYPE_OBJECTPOINT -#define FUNCTIONPOINT CURLOPTTYPE_FUNCTIONPOINT -#define OFF_T CURLOPTTYPE_OFF_T -#define CINIT(name,type,number) CURLMOPT_/**/name = type + number -#endif - -typedef enum { - /* This is the socket callback function pointer */ - CINIT(SOCKETFUNCTION, FUNCTIONPOINT, 1), - - /* This is the argument passed to the socket callback */ - CINIT(SOCKETDATA, OBJECTPOINT, 2), - - /* set to 1 to enable pipelining for this multi handle */ - CINIT(PIPELINING, LONG, 3), - - /* This is the timer callback function pointer */ - CINIT(TIMERFUNCTION, FUNCTIONPOINT, 4), - - /* This is the argument passed to the timer callback */ - CINIT(TIMERDATA, OBJECTPOINT, 5), - - /* maximum number of entries in the connection cache */ - CINIT(MAXCONNECTS, LONG, 6), - - /* maximum number of (pipelining) connections to one host */ - CINIT(MAX_HOST_CONNECTIONS, LONG, 7), - - /* maximum number of requests in a pipeline */ - CINIT(MAX_PIPELINE_LENGTH, LONG, 8), - - /* a connection with a content-length longer than this - will not be considered for pipelining */ - CINIT(CONTENT_LENGTH_PENALTY_SIZE, OFF_T, 9), - - /* a connection with a chunk length longer than this - will not be considered for pipelining */ - CINIT(CHUNK_LENGTH_PENALTY_SIZE, OFF_T, 10), - - /* a list of site names(+port) that are blacklisted from - pipelining */ - CINIT(PIPELINING_SITE_BL, OBJECTPOINT, 11), - - /* a list of server types that are blacklisted from - pipelining */ - CINIT(PIPELINING_SERVER_BL, OBJECTPOINT, 12), - - /* maximum number of open connections in total */ - CINIT(MAX_TOTAL_CONNECTIONS, LONG, 13), - - /* This is the server push callback function pointer */ - CINIT(PUSHFUNCTION, FUNCTIONPOINT, 14), - - /* This is the argument passed to the server push callback */ - CINIT(PUSHDATA, OBJECTPOINT, 15), - - CURLMOPT_LASTENTRY /* the last unused */ -} CURLMoption; - - -/* - * Name: curl_multi_setopt() - * - * Desc: Sets options for the multi handle. - * - * Returns: CURLM error code. - */ -CURL_EXTERN CURLMcode curl_multi_setopt(CURLM *multi_handle, - CURLMoption option, ...); - - -/* - * Name: curl_multi_assign() - * - * Desc: This function sets an association in the multi handle between the - * given socket and a private pointer of the application. This is - * (only) useful for curl_multi_socket uses. - * - * Returns: CURLM error code. - */ -CURL_EXTERN CURLMcode curl_multi_assign(CURLM *multi_handle, - curl_socket_t sockfd, void *sockp); - - -/* - * Name: curl_push_callback - * - * Desc: This callback gets called when a new stream is being pushed by the - * server. It approves or denies the new stream. - * - * Returns: CURL_PUSH_OK or CURL_PUSH_DENY. - */ -#define CURL_PUSH_OK 0 -#define CURL_PUSH_DENY 1 - -struct curl_pushheaders; /* forward declaration only */ - -CURL_EXTERN char *curl_pushheader_bynum(struct curl_pushheaders *h, - size_t num); -CURL_EXTERN char *curl_pushheader_byname(struct curl_pushheaders *h, - const char *name); - -typedef int (*curl_push_callback)(CURL *parent, - CURL *easy, - size_t num_headers, - struct curl_pushheaders *headers, - void *userp); - -#ifdef __cplusplus -} /* end of extern "C" */ -#endif - -#endif diff --git a/cache/include/curl/stdcheaders.h b/cache/include/curl/stdcheaders.h deleted file mode 100644 index 027b6f4..0000000 --- a/cache/include/curl/stdcheaders.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef __STDC_HEADERS_H -#define __STDC_HEADERS_H -/*************************************************************************** - * _ _ ____ _ - * Project ___| | | | _ \| | - * / __| | | | |_) | | - * | (__| |_| | _ <| |___ - * \___|\___/|_| \_\_____| - * - * Copyright (C) 1998 - 2016, Daniel Stenberg, , et al. - * - * This software is licensed as described in the file COPYING, which - * you should have received as part of this distribution. The terms - * are also available at https://curl.haxx.se/docs/copyright.html. - * - * You may opt to use, copy, modify, merge, publish, distribute and/or sell - * copies of the Software, and permit persons to whom the Software is - * furnished to do so, under the terms of the COPYING file. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ***************************************************************************/ - -#include - -size_t fread(void *, size_t, size_t, FILE *); -size_t fwrite(const void *, size_t, size_t, FILE *); - -int strcasecmp(const char *, const char *); -int strncasecmp(const char *, const char *, size_t); - -#endif /* __STDC_HEADERS_H */ diff --git a/cache/include/curl/system.h b/cache/include/curl/system.h deleted file mode 100644 index 07bbd9c..0000000 --- a/cache/include/curl/system.h +++ /dev/null @@ -1,473 +0,0 @@ -#ifndef __CURL_SYSTEM_H -#define __CURL_SYSTEM_H -/*************************************************************************** - * _ _ ____ _ - * Project ___| | | | _ \| | - * / __| | | | |_) | | - * | (__| |_| | _ <| |___ - * \___|\___/|_| \_\_____| - * - * Copyright (C) 1998 - 2017, Daniel Stenberg, , et al. - * - * This software is licensed as described in the file COPYING, which - * you should have received as part of this distribution. The terms - * are also available at https://curl.haxx.se/docs/copyright.html. - * - * You may opt to use, copy, modify, merge, publish, distribute and/or sell - * copies of the Software, and permit persons to whom the Software is - * furnished to do so, under the terms of the COPYING file. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ***************************************************************************/ - -/* - * Try to keep one section per platform, compiler and architecture, otherwise, - * if an existing section is reused for a different one and later on the - * original is adjusted, probably the piggybacking one can be adversely - * changed. - * - * In order to differentiate between platforms/compilers/architectures use - * only compiler built in predefined preprocessor symbols. - * - * curl_off_t - * ---------- - * - * For any given platform/compiler curl_off_t must be typedef'ed to a 64-bit - * wide signed integral data type. The width of this data type must remain - * constant and independent of any possible large file support settings. - * - * As an exception to the above, curl_off_t shall be typedef'ed to a 32-bit - * wide signed integral data type if there is no 64-bit type. - * - * As a general rule, curl_off_t shall not be mapped to off_t. This rule shall - * only be violated if off_t is the only 64-bit data type available and the - * size of off_t is independent of large file support settings. Keep your - * build on the safe side avoiding an off_t gating. If you have a 64-bit - * off_t then take for sure that another 64-bit data type exists, dig deeper - * and you will find it. - * - */ - -#if defined(__DJGPP__) || defined(__GO32__) -# if defined(__DJGPP__) && (__DJGPP__ > 1) -# define CURL_TYPEOF_CURL_OFF_T long long -# define CURL_FORMAT_CURL_OFF_T "lld" -# define CURL_FORMAT_CURL_OFF_TU "llu" -# define CURL_SUFFIX_CURL_OFF_T LL -# define CURL_SUFFIX_CURL_OFF_TU ULL -# else -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# endif -# define CURL_TYPEOF_CURL_SOCKLEN_T int - -#elif defined(__SALFORDC__) -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# define CURL_TYPEOF_CURL_SOCKLEN_T int - -#elif defined(__BORLANDC__) -# if (__BORLANDC__ < 0x520) -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# else -# define CURL_TYPEOF_CURL_OFF_T __int64 -# define CURL_FORMAT_CURL_OFF_T "I64d" -# define CURL_FORMAT_CURL_OFF_TU "I64u" -# define CURL_SUFFIX_CURL_OFF_T i64 -# define CURL_SUFFIX_CURL_OFF_TU ui64 -# endif -# define CURL_TYPEOF_CURL_SOCKLEN_T int - -#elif defined(__TURBOC__) -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# define CURL_TYPEOF_CURL_SOCKLEN_T int - -#elif defined(__WATCOMC__) -# if defined(__386__) -# define CURL_TYPEOF_CURL_OFF_T __int64 -# define CURL_FORMAT_CURL_OFF_T "I64d" -# define CURL_FORMAT_CURL_OFF_TU "I64u" -# define CURL_SUFFIX_CURL_OFF_T i64 -# define CURL_SUFFIX_CURL_OFF_TU ui64 -# else -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# endif -# define CURL_TYPEOF_CURL_SOCKLEN_T int - -#elif defined(__POCC__) -# if (__POCC__ < 280) -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# elif defined(_MSC_VER) -# define CURL_TYPEOF_CURL_OFF_T __int64 -# define CURL_FORMAT_CURL_OFF_T "I64d" -# define CURL_FORMAT_CURL_OFF_TU "I64u" -# define CURL_SUFFIX_CURL_OFF_T i64 -# define CURL_SUFFIX_CURL_OFF_TU ui64 -# else -# define CURL_TYPEOF_CURL_OFF_T long long -# define CURL_FORMAT_CURL_OFF_T "lld" -# define CURL_FORMAT_CURL_OFF_TU "llu" -# define CURL_SUFFIX_CURL_OFF_T LL -# define CURL_SUFFIX_CURL_OFF_TU ULL -# endif -# define CURL_TYPEOF_CURL_SOCKLEN_T int - -#elif defined(__LCC__) -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# define CURL_TYPEOF_CURL_SOCKLEN_T int - -#elif defined(__SYMBIAN32__) -# if defined(__EABI__) /* Treat all ARM compilers equally */ -# define CURL_TYPEOF_CURL_OFF_T long long -# define CURL_FORMAT_CURL_OFF_T "lld" -# define CURL_FORMAT_CURL_OFF_TU "llu" -# define CURL_SUFFIX_CURL_OFF_T LL -# define CURL_SUFFIX_CURL_OFF_TU ULL -# elif defined(__CW32__) -# pragma longlong on -# define CURL_TYPEOF_CURL_OFF_T long long -# define CURL_FORMAT_CURL_OFF_T "lld" -# define CURL_FORMAT_CURL_OFF_TU "llu" -# define CURL_SUFFIX_CURL_OFF_T LL -# define CURL_SUFFIX_CURL_OFF_TU ULL -# elif defined(__VC32__) -# define CURL_TYPEOF_CURL_OFF_T __int64 -# define CURL_FORMAT_CURL_OFF_T "lld" -# define CURL_FORMAT_CURL_OFF_TU "llu" -# define CURL_SUFFIX_CURL_OFF_T LL -# define CURL_SUFFIX_CURL_OFF_TU ULL -# endif -# define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int - -#elif defined(__MWERKS__) -# define CURL_TYPEOF_CURL_OFF_T long long -# define CURL_FORMAT_CURL_OFF_T "lld" -# define CURL_FORMAT_CURL_OFF_TU "llu" -# define CURL_SUFFIX_CURL_OFF_T LL -# define CURL_SUFFIX_CURL_OFF_TU ULL -# define CURL_TYPEOF_CURL_SOCKLEN_T int - -#elif defined(_WIN32_WCE) -# define CURL_TYPEOF_CURL_OFF_T __int64 -# define CURL_FORMAT_CURL_OFF_T "I64d" -# define CURL_FORMAT_CURL_OFF_TU "I64u" -# define CURL_SUFFIX_CURL_OFF_T i64 -# define CURL_SUFFIX_CURL_OFF_TU ui64 -# define CURL_TYPEOF_CURL_SOCKLEN_T int - -#elif defined(__MINGW32__) -# define CURL_TYPEOF_CURL_OFF_T long long -# define CURL_FORMAT_CURL_OFF_T "I64d" -# define CURL_FORMAT_CURL_OFF_TU "I64u" -# define CURL_SUFFIX_CURL_OFF_T LL -# define CURL_SUFFIX_CURL_OFF_TU ULL -# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t -# define CURL_PULL_SYS_TYPES_H 1 -# define CURL_PULL_WS2TCPIP_H 1 - -#elif defined(__VMS) -# if defined(__VAX) -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# else -# define CURL_TYPEOF_CURL_OFF_T long long -# define CURL_FORMAT_CURL_OFF_T "lld" -# define CURL_FORMAT_CURL_OFF_TU "llu" -# define CURL_SUFFIX_CURL_OFF_T LL -# define CURL_SUFFIX_CURL_OFF_TU ULL -# endif -# define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int - -#elif defined(__OS400__) -# if defined(__ILEC400__) -# define CURL_TYPEOF_CURL_OFF_T long long -# define CURL_FORMAT_CURL_OFF_T "lld" -# define CURL_FORMAT_CURL_OFF_TU "llu" -# define CURL_SUFFIX_CURL_OFF_T LL -# define CURL_SUFFIX_CURL_OFF_TU ULL -# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t -# define CURL_PULL_SYS_TYPES_H 1 -# define CURL_PULL_SYS_SOCKET_H 1 -# endif - -#elif defined(__MVS__) -# if defined(__IBMC__) || defined(__IBMCPP__) -# if defined(_ILP32) -# elif defined(_LP64) -# endif -# if defined(_LONG_LONG) -# define CURL_TYPEOF_CURL_OFF_T long long -# define CURL_FORMAT_CURL_OFF_T "lld" -# define CURL_FORMAT_CURL_OFF_TU "llu" -# define CURL_SUFFIX_CURL_OFF_T LL -# define CURL_SUFFIX_CURL_OFF_TU ULL -# elif defined(_LP64) -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# else -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# endif -# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t -# define CURL_PULL_SYS_TYPES_H 1 -# define CURL_PULL_SYS_SOCKET_H 1 -# endif - -#elif defined(__370__) -# if defined(__IBMC__) || defined(__IBMCPP__) -# if defined(_ILP32) -# elif defined(_LP64) -# endif -# if defined(_LONG_LONG) -# define CURL_TYPEOF_CURL_OFF_T long long -# define CURL_FORMAT_CURL_OFF_T "lld" -# define CURL_FORMAT_CURL_OFF_TU "llu" -# define CURL_SUFFIX_CURL_OFF_T LL -# define CURL_SUFFIX_CURL_OFF_TU ULL -# elif defined(_LP64) -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# else -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# endif -# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t -# define CURL_PULL_SYS_TYPES_H 1 -# define CURL_PULL_SYS_SOCKET_H 1 -# endif - -#elif defined(TPF) -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# define CURL_TYPEOF_CURL_SOCKLEN_T int - -#elif defined(__TINYC__) /* also known as tcc */ - -# define CURL_TYPEOF_CURL_OFF_T long long -# define CURL_FORMAT_CURL_OFF_T "lld" -# define CURL_FORMAT_CURL_OFF_TU "llu" -# define CURL_SUFFIX_CURL_OFF_T LL -# define CURL_SUFFIX_CURL_OFF_TU ULL -# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t -# define CURL_PULL_SYS_TYPES_H 1 -# define CURL_PULL_SYS_SOCKET_H 1 - -#elif defined(__SUNPRO_C) /* Oracle Solaris Studio */ -# if !defined(__LP64) && (defined(__ILP32) || \ - defined(__i386) || defined(__sparcv8)) -# define CURL_TYPEOF_CURL_OFF_T long long -# define CURL_FORMAT_CURL_OFF_T "lld" -# define CURL_FORMAT_CURL_OFF_TU "llu" -# define CURL_SUFFIX_CURL_OFF_T LL -# define CURL_SUFFIX_CURL_OFF_TU ULL -# elif defined(__LP64) || \ - defined(__amd64) || defined(__sparcv9) -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# endif -# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t -# define CURL_PULL_SYS_TYPES_H 1 -# define CURL_PULL_SYS_SOCKET_H 1 - -/* ===================================== */ -/* KEEP MSVC THE PENULTIMATE ENTRY */ -/* ===================================== */ - -#elif defined(_MSC_VER) -# if (_MSC_VER >= 900) && (_INTEGRAL_MAX_BITS >= 64) -# define CURL_TYPEOF_CURL_OFF_T __int64 -# define CURL_FORMAT_CURL_OFF_T "I64d" -# define CURL_FORMAT_CURL_OFF_TU "I64u" -# define CURL_SUFFIX_CURL_OFF_T i64 -# define CURL_SUFFIX_CURL_OFF_TU ui64 -# else -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# endif -# define CURL_TYPEOF_CURL_SOCKLEN_T int - -/* ===================================== */ -/* KEEP GENERIC GCC THE LAST ENTRY */ -/* ===================================== */ - -#elif defined(__GNUC__) -# if !defined(__LP64__) && \ - (defined(__ILP32__) || defined(__i386__) || defined(__hppa__) || \ - defined(__ppc__) || defined(__powerpc__) || defined(__arm__) || \ - defined(__sparc__) || defined(__mips__) || defined(__sh__) || \ - defined(__XTENSA__) || \ - (defined(__SIZEOF_LONG__) && __SIZEOF_LONG__ == 4) || \ - (defined(__LONG_MAX__) && __LONG_MAX__ == 2147483647L)) -# define CURL_TYPEOF_CURL_OFF_T long long -# define CURL_FORMAT_CURL_OFF_T "lld" -# define CURL_FORMAT_CURL_OFF_TU "llu" -# define CURL_SUFFIX_CURL_OFF_T LL -# define CURL_SUFFIX_CURL_OFF_TU ULL -# elif defined(__LP64__) || \ - defined(__x86_64__) || defined(__ppc64__) || defined(__sparc64__) || \ - (defined(__SIZEOF_LONG__) && __SIZEOF_LONG__ == 8) || \ - (defined(__LONG_MAX__) && __LONG_MAX__ == 9223372036854775807L) -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# endif -# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t -# define CURL_PULL_SYS_TYPES_H 1 -# define CURL_PULL_SYS_SOCKET_H 1 - -#else -/* generic "safe guess" on old 32 bit style */ -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# define CURL_TYPEOF_CURL_SOCKLEN_T int -#endif - -#ifdef _AIX -/* AIX needs */ -#define CURL_PULL_SYS_POLL_H -#endif - - -/* CURL_PULL_WS2TCPIP_H is defined above when inclusion of header file */ -/* ws2tcpip.h is required here to properly make type definitions below. */ -#ifdef CURL_PULL_WS2TCPIP_H -# include -# include -# include -#endif - -/* CURL_PULL_SYS_TYPES_H is defined above when inclusion of header file */ -/* sys/types.h is required here to properly make type definitions below. */ -#ifdef CURL_PULL_SYS_TYPES_H -# include -#endif - -/* CURL_PULL_SYS_SOCKET_H is defined above when inclusion of header file */ -/* sys/socket.h is required here to properly make type definitions below. */ -#ifdef CURL_PULL_SYS_SOCKET_H -# include -#endif - -/* CURL_PULL_SYS_POLL_H is defined above when inclusion of header file */ -/* sys/poll.h is required here to properly make type definitions below. */ -#ifdef CURL_PULL_SYS_POLL_H -# include -#endif - -/* Data type definition of curl_socklen_t. */ -#ifdef CURL_TYPEOF_CURL_SOCKLEN_T - typedef CURL_TYPEOF_CURL_SOCKLEN_T curl_socklen_t; -#endif - -/* Data type definition of curl_off_t. */ - -#ifdef CURL_TYPEOF_CURL_OFF_T - typedef CURL_TYPEOF_CURL_OFF_T curl_off_t; -#endif - -/* - * CURL_ISOCPP and CURL_OFF_T_C definitions are done here in order to allow - * these to be visible and exported by the external libcurl interface API, - * while also making them visible to the library internals, simply including - * curl_setup.h, without actually needing to include curl.h internally. - * If some day this section would grow big enough, all this should be moved - * to its own header file. - */ - -/* - * Figure out if we can use the ## preprocessor operator, which is supported - * by ISO/ANSI C and C++. Some compilers support it without setting __STDC__ - * or __cplusplus so we need to carefully check for them too. - */ - -#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) || \ - defined(__HP_aCC) || defined(__BORLANDC__) || defined(__LCC__) || \ - defined(__POCC__) || defined(__SALFORDC__) || defined(__HIGHC__) || \ - defined(__ILEC400__) - /* This compiler is believed to have an ISO compatible preprocessor */ -#define CURL_ISOCPP -#else - /* This compiler is believed NOT to have an ISO compatible preprocessor */ -#undef CURL_ISOCPP -#endif - -/* - * Macros for minimum-width signed and unsigned curl_off_t integer constants. - */ - -#if defined(__BORLANDC__) && (__BORLANDC__ == 0x0551) -# define __CURL_OFF_T_C_HLPR2(x) x -# define __CURL_OFF_T_C_HLPR1(x) __CURL_OFF_T_C_HLPR2(x) -# define CURL_OFF_T_C(Val) __CURL_OFF_T_C_HLPR1(Val) ## \ - __CURL_OFF_T_C_HLPR1(CURL_SUFFIX_CURL_OFF_T) -# define CURL_OFF_TU_C(Val) __CURL_OFF_T_C_HLPR1(Val) ## \ - __CURL_OFF_T_C_HLPR1(CURL_SUFFIX_CURL_OFF_TU) -#else -# ifdef CURL_ISOCPP -# define __CURL_OFF_T_C_HLPR2(Val,Suffix) Val ## Suffix -# else -# define __CURL_OFF_T_C_HLPR2(Val,Suffix) Val/**/Suffix -# endif -# define __CURL_OFF_T_C_HLPR1(Val,Suffix) __CURL_OFF_T_C_HLPR2(Val,Suffix) -# define CURL_OFF_T_C(Val) __CURL_OFF_T_C_HLPR1(Val,CURL_SUFFIX_CURL_OFF_T) -# define CURL_OFF_TU_C(Val) __CURL_OFF_T_C_HLPR1(Val,CURL_SUFFIX_CURL_OFF_TU) -#endif - -#endif /* __CURL_SYSTEM_H */ diff --git a/cache/include/curl/typecheck-gcc.h b/cache/include/curl/typecheck-gcc.h deleted file mode 100644 index 3a0f253..0000000 --- a/cache/include/curl/typecheck-gcc.h +++ /dev/null @@ -1,696 +0,0 @@ -#ifndef __CURL_TYPECHECK_GCC_H -#define __CURL_TYPECHECK_GCC_H -/*************************************************************************** - * _ _ ____ _ - * Project ___| | | | _ \| | - * / __| | | | |_) | | - * | (__| |_| | _ <| |___ - * \___|\___/|_| \_\_____| - * - * Copyright (C) 1998 - 2017, Daniel Stenberg, , et al. - * - * This software is licensed as described in the file COPYING, which - * you should have received as part of this distribution. The terms - * are also available at https://curl.haxx.se/docs/copyright.html. - * - * You may opt to use, copy, modify, merge, publish, distribute and/or sell - * copies of the Software, and permit persons to whom the Software is - * furnished to do so, under the terms of the COPYING file. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ***************************************************************************/ - -/* wraps curl_easy_setopt() with typechecking */ - -/* To add a new kind of warning, add an - * if(_curl_is_sometype_option(_curl_opt)) - * if(!_curl_is_sometype(value)) - * _curl_easy_setopt_err_sometype(); - * block and define _curl_is_sometype_option, _curl_is_sometype and - * _curl_easy_setopt_err_sometype below - * - * NOTE: We use two nested 'if' statements here instead of the && operator, in - * order to work around gcc bug #32061. It affects only gcc 4.3.x/4.4.x - * when compiling with -Wlogical-op. - * - * To add an option that uses the same type as an existing option, you'll just - * need to extend the appropriate _curl_*_option macro - */ -#define curl_easy_setopt(handle, option, value) \ -__extension__ ({ \ - __typeof__(option) _curl_opt = option; \ - if(__builtin_constant_p(_curl_opt)) { \ - if(_curl_is_long_option(_curl_opt)) \ - if(!_curl_is_long(value)) \ - _curl_easy_setopt_err_long(); \ - if(_curl_is_off_t_option(_curl_opt)) \ - if(!_curl_is_off_t(value)) \ - _curl_easy_setopt_err_curl_off_t(); \ - if(_curl_is_string_option(_curl_opt)) \ - if(!_curl_is_string(value)) \ - _curl_easy_setopt_err_string(); \ - if(_curl_is_write_cb_option(_curl_opt)) \ - if(!_curl_is_write_cb(value)) \ - _curl_easy_setopt_err_write_callback(); \ - if((_curl_opt) == CURLOPT_RESOLVER_START_FUNCTION) \ - if(!_curl_is_resolver_start_callback(value)) \ - _curl_easy_setopt_err_resolver_start_callback(); \ - if((_curl_opt) == CURLOPT_READFUNCTION) \ - if(!_curl_is_read_cb(value)) \ - _curl_easy_setopt_err_read_cb(); \ - if((_curl_opt) == CURLOPT_IOCTLFUNCTION) \ - if(!_curl_is_ioctl_cb(value)) \ - _curl_easy_setopt_err_ioctl_cb(); \ - if((_curl_opt) == CURLOPT_SOCKOPTFUNCTION) \ - if(!_curl_is_sockopt_cb(value)) \ - _curl_easy_setopt_err_sockopt_cb(); \ - if((_curl_opt) == CURLOPT_OPENSOCKETFUNCTION) \ - if(!_curl_is_opensocket_cb(value)) \ - _curl_easy_setopt_err_opensocket_cb(); \ - if((_curl_opt) == CURLOPT_PROGRESSFUNCTION) \ - if(!_curl_is_progress_cb(value)) \ - _curl_easy_setopt_err_progress_cb(); \ - if((_curl_opt) == CURLOPT_DEBUGFUNCTION) \ - if(!_curl_is_debug_cb(value)) \ - _curl_easy_setopt_err_debug_cb(); \ - if((_curl_opt) == CURLOPT_SSL_CTX_FUNCTION) \ - if(!_curl_is_ssl_ctx_cb(value)) \ - _curl_easy_setopt_err_ssl_ctx_cb(); \ - if(_curl_is_conv_cb_option(_curl_opt)) \ - if(!_curl_is_conv_cb(value)) \ - _curl_easy_setopt_err_conv_cb(); \ - if((_curl_opt) == CURLOPT_SEEKFUNCTION) \ - if(!_curl_is_seek_cb(value)) \ - _curl_easy_setopt_err_seek_cb(); \ - if(_curl_is_cb_data_option(_curl_opt)) \ - if(!_curl_is_cb_data(value)) \ - _curl_easy_setopt_err_cb_data(); \ - if((_curl_opt) == CURLOPT_ERRORBUFFER) \ - if(!_curl_is_error_buffer(value)) \ - _curl_easy_setopt_err_error_buffer(); \ - if((_curl_opt) == CURLOPT_STDERR) \ - if(!_curl_is_FILE(value)) \ - _curl_easy_setopt_err_FILE(); \ - if(_curl_is_postfields_option(_curl_opt)) \ - if(!_curl_is_postfields(value)) \ - _curl_easy_setopt_err_postfields(); \ - if((_curl_opt) == CURLOPT_HTTPPOST) \ - if(!_curl_is_arr((value), struct curl_httppost)) \ - _curl_easy_setopt_err_curl_httpost(); \ - if((_curl_opt) == CURLOPT_MIMEPOST) \ - if(!_curl_is_ptr((value), curl_mime)) \ - _curl_easy_setopt_err_curl_mimepost(); \ - if(_curl_is_slist_option(_curl_opt)) \ - if(!_curl_is_arr((value), struct curl_slist)) \ - _curl_easy_setopt_err_curl_slist(); \ - if((_curl_opt) == CURLOPT_SHARE) \ - if(!_curl_is_ptr((value), CURLSH)) \ - _curl_easy_setopt_err_CURLSH(); \ - } \ - curl_easy_setopt(handle, _curl_opt, value); \ -}) - -/* wraps curl_easy_getinfo() with typechecking */ -/* FIXME: don't allow const pointers */ -#define curl_easy_getinfo(handle, info, arg) \ -__extension__ ({ \ - __typeof__(info) _curl_info = info; \ - if(__builtin_constant_p(_curl_info)) { \ - if(_curl_is_string_info(_curl_info)) \ - if(!_curl_is_arr((arg), char *)) \ - _curl_easy_getinfo_err_string(); \ - if(_curl_is_long_info(_curl_info)) \ - if(!_curl_is_arr((arg), long)) \ - _curl_easy_getinfo_err_long(); \ - if(_curl_is_double_info(_curl_info)) \ - if(!_curl_is_arr((arg), double)) \ - _curl_easy_getinfo_err_double(); \ - if(_curl_is_slist_info(_curl_info)) \ - if(!_curl_is_arr((arg), struct curl_slist *)) \ - _curl_easy_getinfo_err_curl_slist(); \ - if(_curl_is_tlssessioninfo_info(_curl_info)) \ - if(!_curl_is_arr((arg), struct curl_tlssessioninfo *)) \ - _curl_easy_getinfo_err_curl_tlssesssioninfo(); \ - if(_curl_is_certinfo_info(_curl_info)) \ - if(!_curl_is_arr((arg), struct curl_certinfo *)) \ - _curl_easy_getinfo_err_curl_certinfo(); \ - if(_curl_is_socket_info(_curl_info)) \ - if(!_curl_is_arr((arg), curl_socket_t)) \ - _curl_easy_getinfo_err_curl_socket(); \ - if(_curl_is_off_t_info(_curl_info)) \ - if(!_curl_is_arr((arg), curl_off_t)) \ - _curl_easy_getinfo_err_curl_off_t(); \ - } \ - curl_easy_getinfo(handle, _curl_info, arg); \ -}) - -/* TODO: typechecking for curl_share_setopt() and curl_multi_setopt(), - * for now just make sure that the functions are called with three - * arguments - */ -#define curl_share_setopt(share,opt,param) curl_share_setopt(share,opt,param) -#define curl_multi_setopt(handle,opt,param) curl_multi_setopt(handle,opt,param) - - -/* the actual warnings, triggered by calling the _curl_easy_setopt_err* - * functions */ - -/* To define a new warning, use _CURL_WARNING(identifier, "message") */ -#define _CURL_WARNING(id, message) \ - static void __attribute__((__warning__(message))) \ - __attribute__((__unused__)) __attribute__((__noinline__)) \ - id(void) { __asm__(""); } - -_CURL_WARNING(_curl_easy_setopt_err_long, - "curl_easy_setopt expects a long argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_curl_off_t, - "curl_easy_setopt expects a curl_off_t argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_string, - "curl_easy_setopt expects a " - "string ('char *' or char[]) argument for this option" - ) -_CURL_WARNING(_curl_easy_setopt_err_write_callback, - "curl_easy_setopt expects a curl_write_callback argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_resolver_start_callback, - "curl_easy_setopt expects a " - "curl_resolver_start_callback argument for this option" - ) -_CURL_WARNING(_curl_easy_setopt_err_read_cb, - "curl_easy_setopt expects a curl_read_callback argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_ioctl_cb, - "curl_easy_setopt expects a curl_ioctl_callback argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_sockopt_cb, - "curl_easy_setopt expects a curl_sockopt_callback argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_opensocket_cb, - "curl_easy_setopt expects a " - "curl_opensocket_callback argument for this option" - ) -_CURL_WARNING(_curl_easy_setopt_err_progress_cb, - "curl_easy_setopt expects a curl_progress_callback argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_debug_cb, - "curl_easy_setopt expects a curl_debug_callback argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_ssl_ctx_cb, - "curl_easy_setopt expects a curl_ssl_ctx_callback argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_conv_cb, - "curl_easy_setopt expects a curl_conv_callback argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_seek_cb, - "curl_easy_setopt expects a curl_seek_callback argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_cb_data, - "curl_easy_setopt expects a " - "private data pointer as argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_error_buffer, - "curl_easy_setopt expects a " - "char buffer of CURL_ERROR_SIZE as argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_FILE, - "curl_easy_setopt expects a 'FILE *' argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_postfields, - "curl_easy_setopt expects a 'void *' or 'char *' argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_curl_httpost, - "curl_easy_setopt expects a 'struct curl_httppost *' " - "argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_curl_mimepost, - "curl_easy_setopt expects a 'curl_mime *' " - "argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_curl_slist, - "curl_easy_setopt expects a 'struct curl_slist *' argument for this option") -_CURL_WARNING(_curl_easy_setopt_err_CURLSH, - "curl_easy_setopt expects a CURLSH* argument for this option") - -_CURL_WARNING(_curl_easy_getinfo_err_string, - "curl_easy_getinfo expects a pointer to 'char *' for this info") -_CURL_WARNING(_curl_easy_getinfo_err_long, - "curl_easy_getinfo expects a pointer to long for this info") -_CURL_WARNING(_curl_easy_getinfo_err_double, - "curl_easy_getinfo expects a pointer to double for this info") -_CURL_WARNING(_curl_easy_getinfo_err_curl_slist, - "curl_easy_getinfo expects a pointer to 'struct curl_slist *' for this info") -_CURL_WARNING(_curl_easy_getinfo_err_curl_tlssesssioninfo, - "curl_easy_getinfo expects a pointer to " - "'struct curl_tlssessioninfo *' for this info") -_CURL_WARNING(_curl_easy_getinfo_err_curl_certinfo, - "curl_easy_getinfo expects a pointer to " - "'struct curl_certinfo *' for this info") -_CURL_WARNING(_curl_easy_getinfo_err_curl_socket, - "curl_easy_getinfo expects a pointer to curl_socket_t for this info") -_CURL_WARNING(_curl_easy_getinfo_err_curl_off_t, - "curl_easy_getinfo expects a pointer to curl_off_t for this info") - -/* groups of curl_easy_setops options that take the same type of argument */ - -/* To add a new option to one of the groups, just add - * (option) == CURLOPT_SOMETHING - * to the or-expression. If the option takes a long or curl_off_t, you don't - * have to do anything - */ - -/* evaluates to true if option takes a long argument */ -#define _curl_is_long_option(option) \ - (0 < (option) && (option) < CURLOPTTYPE_OBJECTPOINT) - -#define _curl_is_off_t_option(option) \ - ((option) > CURLOPTTYPE_OFF_T) - -/* evaluates to true if option takes a char* argument */ -#define _curl_is_string_option(option) \ - ((option) == CURLOPT_ABSTRACT_UNIX_SOCKET || \ - (option) == CURLOPT_ACCEPT_ENCODING || \ - (option) == CURLOPT_CAINFO || \ - (option) == CURLOPT_CAPATH || \ - (option) == CURLOPT_COOKIE || \ - (option) == CURLOPT_COOKIEFILE || \ - (option) == CURLOPT_COOKIEJAR || \ - (option) == CURLOPT_COOKIELIST || \ - (option) == CURLOPT_CRLFILE || \ - (option) == CURLOPT_CUSTOMREQUEST || \ - (option) == CURLOPT_DEFAULT_PROTOCOL || \ - (option) == CURLOPT_DNS_INTERFACE || \ - (option) == CURLOPT_DNS_LOCAL_IP4 || \ - (option) == CURLOPT_DNS_LOCAL_IP6 || \ - (option) == CURLOPT_DNS_SERVERS || \ - (option) == CURLOPT_EGDSOCKET || \ - (option) == CURLOPT_FTPPORT || \ - (option) == CURLOPT_FTP_ACCOUNT || \ - (option) == CURLOPT_FTP_ALTERNATIVE_TO_USER || \ - (option) == CURLOPT_INTERFACE || \ - (option) == CURLOPT_ISSUERCERT || \ - (option) == CURLOPT_KEYPASSWD || \ - (option) == CURLOPT_KRBLEVEL || \ - (option) == CURLOPT_LOGIN_OPTIONS || \ - (option) == CURLOPT_MAIL_AUTH || \ - (option) == CURLOPT_MAIL_FROM || \ - (option) == CURLOPT_NETRC_FILE || \ - (option) == CURLOPT_NOPROXY || \ - (option) == CURLOPT_PASSWORD || \ - (option) == CURLOPT_PINNEDPUBLICKEY || \ - (option) == CURLOPT_PRE_PROXY || \ - (option) == CURLOPT_PROXY || \ - (option) == CURLOPT_PROXYPASSWORD || \ - (option) == CURLOPT_PROXYUSERNAME || \ - (option) == CURLOPT_PROXYUSERPWD || \ - (option) == CURLOPT_PROXY_CAINFO || \ - (option) == CURLOPT_PROXY_CAPATH || \ - (option) == CURLOPT_PROXY_CRLFILE || \ - (option) == CURLOPT_PROXY_KEYPASSWD || \ - (option) == CURLOPT_PROXY_PINNEDPUBLICKEY || \ - (option) == CURLOPT_PROXY_SERVICE_NAME || \ - (option) == CURLOPT_PROXY_SSLCERT || \ - (option) == CURLOPT_PROXY_SSLCERTTYPE || \ - (option) == CURLOPT_PROXY_SSLKEY || \ - (option) == CURLOPT_PROXY_SSLKEYTYPE || \ - (option) == CURLOPT_PROXY_SSL_CIPHER_LIST || \ - (option) == CURLOPT_PROXY_TLSAUTH_PASSWORD || \ - (option) == CURLOPT_PROXY_TLSAUTH_USERNAME || \ - (option) == CURLOPT_PROXY_TLSAUTH_TYPE || \ - (option) == CURLOPT_RANDOM_FILE || \ - (option) == CURLOPT_RANGE || \ - (option) == CURLOPT_REFERER || \ - (option) == CURLOPT_RTSP_SESSION_ID || \ - (option) == CURLOPT_RTSP_STREAM_URI || \ - (option) == CURLOPT_RTSP_TRANSPORT || \ - (option) == CURLOPT_SERVICE_NAME || \ - (option) == CURLOPT_SOCKS5_GSSAPI_SERVICE || \ - (option) == CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 || \ - (option) == CURLOPT_SSH_KNOWNHOSTS || \ - (option) == CURLOPT_SSH_PRIVATE_KEYFILE || \ - (option) == CURLOPT_SSH_PUBLIC_KEYFILE || \ - (option) == CURLOPT_SSLCERT || \ - (option) == CURLOPT_SSLCERTTYPE || \ - (option) == CURLOPT_SSLENGINE || \ - (option) == CURLOPT_SSLKEY || \ - (option) == CURLOPT_SSLKEYTYPE || \ - (option) == CURLOPT_SSL_CIPHER_LIST || \ - (option) == CURLOPT_TLSAUTH_PASSWORD || \ - (option) == CURLOPT_TLSAUTH_TYPE || \ - (option) == CURLOPT_TLSAUTH_USERNAME || \ - (option) == CURLOPT_UNIX_SOCKET_PATH || \ - (option) == CURLOPT_URL || \ - (option) == CURLOPT_USERAGENT || \ - (option) == CURLOPT_USERNAME || \ - (option) == CURLOPT_USERPWD || \ - (option) == CURLOPT_XOAUTH2_BEARER || \ - 0) - -/* evaluates to true if option takes a curl_write_callback argument */ -#define _curl_is_write_cb_option(option) \ - ((option) == CURLOPT_HEADERFUNCTION || \ - (option) == CURLOPT_WRITEFUNCTION) - -/* evaluates to true if option takes a curl_conv_callback argument */ -#define _curl_is_conv_cb_option(option) \ - ((option) == CURLOPT_CONV_TO_NETWORK_FUNCTION || \ - (option) == CURLOPT_CONV_FROM_NETWORK_FUNCTION || \ - (option) == CURLOPT_CONV_FROM_UTF8_FUNCTION) - -/* evaluates to true if option takes a data argument to pass to a callback */ -#define _curl_is_cb_data_option(option) \ - ((option) == CURLOPT_CHUNK_DATA || \ - (option) == CURLOPT_CLOSESOCKETDATA || \ - (option) == CURLOPT_DEBUGDATA || \ - (option) == CURLOPT_FNMATCH_DATA || \ - (option) == CURLOPT_HEADERDATA || \ - (option) == CURLOPT_INTERLEAVEDATA || \ - (option) == CURLOPT_IOCTLDATA || \ - (option) == CURLOPT_OPENSOCKETDATA || \ - (option) == CURLOPT_PRIVATE || \ - (option) == CURLOPT_PROGRESSDATA || \ - (option) == CURLOPT_READDATA || \ - (option) == CURLOPT_SEEKDATA || \ - (option) == CURLOPT_SOCKOPTDATA || \ - (option) == CURLOPT_SSH_KEYDATA || \ - (option) == CURLOPT_SSL_CTX_DATA || \ - (option) == CURLOPT_WRITEDATA || \ - (option) == CURLOPT_RESOLVER_START_DATA || \ - 0) - -/* evaluates to true if option takes a POST data argument (void* or char*) */ -#define _curl_is_postfields_option(option) \ - ((option) == CURLOPT_POSTFIELDS || \ - (option) == CURLOPT_COPYPOSTFIELDS || \ - 0) - -/* evaluates to true if option takes a struct curl_slist * argument */ -#define _curl_is_slist_option(option) \ - ((option) == CURLOPT_HTTP200ALIASES || \ - (option) == CURLOPT_HTTPHEADER || \ - (option) == CURLOPT_MAIL_RCPT || \ - (option) == CURLOPT_POSTQUOTE || \ - (option) == CURLOPT_PREQUOTE || \ - (option) == CURLOPT_PROXYHEADER || \ - (option) == CURLOPT_QUOTE || \ - (option) == CURLOPT_RESOLVE || \ - (option) == CURLOPT_TELNETOPTIONS || \ - 0) - -/* groups of curl_easy_getinfo infos that take the same type of argument */ - -/* evaluates to true if info expects a pointer to char * argument */ -#define _curl_is_string_info(info) \ - (CURLINFO_STRING < (info) && (info) < CURLINFO_LONG) - -/* evaluates to true if info expects a pointer to long argument */ -#define _curl_is_long_info(info) \ - (CURLINFO_LONG < (info) && (info) < CURLINFO_DOUBLE) - -/* evaluates to true if info expects a pointer to double argument */ -#define _curl_is_double_info(info) \ - (CURLINFO_DOUBLE < (info) && (info) < CURLINFO_SLIST) - -/* true if info expects a pointer to struct curl_slist * argument */ -#define _curl_is_slist_info(info) \ - (((info) == CURLINFO_SSL_ENGINES) || ((info) == CURLINFO_COOKIELIST)) - -/* true if info expects a pointer to struct curl_tlssessioninfo * argument */ -#define _curl_is_tlssessioninfo_info(info) \ - (((info) == CURLINFO_TLS_SSL_PTR) || ((info) == CURLINFO_TLS_SESSION)) - -/* true if info expects a pointer to struct curl_certinfo * argument */ -#define _curl_is_certinfo_info(info) ((info) == CURLINFO_CERTINFO) - -/* true if info expects a pointer to struct curl_socket_t argument */ -#define _curl_is_socket_info(info) \ - (CURLINFO_SOCKET < (info) && (info) < CURLINFO_OFF_T) - -/* true if info expects a pointer to curl_off_t argument */ -#define _curl_is_off_t_info(info) \ - (CURLINFO_OFF_T < (info)) - - -/* typecheck helpers -- check whether given expression has requested type*/ - -/* For pointers, you can use the _curl_is_ptr/_curl_is_arr macros, - * otherwise define a new macro. Search for __builtin_types_compatible_p - * in the GCC manual. - * NOTE: these macros MUST NOT EVALUATE their arguments! The argument is - * the actual expression passed to the curl_easy_setopt macro. This - * means that you can only apply the sizeof and __typeof__ operators, no - * == or whatsoever. - */ - -/* XXX: should evaluate to true iff expr is a pointer */ -#define _curl_is_any_ptr(expr) \ - (sizeof(expr) == sizeof(void *)) - -/* evaluates to true if expr is NULL */ -/* XXX: must not evaluate expr, so this check is not accurate */ -#define _curl_is_NULL(expr) \ - (__builtin_types_compatible_p(__typeof__(expr), __typeof__(NULL))) - -/* evaluates to true if expr is type*, const type* or NULL */ -#define _curl_is_ptr(expr, type) \ - (_curl_is_NULL(expr) || \ - __builtin_types_compatible_p(__typeof__(expr), type *) || \ - __builtin_types_compatible_p(__typeof__(expr), const type *)) - -/* evaluates to true if expr is one of type[], type*, NULL or const type* */ -#define _curl_is_arr(expr, type) \ - (_curl_is_ptr((expr), type) || \ - __builtin_types_compatible_p(__typeof__(expr), type [])) - -/* evaluates to true if expr is a string */ -#define _curl_is_string(expr) \ - (_curl_is_arr((expr), char) || \ - _curl_is_arr((expr), signed char) || \ - _curl_is_arr((expr), unsigned char)) - -/* evaluates to true if expr is a long (no matter the signedness) - * XXX: for now, int is also accepted (and therefore short and char, which - * are promoted to int when passed to a variadic function) */ -#define _curl_is_long(expr) \ - (__builtin_types_compatible_p(__typeof__(expr), long) || \ - __builtin_types_compatible_p(__typeof__(expr), signed long) || \ - __builtin_types_compatible_p(__typeof__(expr), unsigned long) || \ - __builtin_types_compatible_p(__typeof__(expr), int) || \ - __builtin_types_compatible_p(__typeof__(expr), signed int) || \ - __builtin_types_compatible_p(__typeof__(expr), unsigned int) || \ - __builtin_types_compatible_p(__typeof__(expr), short) || \ - __builtin_types_compatible_p(__typeof__(expr), signed short) || \ - __builtin_types_compatible_p(__typeof__(expr), unsigned short) || \ - __builtin_types_compatible_p(__typeof__(expr), char) || \ - __builtin_types_compatible_p(__typeof__(expr), signed char) || \ - __builtin_types_compatible_p(__typeof__(expr), unsigned char)) - -/* evaluates to true if expr is of type curl_off_t */ -#define _curl_is_off_t(expr) \ - (__builtin_types_compatible_p(__typeof__(expr), curl_off_t)) - -/* evaluates to true if expr is abuffer suitable for CURLOPT_ERRORBUFFER */ -/* XXX: also check size of an char[] array? */ -#define _curl_is_error_buffer(expr) \ - (_curl_is_NULL(expr) || \ - __builtin_types_compatible_p(__typeof__(expr), char *) || \ - __builtin_types_compatible_p(__typeof__(expr), char[])) - -/* evaluates to true if expr is of type (const) void* or (const) FILE* */ -#if 0 -#define _curl_is_cb_data(expr) \ - (_curl_is_ptr((expr), void) || \ - _curl_is_ptr((expr), FILE)) -#else /* be less strict */ -#define _curl_is_cb_data(expr) \ - _curl_is_any_ptr(expr) -#endif - -/* evaluates to true if expr is of type FILE* */ -#define _curl_is_FILE(expr) \ - (_curl_is_NULL(expr) || \ - (__builtin_types_compatible_p(__typeof__(expr), FILE *))) - -/* evaluates to true if expr can be passed as POST data (void* or char*) */ -#define _curl_is_postfields(expr) \ - (_curl_is_ptr((expr), void) || \ - _curl_is_arr((expr), char)) - -/* FIXME: the whole callback checking is messy... - * The idea is to tolerate char vs. void and const vs. not const - * pointers in arguments at least - */ -/* helper: __builtin_types_compatible_p distinguishes between functions and - * function pointers, hide it */ -#define _curl_callback_compatible(func, type) \ - (__builtin_types_compatible_p(__typeof__(func), type) || \ - __builtin_types_compatible_p(__typeof__(func) *, type)) - -/* evaluates to true if expr is of type curl_resolver_start_callback */ -#define _curl_is_resolver_start_callback(expr) \ - (_curl_is_NULL(expr) || \ - _curl_callback_compatible((expr), curl_resolver_start_callback)) - -/* evaluates to true if expr is of type curl_read_callback or "similar" */ -#define _curl_is_read_cb(expr) \ - (_curl_is_NULL(expr) || \ - _curl_callback_compatible((expr), __typeof__(fread) *) || \ - _curl_callback_compatible((expr), curl_read_callback) || \ - _curl_callback_compatible((expr), _curl_read_callback1) || \ - _curl_callback_compatible((expr), _curl_read_callback2) || \ - _curl_callback_compatible((expr), _curl_read_callback3) || \ - _curl_callback_compatible((expr), _curl_read_callback4) || \ - _curl_callback_compatible((expr), _curl_read_callback5) || \ - _curl_callback_compatible((expr), _curl_read_callback6)) -typedef size_t (*_curl_read_callback1)(char *, size_t, size_t, void *); -typedef size_t (*_curl_read_callback2)(char *, size_t, size_t, const void *); -typedef size_t (*_curl_read_callback3)(char *, size_t, size_t, FILE *); -typedef size_t (*_curl_read_callback4)(void *, size_t, size_t, void *); -typedef size_t (*_curl_read_callback5)(void *, size_t, size_t, const void *); -typedef size_t (*_curl_read_callback6)(void *, size_t, size_t, FILE *); - -/* evaluates to true if expr is of type curl_write_callback or "similar" */ -#define _curl_is_write_cb(expr) \ - (_curl_is_read_cb(expr) || \ - _curl_callback_compatible((expr), __typeof__(fwrite) *) || \ - _curl_callback_compatible((expr), curl_write_callback) || \ - _curl_callback_compatible((expr), _curl_write_callback1) || \ - _curl_callback_compatible((expr), _curl_write_callback2) || \ - _curl_callback_compatible((expr), _curl_write_callback3) || \ - _curl_callback_compatible((expr), _curl_write_callback4) || \ - _curl_callback_compatible((expr), _curl_write_callback5) || \ - _curl_callback_compatible((expr), _curl_write_callback6)) -typedef size_t (*_curl_write_callback1)(const char *, size_t, size_t, void *); -typedef size_t (*_curl_write_callback2)(const char *, size_t, size_t, - const void *); -typedef size_t (*_curl_write_callback3)(const char *, size_t, size_t, FILE *); -typedef size_t (*_curl_write_callback4)(const void *, size_t, size_t, void *); -typedef size_t (*_curl_write_callback5)(const void *, size_t, size_t, - const void *); -typedef size_t (*_curl_write_callback6)(const void *, size_t, size_t, FILE *); - -/* evaluates to true if expr is of type curl_ioctl_callback or "similar" */ -#define _curl_is_ioctl_cb(expr) \ - (_curl_is_NULL(expr) || \ - _curl_callback_compatible((expr), curl_ioctl_callback) || \ - _curl_callback_compatible((expr), _curl_ioctl_callback1) || \ - _curl_callback_compatible((expr), _curl_ioctl_callback2) || \ - _curl_callback_compatible((expr), _curl_ioctl_callback3) || \ - _curl_callback_compatible((expr), _curl_ioctl_callback4)) -typedef curlioerr (*_curl_ioctl_callback1)(CURL *, int, void *); -typedef curlioerr (*_curl_ioctl_callback2)(CURL *, int, const void *); -typedef curlioerr (*_curl_ioctl_callback3)(CURL *, curliocmd, void *); -typedef curlioerr (*_curl_ioctl_callback4)(CURL *, curliocmd, const void *); - -/* evaluates to true if expr is of type curl_sockopt_callback or "similar" */ -#define _curl_is_sockopt_cb(expr) \ - (_curl_is_NULL(expr) || \ - _curl_callback_compatible((expr), curl_sockopt_callback) || \ - _curl_callback_compatible((expr), _curl_sockopt_callback1) || \ - _curl_callback_compatible((expr), _curl_sockopt_callback2)) -typedef int (*_curl_sockopt_callback1)(void *, curl_socket_t, curlsocktype); -typedef int (*_curl_sockopt_callback2)(const void *, curl_socket_t, - curlsocktype); - -/* evaluates to true if expr is of type curl_opensocket_callback or - "similar" */ -#define _curl_is_opensocket_cb(expr) \ - (_curl_is_NULL(expr) || \ - _curl_callback_compatible((expr), curl_opensocket_callback) || \ - _curl_callback_compatible((expr), _curl_opensocket_callback1) || \ - _curl_callback_compatible((expr), _curl_opensocket_callback2) || \ - _curl_callback_compatible((expr), _curl_opensocket_callback3) || \ - _curl_callback_compatible((expr), _curl_opensocket_callback4)) -typedef curl_socket_t (*_curl_opensocket_callback1) - (void *, curlsocktype, struct curl_sockaddr *); -typedef curl_socket_t (*_curl_opensocket_callback2) - (void *, curlsocktype, const struct curl_sockaddr *); -typedef curl_socket_t (*_curl_opensocket_callback3) - (const void *, curlsocktype, struct curl_sockaddr *); -typedef curl_socket_t (*_curl_opensocket_callback4) - (const void *, curlsocktype, const struct curl_sockaddr *); - -/* evaluates to true if expr is of type curl_progress_callback or "similar" */ -#define _curl_is_progress_cb(expr) \ - (_curl_is_NULL(expr) || \ - _curl_callback_compatible((expr), curl_progress_callback) || \ - _curl_callback_compatible((expr), _curl_progress_callback1) || \ - _curl_callback_compatible((expr), _curl_progress_callback2)) -typedef int (*_curl_progress_callback1)(void *, - double, double, double, double); -typedef int (*_curl_progress_callback2)(const void *, - double, double, double, double); - -/* evaluates to true if expr is of type curl_debug_callback or "similar" */ -#define _curl_is_debug_cb(expr) \ - (_curl_is_NULL(expr) || \ - _curl_callback_compatible((expr), curl_debug_callback) || \ - _curl_callback_compatible((expr), _curl_debug_callback1) || \ - _curl_callback_compatible((expr), _curl_debug_callback2) || \ - _curl_callback_compatible((expr), _curl_debug_callback3) || \ - _curl_callback_compatible((expr), _curl_debug_callback4) || \ - _curl_callback_compatible((expr), _curl_debug_callback5) || \ - _curl_callback_compatible((expr), _curl_debug_callback6) || \ - _curl_callback_compatible((expr), _curl_debug_callback7) || \ - _curl_callback_compatible((expr), _curl_debug_callback8)) -typedef int (*_curl_debug_callback1) (CURL *, - curl_infotype, char *, size_t, void *); -typedef int (*_curl_debug_callback2) (CURL *, - curl_infotype, char *, size_t, const void *); -typedef int (*_curl_debug_callback3) (CURL *, - curl_infotype, const char *, size_t, void *); -typedef int (*_curl_debug_callback4) (CURL *, - curl_infotype, const char *, size_t, const void *); -typedef int (*_curl_debug_callback5) (CURL *, - curl_infotype, unsigned char *, size_t, void *); -typedef int (*_curl_debug_callback6) (CURL *, - curl_infotype, unsigned char *, size_t, const void *); -typedef int (*_curl_debug_callback7) (CURL *, - curl_infotype, const unsigned char *, size_t, void *); -typedef int (*_curl_debug_callback8) (CURL *, - curl_infotype, const unsigned char *, size_t, const void *); - -/* evaluates to true if expr is of type curl_ssl_ctx_callback or "similar" */ -/* this is getting even messier... */ -#define _curl_is_ssl_ctx_cb(expr) \ - (_curl_is_NULL(expr) || \ - _curl_callback_compatible((expr), curl_ssl_ctx_callback) || \ - _curl_callback_compatible((expr), _curl_ssl_ctx_callback1) || \ - _curl_callback_compatible((expr), _curl_ssl_ctx_callback2) || \ - _curl_callback_compatible((expr), _curl_ssl_ctx_callback3) || \ - _curl_callback_compatible((expr), _curl_ssl_ctx_callback4) || \ - _curl_callback_compatible((expr), _curl_ssl_ctx_callback5) || \ - _curl_callback_compatible((expr), _curl_ssl_ctx_callback6) || \ - _curl_callback_compatible((expr), _curl_ssl_ctx_callback7) || \ - _curl_callback_compatible((expr), _curl_ssl_ctx_callback8)) -typedef CURLcode (*_curl_ssl_ctx_callback1)(CURL *, void *, void *); -typedef CURLcode (*_curl_ssl_ctx_callback2)(CURL *, void *, const void *); -typedef CURLcode (*_curl_ssl_ctx_callback3)(CURL *, const void *, void *); -typedef CURLcode (*_curl_ssl_ctx_callback4)(CURL *, const void *, - const void *); -#ifdef HEADER_SSL_H -/* hack: if we included OpenSSL's ssl.h, we know about SSL_CTX - * this will of course break if we're included before OpenSSL headers... - */ -typedef CURLcode (*_curl_ssl_ctx_callback5)(CURL *, SSL_CTX, void *); -typedef CURLcode (*_curl_ssl_ctx_callback6)(CURL *, SSL_CTX, const void *); -typedef CURLcode (*_curl_ssl_ctx_callback7)(CURL *, const SSL_CTX, void *); -typedef CURLcode (*_curl_ssl_ctx_callback8)(CURL *, const SSL_CTX, - const void *); -#else -typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback5; -typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback6; -typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback7; -typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback8; -#endif - -/* evaluates to true if expr is of type curl_conv_callback or "similar" */ -#define _curl_is_conv_cb(expr) \ - (_curl_is_NULL(expr) || \ - _curl_callback_compatible((expr), curl_conv_callback) || \ - _curl_callback_compatible((expr), _curl_conv_callback1) || \ - _curl_callback_compatible((expr), _curl_conv_callback2) || \ - _curl_callback_compatible((expr), _curl_conv_callback3) || \ - _curl_callback_compatible((expr), _curl_conv_callback4)) -typedef CURLcode (*_curl_conv_callback1)(char *, size_t length); -typedef CURLcode (*_curl_conv_callback2)(const char *, size_t length); -typedef CURLcode (*_curl_conv_callback3)(void *, size_t length); -typedef CURLcode (*_curl_conv_callback4)(const void *, size_t length); - -/* evaluates to true if expr is of type curl_seek_callback or "similar" */ -#define _curl_is_seek_cb(expr) \ - (_curl_is_NULL(expr) || \ - _curl_callback_compatible((expr), curl_seek_callback) || \ - _curl_callback_compatible((expr), _curl_seek_callback1) || \ - _curl_callback_compatible((expr), _curl_seek_callback2)) -typedef CURLcode (*_curl_seek_callback1)(void *, curl_off_t, int); -typedef CURLcode (*_curl_seek_callback2)(const void *, curl_off_t, int); - - -#endif /* __CURL_TYPECHECK_GCC_H */ diff --git a/cache/include/libevent2/evdns.h b/cache/include/libevent2/evdns.h deleted file mode 100644 index 8672db0..0000000 --- a/cache/include/libevent2/evdns.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2000-2007 Niels Provos - * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef EVENT1_EVDNS_H_INCLUDED_ -#define EVENT1_EVDNS_H_INCLUDED_ - -/** @file evdns.h - - A dns subsystem for Libevent. - - The header is deprecated in Libevent 2.0 and later; please - use instead. Depending on what functionality you - need, you may also want to include more of the other - headers. - */ - -#include -#include -#include -#include - -#endif /* EVENT1_EVDNS_H_INCLUDED_ */ diff --git a/cache/include/libevent2/event.h b/cache/include/libevent2/event.h deleted file mode 100644 index ba51867..0000000 --- a/cache/include/libevent2/event.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (c) 2000-2007 Niels Provos - * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef EVENT1_EVENT_H_INCLUDED_ -#define EVENT1_EVENT_H_INCLUDED_ - -/** @file event.h - - A library for writing event-driven network servers. - - The header is deprecated in Libevent 2.0 and later; please - use instead. Depending on what functionality you - need, you may also want to include more of the other event2/ - headers. - */ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#ifdef EVENT__HAVE_SYS_TYPES_H -#include -#endif -#ifdef EVENT__HAVE_SYS_TIME_H -#include -#endif -#ifdef EVENT__HAVE_STDINT_H -#include -#endif -#include - -/* For int types. */ -#include - -#ifdef _WIN32 -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#include -#undef WIN32_LEAN_AND_MEAN -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef __cplusplus -} -#endif - -#endif /* EVENT1_EVENT_H_INCLUDED_ */ diff --git a/cache/include/libevent2/event2/buffer.h b/cache/include/libevent2/event2/buffer.h deleted file mode 100644 index 468588b..0000000 --- a/cache/include/libevent2/event2/buffer.h +++ /dev/null @@ -1,1076 +0,0 @@ -/* - * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef EVENT2_BUFFER_H_INCLUDED_ -#define EVENT2_BUFFER_H_INCLUDED_ - -/** @file event2/buffer.h - - Functions for buffering data for network sending or receiving. - - An evbuffer can be used for preparing data before sending it to - the network or conversely for reading data from the network. - Evbuffers try to avoid memory copies as much as possible. As a - result, evbuffers can be used to pass data around without actually - incurring the overhead of copying the data. - - A new evbuffer can be allocated with evbuffer_new(), and can be - freed with evbuffer_free(). Most users will be using evbuffers via - the bufferevent interface. To access a bufferevent's evbuffers, use - bufferevent_get_input() and bufferevent_get_output(). - - There are several guidelines for using evbuffers. - - - if you already know how much data you are going to add as a result - of calling evbuffer_add() multiple times, it makes sense to use - evbuffer_expand() first to make sure that enough memory is allocated - before hand. - - - evbuffer_add_buffer() adds the contents of one buffer to the other - without incurring any unnecessary memory copies. - - - evbuffer_add() and evbuffer_add_buffer() do not mix very well: - if you use them, you will wind up with fragmented memory in your - buffer. - - - For high-performance code, you may want to avoid copying data into and out - of buffers. You can skip the copy step by using - evbuffer_reserve_space()/evbuffer_commit_space() when writing into a - buffer, and evbuffer_peek() when reading. - - In Libevent 2.0 and later, evbuffers are represented using a linked - list of memory chunks, with pointers to the first and last chunk in - the chain. - - As the contents of an evbuffer can be stored in multiple different - memory blocks, it cannot be accessed directly. Instead, evbuffer_pullup() - can be used to force a specified number of bytes to be contiguous. This - will cause memory reallocation and memory copies if the data is split - across multiple blocks. It is more efficient, however, to use - evbuffer_peek() if you don't require that the memory to be contiguous. - */ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#ifdef EVENT__HAVE_SYS_TYPES_H -#include -#endif -#ifdef EVENT__HAVE_SYS_UIO_H -#include -#endif -#include - -/** - An evbuffer is an opaque data type for efficiently buffering data to be - sent or received on the network. - - @see event2/event.h for more information -*/ -struct evbuffer -#ifdef EVENT_IN_DOXYGEN_ -{} -#endif -; - -/** - Pointer to a position within an evbuffer. - - Used when repeatedly searching through a buffer. Calling any function - that modifies or re-packs the buffer contents may invalidate all - evbuffer_ptrs for that buffer. Do not modify or contruct these values - except with evbuffer_ptr_set. - - An evbuffer_ptr can represent any position from the start of a buffer up - to a position immediately after the end of a buffer. - - @see evbuffer_ptr_set() - */ -struct evbuffer_ptr { - ev_ssize_t pos; - - /* Do not alter or rely on the values of fields: they are for internal - * use */ - struct { - void *chain; - size_t pos_in_chain; - } internal_; -}; - -/** Describes a single extent of memory inside an evbuffer. Used for - direct-access functions. - - @see evbuffer_reserve_space, evbuffer_commit_space, evbuffer_peek - */ -#ifdef EVENT__HAVE_SYS_UIO_H -#define evbuffer_iovec iovec -/* Internal use -- defined only if we are using the native struct iovec */ -#define EVBUFFER_IOVEC_IS_NATIVE_ -#else -struct evbuffer_iovec { - /** The start of the extent of memory. */ - void *iov_base; - /** The length of the extent of memory. */ - size_t iov_len; -}; -#endif - -/** - Allocate storage for a new evbuffer. - - @return a pointer to a newly allocated evbuffer struct, or NULL if an error - occurred - */ -EVENT2_EXPORT_SYMBOL -struct evbuffer *evbuffer_new(void); -/** - Deallocate storage for an evbuffer. - - @param buf pointer to the evbuffer to be freed - */ -EVENT2_EXPORT_SYMBOL -void evbuffer_free(struct evbuffer *buf); - -/** - Enable locking on an evbuffer so that it can safely be used by multiple - threads at the same time. - - NOTE: when locking is enabled, the lock will be held when callbacks are - invoked. This could result in deadlock if you aren't careful. Plan - accordingly! - - @param buf An evbuffer to make lockable. - @param lock A lock object, or NULL if we should allocate our own. - @return 0 on success, -1 on failure. - */ -EVENT2_EXPORT_SYMBOL -int evbuffer_enable_locking(struct evbuffer *buf, void *lock); - -/** - Acquire the lock on an evbuffer. Has no effect if locking was not enabled - with evbuffer_enable_locking. -*/ -EVENT2_EXPORT_SYMBOL -void evbuffer_lock(struct evbuffer *buf); - -/** - Release the lock on an evbuffer. Has no effect if locking was not enabled - with evbuffer_enable_locking. -*/ -EVENT2_EXPORT_SYMBOL -void evbuffer_unlock(struct evbuffer *buf); - - -/** If this flag is set, then we will not use evbuffer_peek(), - * evbuffer_remove(), evbuffer_remove_buffer(), and so on to read bytes - * from this buffer: we'll only take bytes out of this buffer by - * writing them to the network (as with evbuffer_write_atmost), by - * removing them without observing them (as with evbuffer_drain), - * or by copying them all out at once (as with evbuffer_add_buffer). - * - * Using this option allows the implementation to use sendfile-based - * operations for evbuffer_add_file(); see that function for more - * information. - * - * This flag is on by default for bufferevents that can take advantage - * of it; you should never actually need to set it on a bufferevent's - * output buffer. - */ -#define EVBUFFER_FLAG_DRAINS_TO_FD 1 - -/** Change the flags that are set for an evbuffer by adding more. - * - * @param buffer the evbuffer that the callback is watching. - * @param cb the callback whose status we want to change. - * @param flags One or more EVBUFFER_FLAG_* options - * @return 0 on success, -1 on failure. - */ -EVENT2_EXPORT_SYMBOL -int evbuffer_set_flags(struct evbuffer *buf, ev_uint64_t flags); -/** Change the flags that are set for an evbuffer by removing some. - * - * @param buffer the evbuffer that the callback is watching. - * @param cb the callback whose status we want to change. - * @param flags One or more EVBUFFER_FLAG_* options - * @return 0 on success, -1 on failure. - */ -EVENT2_EXPORT_SYMBOL -int evbuffer_clear_flags(struct evbuffer *buf, ev_uint64_t flags); - -/** - Returns the total number of bytes stored in the evbuffer - - @param buf pointer to the evbuffer - @return the number of bytes stored in the evbuffer -*/ -EVENT2_EXPORT_SYMBOL -size_t evbuffer_get_length(const struct evbuffer *buf); - -/** - Returns the number of contiguous available bytes in the first buffer chain. - - This is useful when processing data that might be split into multiple - chains, or that might all be in the first chain. Calls to - evbuffer_pullup() that cause reallocation and copying of data can thus be - avoided. - - @param buf pointer to the evbuffer - @return 0 if no data is available, otherwise the number of available bytes - in the first buffer chain. -*/ -EVENT2_EXPORT_SYMBOL -size_t evbuffer_get_contiguous_space(const struct evbuffer *buf); - -/** - Expands the available space in an evbuffer. - - Expands the available space in the evbuffer to at least datlen, so that - appending datlen additional bytes will not require any new allocations. - - @param buf the evbuffer to be expanded - @param datlen the new minimum length requirement - @return 0 if successful, or -1 if an error occurred -*/ -EVENT2_EXPORT_SYMBOL -int evbuffer_expand(struct evbuffer *buf, size_t datlen); - -/** - Reserves space in the last chain or chains of an evbuffer. - - Makes space available in the last chain or chains of an evbuffer that can - be arbitrarily written to by a user. The space does not become - available for reading until it has been committed with - evbuffer_commit_space(). - - The space is made available as one or more extents, represented by - an initial pointer and a length. You can force the memory to be - available as only one extent. Allowing more extents, however, makes the - function more efficient. - - Multiple subsequent calls to this function will make the same space - available until evbuffer_commit_space() has been called. - - It is an error to do anything that moves around the buffer's internal - memory structures before committing the space. - - NOTE: The code currently does not ever use more than two extents. - This may change in future versions. - - @param buf the evbuffer in which to reserve space. - @param size how much space to make available, at minimum. The - total length of the extents may be greater than the requested - length. - @param vec an array of one or more evbuffer_iovec structures to - hold pointers to the reserved extents of memory. - @param n_vec The length of the vec array. Must be at least 1; - 2 is more efficient. - @return the number of provided extents, or -1 on error. - @see evbuffer_commit_space() -*/ -EVENT2_EXPORT_SYMBOL -int -evbuffer_reserve_space(struct evbuffer *buf, ev_ssize_t size, - struct evbuffer_iovec *vec, int n_vec); - -/** - Commits previously reserved space. - - Commits some of the space previously reserved with - evbuffer_reserve_space(). It then becomes available for reading. - - This function may return an error if the pointer in the extents do - not match those returned from evbuffer_reserve_space, or if data - has been added to the buffer since the space was reserved. - - If you want to commit less data than you got reserved space for, - modify the iov_len pointer of the appropriate extent to a smaller - value. Note that you may have received more space than you - requested if it was available! - - @param buf the evbuffer in which to reserve space. - @param vec one or two extents returned by evbuffer_reserve_space. - @param n_vecs the number of extents. - @return 0 on success, -1 on error - @see evbuffer_reserve_space() -*/ -EVENT2_EXPORT_SYMBOL -int evbuffer_commit_space(struct evbuffer *buf, - struct evbuffer_iovec *vec, int n_vecs); - -/** - Append data to the end of an evbuffer. - - @param buf the evbuffer to be appended to - @param data pointer to the beginning of the data buffer - @param datlen the number of bytes to be copied from the data buffer - @return 0 on success, -1 on failure. - */ -EVENT2_EXPORT_SYMBOL -int evbuffer_add(struct evbuffer *buf, const void *data, size_t datlen); - - -/** - Read data from an evbuffer and drain the bytes read. - - If more bytes are requested than are available in the evbuffer, we - only extract as many bytes as were available. - - @param buf the evbuffer to be read from - @param data the destination buffer to store the result - @param datlen the maximum size of the destination buffer - @return the number of bytes read, or -1 if we can't drain the buffer. - */ -EVENT2_EXPORT_SYMBOL -int evbuffer_remove(struct evbuffer *buf, void *data, size_t datlen); - -/** - Read data from an evbuffer, and leave the buffer unchanged. - - If more bytes are requested than are available in the evbuffer, we - only extract as many bytes as were available. - - @param buf the evbuffer to be read from - @param data_out the destination buffer to store the result - @param datlen the maximum size of the destination buffer - @return the number of bytes read, or -1 if we can't drain the buffer. - */ -EVENT2_EXPORT_SYMBOL -ev_ssize_t evbuffer_copyout(struct evbuffer *buf, void *data_out, size_t datlen); - -/** - Read data from the middle of an evbuffer, and leave the buffer unchanged. - - If more bytes are requested than are available in the evbuffer, we - only extract as many bytes as were available. - - @param buf the evbuffer to be read from - @param pos the position to start reading from - @param data_out the destination buffer to store the result - @param datlen the maximum size of the destination buffer - @return the number of bytes read, or -1 if we can't drain the buffer. - */ -EVENT2_EXPORT_SYMBOL -ev_ssize_t evbuffer_copyout_from(struct evbuffer *buf, const struct evbuffer_ptr *pos, void *data_out, size_t datlen); - -/** - Read data from an evbuffer into another evbuffer, draining - the bytes from the source buffer. This function avoids copy - operations to the extent possible. - - If more bytes are requested than are available in src, the src - buffer is drained completely. - - @param src the evbuffer to be read from - @param dst the destination evbuffer to store the result into - @param datlen the maximum numbers of bytes to transfer - @return the number of bytes read - */ -EVENT2_EXPORT_SYMBOL -int evbuffer_remove_buffer(struct evbuffer *src, struct evbuffer *dst, - size_t datlen); - -/** Used to tell evbuffer_readln what kind of line-ending to look for. - */ -enum evbuffer_eol_style { - /** Any sequence of CR and LF characters is acceptable as an - * EOL. - * - * Note that this style can produce ambiguous results: the - * sequence "CRLF" will be treated as a single EOL if it is - * all in the buffer at once, but if you first read a CR from - * the network and later read an LF from the network, it will - * be treated as two EOLs. - */ - EVBUFFER_EOL_ANY, - /** An EOL is an LF, optionally preceded by a CR. This style is - * most useful for implementing text-based internet protocols. */ - EVBUFFER_EOL_CRLF, - /** An EOL is a CR followed by an LF. */ - EVBUFFER_EOL_CRLF_STRICT, - /** An EOL is a LF. */ - EVBUFFER_EOL_LF, - /** An EOL is a NUL character (that is, a single byte with value 0) */ - EVBUFFER_EOL_NUL -}; - -/** - * Read a single line from an evbuffer. - * - * Reads a line terminated by an EOL as determined by the evbuffer_eol_style - * argument. Returns a newly allocated nul-terminated string; the caller must - * free the returned value. The EOL is not included in the returned string. - * - * @param buffer the evbuffer to read from - * @param n_read_out if non-NULL, points to a size_t that is set to the - * number of characters in the returned string. This is useful for - * strings that can contain NUL characters. - * @param eol_style the style of line-ending to use. - * @return pointer to a single line, or NULL if an error occurred - */ -EVENT2_EXPORT_SYMBOL -char *evbuffer_readln(struct evbuffer *buffer, size_t *n_read_out, - enum evbuffer_eol_style eol_style); - -/** - Move all data from one evbuffer into another evbuffer. - - This is a destructive add. The data from one buffer moves into - the other buffer. However, no unnecessary memory copies occur. - - @param outbuf the output buffer - @param inbuf the input buffer - @return 0 if successful, or -1 if an error occurred - - @see evbuffer_remove_buffer() - */ -EVENT2_EXPORT_SYMBOL -int evbuffer_add_buffer(struct evbuffer *outbuf, struct evbuffer *inbuf); - -/** - Copy data from one evbuffer into another evbuffer. - - This is a non-destructive add. The data from one buffer is copied - into the other buffer. However, no unnecessary memory copies occur. - - Note that buffers already containing buffer references can't be added - to other buffers. - - @param outbuf the output buffer - @param inbuf the input buffer - @return 0 if successful, or -1 if an error occurred - */ -EVENT2_EXPORT_SYMBOL -int evbuffer_add_buffer_reference(struct evbuffer *outbuf, - struct evbuffer *inbuf); - -/** - A cleanup function for a piece of memory added to an evbuffer by - reference. - - @see evbuffer_add_reference() - */ -typedef void (*evbuffer_ref_cleanup_cb)(const void *data, - size_t datalen, void *extra); - -/** - Reference memory into an evbuffer without copying. - - The memory needs to remain valid until all the added data has been - read. This function keeps just a reference to the memory without - actually incurring the overhead of a copy. - - @param outbuf the output buffer - @param data the memory to reference - @param datlen how memory to reference - @param cleanupfn callback to be invoked when the memory is no longer - referenced by this evbuffer. - @param cleanupfn_arg optional argument to the cleanup callback - @return 0 if successful, or -1 if an error occurred - */ -EVENT2_EXPORT_SYMBOL -int evbuffer_add_reference(struct evbuffer *outbuf, - const void *data, size_t datlen, - evbuffer_ref_cleanup_cb cleanupfn, void *cleanupfn_arg); - -/** - Copy data from a file into the evbuffer for writing to a socket. - - This function avoids unnecessary data copies between userland and - kernel. If sendfile is available and the EVBUFFER_FLAG_DRAINS_TO_FD - flag is set, it uses those functions. Otherwise, it tries to use - mmap (or CreateFileMapping on Windows). - - The function owns the resulting file descriptor and will close it - when finished transferring data. - - The results of using evbuffer_remove() or evbuffer_pullup() on - evbuffers whose data was added using this function are undefined. - - For more fine-grained control, use evbuffer_add_file_segment. - - @param outbuf the output buffer - @param fd the file descriptor - @param offset the offset from which to read data - @param length how much data to read, or -1 to read as much as possible. - (-1 requires that 'fd' support fstat.) - @return 0 if successful, or -1 if an error occurred -*/ - -EVENT2_EXPORT_SYMBOL -int evbuffer_add_file(struct evbuffer *outbuf, int fd, ev_off_t offset, - ev_off_t length); - -/** - An evbuffer_file_segment holds a reference to a range of a file -- - possibly the whole file! -- for use in writing from an evbuffer to a - socket. It could be implemented with mmap, sendfile, splice, or (if all - else fails) by just pulling all the data into RAM. A single - evbuffer_file_segment can be added more than once, and to more than one - evbuffer. - */ -struct evbuffer_file_segment; - -/** - Flag for creating evbuffer_file_segment: If this flag is set, then when - the evbuffer_file_segment is freed and no longer in use by any - evbuffer, the underlying fd is closed. - */ -#define EVBUF_FS_CLOSE_ON_FREE 0x01 -/** - Flag for creating evbuffer_file_segment: Disable memory-map based - implementations. - */ -#define EVBUF_FS_DISABLE_MMAP 0x02 -/** - Flag for creating evbuffer_file_segment: Disable direct fd-to-fd - implementations (including sendfile and splice). - - You might want to use this option if data needs to be taken from the - evbuffer by any means other than writing it to the network: the sendfile - backend is fast, but it only works for sending files directly to the - network. - */ -#define EVBUF_FS_DISABLE_SENDFILE 0x04 -/** - Flag for creating evbuffer_file_segment: Do not allocate a lock for this - segment. If this option is set, then neither the segment nor any - evbuffer it is added to may ever be accessed from more than one thread - at a time. - */ -#define EVBUF_FS_DISABLE_LOCKING 0x08 - -/** - A cleanup function for a evbuffer_file_segment added to an evbuffer - for reference. - */ -typedef void (*evbuffer_file_segment_cleanup_cb)( - struct evbuffer_file_segment const* seg, int flags, void* arg); - -/** - Create and return a new evbuffer_file_segment for reading data from a - file and sending it out via an evbuffer. - - This function avoids unnecessary data copies between userland and - kernel. Where available, it uses sendfile or splice. - - The file descriptor must not be closed so long as any evbuffer is using - this segment. - - The results of using evbuffer_remove() or evbuffer_pullup() or any other - function that reads bytes from an evbuffer on any evbuffer containing - the newly returned segment are undefined, unless you pass the - EVBUF_FS_DISABLE_SENDFILE flag to this function. - - @param fd an open file to read from. - @param offset an index within the file at which to start reading - @param length how much data to read, or -1 to read as much as possible. - (-1 requires that 'fd' support fstat.) - @param flags any number of the EVBUF_FS_* flags - @return a new evbuffer_file_segment, or NULL on failure. - **/ -EVENT2_EXPORT_SYMBOL -struct evbuffer_file_segment *evbuffer_file_segment_new( - int fd, ev_off_t offset, ev_off_t length, unsigned flags); - -/** - Free an evbuffer_file_segment - - It is safe to call this function even if the segment has been added to - one or more evbuffers. The evbuffer_file_segment will not be freed - until no more references to it exist. - */ -EVENT2_EXPORT_SYMBOL -void evbuffer_file_segment_free(struct evbuffer_file_segment *seg); - -/** - Add cleanup callback and argument for the callback to an - evbuffer_file_segment. - - The cleanup callback will be invoked when no more references to the - evbuffer_file_segment exist. - **/ -EVENT2_EXPORT_SYMBOL -void evbuffer_file_segment_add_cleanup_cb(struct evbuffer_file_segment *seg, - evbuffer_file_segment_cleanup_cb cb, void* arg); - -/** - Insert some or all of an evbuffer_file_segment at the end of an evbuffer - - Note that the offset and length parameters of this function have a - different meaning from those provided to evbuffer_file_segment_new: When - you create the segment, the offset is the offset _within the file_, and - the length is the length _of the segment_, whereas when you add a - segment to an evbuffer, the offset is _within the segment_ and the - length is the length of the _part of the segment you want to use. - - In other words, if you have a 10 KiB file, and you create an - evbuffer_file_segment for it with offset 20 and length 1000, it will - refer to bytes 20..1019 inclusive. If you then pass this segment to - evbuffer_add_file_segment and specify an offset of 20 and a length of - 50, you will be adding bytes 40..99 inclusive. - - @param buf the evbuffer to append to - @param seg the segment to add - @param offset the offset within the segment to start from - @param length the amount of data to add, or -1 to add it all. - @return 0 on success, -1 on failure. - */ -EVENT2_EXPORT_SYMBOL -int evbuffer_add_file_segment(struct evbuffer *buf, - struct evbuffer_file_segment *seg, ev_off_t offset, ev_off_t length); - -/** - Append a formatted string to the end of an evbuffer. - - The string is formated as printf. - - @param buf the evbuffer that will be appended to - @param fmt a format string - @param ... arguments that will be passed to printf(3) - @return The number of bytes added if successful, or -1 if an error occurred. - - @see evutil_printf(), evbuffer_add_vprintf() - */ -EVENT2_EXPORT_SYMBOL -int evbuffer_add_printf(struct evbuffer *buf, const char *fmt, ...) -#ifdef __GNUC__ - __attribute__((format(printf, 2, 3))) -#endif -; - -/** - Append a va_list formatted string to the end of an evbuffer. - - @param buf the evbuffer that will be appended to - @param fmt a format string - @param ap a varargs va_list argument array that will be passed to vprintf(3) - @return The number of bytes added if successful, or -1 if an error occurred. - */ -EVENT2_EXPORT_SYMBOL -int evbuffer_add_vprintf(struct evbuffer *buf, const char *fmt, va_list ap) -#ifdef __GNUC__ - __attribute__((format(printf, 2, 0))) -#endif -; - - -/** - Remove a specified number of bytes data from the beginning of an evbuffer. - - @param buf the evbuffer to be drained - @param len the number of bytes to drain from the beginning of the buffer - @return 0 on success, -1 on failure. - */ -EVENT2_EXPORT_SYMBOL -int evbuffer_drain(struct evbuffer *buf, size_t len); - - -/** - Write the contents of an evbuffer to a file descriptor. - - The evbuffer will be drained after the bytes have been successfully written. - - @param buffer the evbuffer to be written and drained - @param fd the file descriptor to be written to - @return the number of bytes written, or -1 if an error occurred - @see evbuffer_read() - */ -EVENT2_EXPORT_SYMBOL -int evbuffer_write(struct evbuffer *buffer, evutil_socket_t fd); - -/** - Write some of the contents of an evbuffer to a file descriptor. - - The evbuffer will be drained after the bytes have been successfully written. - - @param buffer the evbuffer to be written and drained - @param fd the file descriptor to be written to - @param howmuch the largest allowable number of bytes to write, or -1 - to write as many bytes as we can. - @return the number of bytes written, or -1 if an error occurred - @see evbuffer_read() - */ -EVENT2_EXPORT_SYMBOL -int evbuffer_write_atmost(struct evbuffer *buffer, evutil_socket_t fd, - ev_ssize_t howmuch); - -/** - Read from a file descriptor and store the result in an evbuffer. - - @param buffer the evbuffer to store the result - @param fd the file descriptor to read from - @param howmuch the number of bytes to be read - @return the number of bytes read, or -1 if an error occurred - @see evbuffer_write() - */ -EVENT2_EXPORT_SYMBOL -int evbuffer_read(struct evbuffer *buffer, evutil_socket_t fd, int howmuch); - -/** - Search for a string within an evbuffer. - - @param buffer the evbuffer to be searched - @param what the string to be searched for - @param len the length of the search string - @param start NULL or a pointer to a valid struct evbuffer_ptr. - @return a struct evbuffer_ptr whose 'pos' field has the offset of the - first occurrence of the string in the buffer after 'start'. The 'pos' - field of the result is -1 if the string was not found. - */ -EVENT2_EXPORT_SYMBOL -struct evbuffer_ptr evbuffer_search(struct evbuffer *buffer, const char *what, size_t len, const struct evbuffer_ptr *start); - -/** - Search for a string within part of an evbuffer. - - @param buffer the evbuffer to be searched - @param what the string to be searched for - @param len the length of the search string - @param start NULL or a pointer to a valid struct evbuffer_ptr that - indicates where we should start searching. - @param end NULL or a pointer to a valid struct evbuffer_ptr that - indicates where we should stop searching. - @return a struct evbuffer_ptr whose 'pos' field has the offset of the - first occurrence of the string in the buffer after 'start'. The 'pos' - field of the result is -1 if the string was not found. - */ -EVENT2_EXPORT_SYMBOL -struct evbuffer_ptr evbuffer_search_range(struct evbuffer *buffer, const char *what, size_t len, const struct evbuffer_ptr *start, const struct evbuffer_ptr *end); - -/** - Defines how to adjust an evbuffer_ptr by evbuffer_ptr_set() - - @see evbuffer_ptr_set() */ -enum evbuffer_ptr_how { - /** Sets the pointer to the position; can be called on with an - uninitialized evbuffer_ptr. */ - EVBUFFER_PTR_SET, - /** Advances the pointer by adding to the current position. */ - EVBUFFER_PTR_ADD -}; - -/** - Sets the search pointer in the buffer to position. - - There are two ways to use this function: you can call - evbuffer_ptr_set(buf, &pos, N, EVBUFFER_PTR_SET) - to move 'pos' to a position 'N' bytes after the start of the buffer, or - evbuffer_ptr_set(buf, &pos, N, EVBUFFER_PTR_ADD) - to move 'pos' forward by 'N' bytes. - - If evbuffer_ptr is not initialized, this function can only be called - with EVBUFFER_PTR_SET. - - An evbuffer_ptr can represent any position from the start of the buffer to - a position immediately after the end of the buffer. - - @param buffer the evbuffer to be search - @param ptr a pointer to a struct evbuffer_ptr - @param position the position at which to start the next search - @param how determines how the pointer should be manipulated. - @returns 0 on success or -1 otherwise -*/ -EVENT2_EXPORT_SYMBOL -int -evbuffer_ptr_set(struct evbuffer *buffer, struct evbuffer_ptr *ptr, - size_t position, enum evbuffer_ptr_how how); - -/** - Search for an end-of-line string within an evbuffer. - - @param buffer the evbuffer to be searched - @param start NULL or a pointer to a valid struct evbuffer_ptr to start - searching at. - @param eol_len_out If non-NULL, the pointed-to value will be set to - the length of the end-of-line string. - @param eol_style The kind of EOL to look for; see evbuffer_readln() for - more information - @return a struct evbuffer_ptr whose 'pos' field has the offset of the - first occurrence EOL in the buffer after 'start'. The 'pos' - field of the result is -1 if the string was not found. - */ -EVENT2_EXPORT_SYMBOL -struct evbuffer_ptr evbuffer_search_eol(struct evbuffer *buffer, - struct evbuffer_ptr *start, size_t *eol_len_out, - enum evbuffer_eol_style eol_style); - -/** Function to peek at data inside an evbuffer without removing it or - copying it out. - - Pointers to the data are returned by filling the 'vec_out' array - with pointers to one or more extents of data inside the buffer. - - The total data in the extents that you get back may be more than - you requested (if there is more data last extent than you asked - for), or less (if you do not provide enough evbuffer_iovecs, or if - the buffer does not have as much data as you asked to see). - - @param buffer the evbuffer to peek into, - @param len the number of bytes to try to peek. If len is negative, we - will try to fill as much of vec_out as we can. If len is negative - and vec_out is not provided, we return the number of evbuffer_iovecs - that would be needed to get all the data in the buffer. - @param start_at an evbuffer_ptr indicating the point at which we - should start looking for data. NULL means, "At the start of the - buffer." - @param vec_out an array of evbuffer_iovec - @param n_vec the length of vec_out. If 0, we only count how many - extents would be necessary to point to the requested amount of - data. - @return The number of extents needed. This may be less than n_vec - if we didn't need all the evbuffer_iovecs we were given, or more - than n_vec if we would need more to return all the data that was - requested. - */ -EVENT2_EXPORT_SYMBOL -int evbuffer_peek(struct evbuffer *buffer, ev_ssize_t len, - struct evbuffer_ptr *start_at, - struct evbuffer_iovec *vec_out, int n_vec); - - -/** Structure passed to an evbuffer_cb_func evbuffer callback - - @see evbuffer_cb_func, evbuffer_add_cb() - */ -struct evbuffer_cb_info { - /** The number of bytes in this evbuffer when callbacks were last - * invoked. */ - size_t orig_size; - /** The number of bytes added since callbacks were last invoked. */ - size_t n_added; - /** The number of bytes removed since callbacks were last invoked. */ - size_t n_deleted; -}; - -/** Type definition for a callback that is invoked whenever data is added or - removed from an evbuffer. - - An evbuffer may have one or more callbacks set at a time. The order - in which they are executed is undefined. - - A callback function may add more callbacks, or remove itself from the - list of callbacks, or add or remove data from the buffer. It may not - remove another callback from the list. - - If a callback adds or removes data from the buffer or from another - buffer, this can cause a recursive invocation of your callback or - other callbacks. If you ask for an infinite loop, you might just get - one: watch out! - - @param buffer the buffer whose size has changed - @param info a structure describing how the buffer changed. - @param arg a pointer to user data -*/ -typedef void (*evbuffer_cb_func)(struct evbuffer *buffer, const struct evbuffer_cb_info *info, void *arg); - -struct evbuffer_cb_entry; -/** Add a new callback to an evbuffer. - - Subsequent calls to evbuffer_add_cb() add new callbacks. To remove this - callback, call evbuffer_remove_cb or evbuffer_remove_cb_entry. - - @param buffer the evbuffer to be monitored - @param cb the callback function to invoke when the evbuffer is modified, - or NULL to remove all callbacks. - @param cbarg an argument to be provided to the callback function - @return a handle to the callback on success, or NULL on failure. - */ -EVENT2_EXPORT_SYMBOL -struct evbuffer_cb_entry *evbuffer_add_cb(struct evbuffer *buffer, evbuffer_cb_func cb, void *cbarg); - -/** Remove a callback from an evbuffer, given a handle returned from - evbuffer_add_cb. - - Calling this function invalidates the handle. - - @return 0 if a callback was removed, or -1 if no matching callback was - found. - */ -EVENT2_EXPORT_SYMBOL -int evbuffer_remove_cb_entry(struct evbuffer *buffer, - struct evbuffer_cb_entry *ent); - -/** Remove a callback from an evbuffer, given the function and argument - used to add it. - - @return 0 if a callback was removed, or -1 if no matching callback was - found. - */ -EVENT2_EXPORT_SYMBOL -int evbuffer_remove_cb(struct evbuffer *buffer, evbuffer_cb_func cb, void *cbarg); - -/** If this flag is not set, then a callback is temporarily disabled, and - * should not be invoked. - * - * @see evbuffer_cb_set_flags(), evbuffer_cb_clear_flags() - */ -#define EVBUFFER_CB_ENABLED 1 - -/** Change the flags that are set for a callback on a buffer by adding more. - - @param buffer the evbuffer that the callback is watching. - @param cb the callback whose status we want to change. - @param flags EVBUFFER_CB_ENABLED to re-enable the callback. - @return 0 on success, -1 on failure. - */ -EVENT2_EXPORT_SYMBOL -int evbuffer_cb_set_flags(struct evbuffer *buffer, - struct evbuffer_cb_entry *cb, ev_uint32_t flags); - -/** Change the flags that are set for a callback on a buffer by removing some - - @param buffer the evbuffer that the callback is watching. - @param cb the callback whose status we want to change. - @param flags EVBUFFER_CB_ENABLED to disable the callback. - @return 0 on success, -1 on failure. - */ -EVENT2_EXPORT_SYMBOL -int evbuffer_cb_clear_flags(struct evbuffer *buffer, - struct evbuffer_cb_entry *cb, ev_uint32_t flags); - -#if 0 -/** Postpone calling a given callback until unsuspend is called later. - - This is different from disabling the callback, since the callback will get - invoked later if the buffer size changes between now and when we unsuspend - it. - - @param the buffer that the callback is watching. - @param cb the callback we want to suspend. - */ -EVENT2_EXPORT_SYMBOL -void evbuffer_cb_suspend(struct evbuffer *buffer, struct evbuffer_cb_entry *cb); -/** Stop postponing a callback that we postponed with evbuffer_cb_suspend. - - If data was added to or removed from the buffer while the callback was - suspended, the callback will get called once now. - - @param the buffer that the callback is watching. - @param cb the callback we want to stop suspending. - */ -EVENT2_EXPORT_SYMBOL -void evbuffer_cb_unsuspend(struct evbuffer *buffer, struct evbuffer_cb_entry *cb); -#endif - -/** - Makes the data at the beginning of an evbuffer contiguous. - - @param buf the evbuffer to make contiguous - @param size the number of bytes to make contiguous, or -1 to make the - entire buffer contiguous. - @return a pointer to the contiguous memory array, or NULL if param size - requested more data than is present in the buffer. -*/ - -EVENT2_EXPORT_SYMBOL -unsigned char *evbuffer_pullup(struct evbuffer *buf, ev_ssize_t size); - -/** - Prepends data to the beginning of the evbuffer - - @param buf the evbuffer to which to prepend data - @param data a pointer to the memory to prepend - @param size the number of bytes to prepend - @return 0 if successful, or -1 otherwise -*/ - -EVENT2_EXPORT_SYMBOL -int evbuffer_prepend(struct evbuffer *buf, const void *data, size_t size); - -/** - Prepends all data from the src evbuffer to the beginning of the dst - evbuffer. - - @param dst the evbuffer to which to prepend data - @param src the evbuffer to prepend; it will be emptied as a result - @return 0 if successful, or -1 otherwise -*/ -EVENT2_EXPORT_SYMBOL -int evbuffer_prepend_buffer(struct evbuffer *dst, struct evbuffer* src); - -/** - Prevent calls that modify an evbuffer from succeeding. A buffer may - frozen at the front, at the back, or at both the front and the back. - - If the front of a buffer is frozen, operations that drain data from - the front of the buffer, or that prepend data to the buffer, will - fail until it is unfrozen. If the back a buffer is frozen, operations - that append data from the buffer will fail until it is unfrozen. - - @param buf The buffer to freeze - @param at_front If true, we freeze the front of the buffer. If false, - we freeze the back. - @return 0 on success, -1 on failure. -*/ -EVENT2_EXPORT_SYMBOL -int evbuffer_freeze(struct evbuffer *buf, int at_front); -/** - Re-enable calls that modify an evbuffer. - - @param buf The buffer to un-freeze - @param at_front If true, we unfreeze the front of the buffer. If false, - we unfreeze the back. - @return 0 on success, -1 on failure. - */ -EVENT2_EXPORT_SYMBOL -int evbuffer_unfreeze(struct evbuffer *buf, int at_front); - -struct event_base; -/** - Force all the callbacks on an evbuffer to be run, not immediately after - the evbuffer is altered, but instead from inside the event loop. - - This can be used to serialize all the callbacks to a single thread - of execution. - */ -EVENT2_EXPORT_SYMBOL -int evbuffer_defer_callbacks(struct evbuffer *buffer, struct event_base *base); - -/** - Append data from 1 or more iovec's to an evbuffer - - Calculates the number of bytes needed for an iovec structure and guarantees - all data will fit into a single chain. Can be used in lieu of functionality - which calls evbuffer_add() constantly before being used to increase - performance. - - @param buffer the destination buffer - @param vec the source iovec - @param n_vec the number of iovec structures. - @return the number of bytes successfully written to the output buffer. -*/ -EVENT2_EXPORT_SYMBOL -size_t evbuffer_add_iovec(struct evbuffer * buffer, struct evbuffer_iovec * vec, int n_vec); - -#ifdef __cplusplus -} -#endif - -#endif /* EVENT2_BUFFER_H_INCLUDED_ */ diff --git a/cache/include/libevent2/event2/buffer_compat.h b/cache/include/libevent2/event2/buffer_compat.h deleted file mode 100644 index 24f828c..0000000 --- a/cache/include/libevent2/event2/buffer_compat.h +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef EVENT2_BUFFER_COMPAT_H_INCLUDED_ -#define EVENT2_BUFFER_COMPAT_H_INCLUDED_ - -#include - -/** @file event2/buffer_compat.h - - Obsolete and deprecated versions of the functions in buffer.h: provided - only for backward compatibility. - */ - - -/** - Obsolete alias for evbuffer_readln(buffer, NULL, EVBUFFER_EOL_ANY). - - @deprecated This function is deprecated because its behavior is not correct - for almost any protocol, and also because it's wholly subsumed by - evbuffer_readln(). - - @param buffer the evbuffer to read from - @return pointer to a single line, or NULL if an error occurred - -*/ -EVENT2_EXPORT_SYMBOL -char *evbuffer_readline(struct evbuffer *buffer); - -/** Type definition for a callback that is invoked whenever data is added or - removed from an evbuffer. - - An evbuffer may have one or more callbacks set at a time. The order - in which they are executed is undefined. - - A callback function may add more callbacks, or remove itself from the - list of callbacks, or add or remove data from the buffer. It may not - remove another callback from the list. - - If a callback adds or removes data from the buffer or from another - buffer, this can cause a recursive invocation of your callback or - other callbacks. If you ask for an infinite loop, you might just get - one: watch out! - - @param buffer the buffer whose size has changed - @param old_len the previous length of the buffer - @param new_len the current length of the buffer - @param arg a pointer to user data -*/ -typedef void (*evbuffer_cb)(struct evbuffer *buffer, size_t old_len, size_t new_len, void *arg); - -/** - Replace all callbacks on an evbuffer with a single new callback, or - remove them. - - Subsequent calls to evbuffer_setcb() replace callbacks set by previous - calls. Setting the callback to NULL removes any previously set callback. - - @deprecated This function is deprecated because it clears all previous - callbacks set on the evbuffer, which can cause confusing behavior if - multiple parts of the code all want to add their own callbacks on a - buffer. Instead, use evbuffer_add(), evbuffer_del(), and - evbuffer_setflags() to manage your own evbuffer callbacks without - interfering with callbacks set by others. - - @param buffer the evbuffer to be monitored - @param cb the callback function to invoke when the evbuffer is modified, - or NULL to remove all callbacks. - @param cbarg an argument to be provided to the callback function - */ -EVENT2_EXPORT_SYMBOL -void evbuffer_setcb(struct evbuffer *buffer, evbuffer_cb cb, void *cbarg); - - -/** - Find a string within an evbuffer. - - @param buffer the evbuffer to be searched - @param what the string to be searched for - @param len the length of the search string - @return a pointer to the beginning of the search string, or NULL if the search failed. - */ -EVENT2_EXPORT_SYMBOL -unsigned char *evbuffer_find(struct evbuffer *buffer, const unsigned char *what, size_t len); - -/** deprecated in favor of calling the functions directly */ -#define EVBUFFER_LENGTH(x) evbuffer_get_length(x) -/** deprecated in favor of calling the functions directly */ -#define EVBUFFER_DATA(x) evbuffer_pullup((x), -1) - -#endif - diff --git a/cache/include/libevent2/event2/bufferevent.h b/cache/include/libevent2/event2/bufferevent.h deleted file mode 100644 index 825918e..0000000 --- a/cache/include/libevent2/event2/bufferevent.h +++ /dev/null @@ -1,1021 +0,0 @@ -/* - * Copyright (c) 2000-2007 Niels Provos - * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef EVENT2_BUFFEREVENT_H_INCLUDED_ -#define EVENT2_BUFFEREVENT_H_INCLUDED_ - -/** - @file event2/bufferevent.h - - Functions for buffering data for network sending or receiving. Bufferevents - are higher level than evbuffers: each has an underlying evbuffer for reading - and one for writing, and callbacks that are invoked under certain - circumstances. - - A bufferevent provides input and output buffers that get filled and - drained automatically. The user of a bufferevent no longer deals - directly with the I/O, but instead is reading from input and writing - to output buffers. - - Once initialized, the bufferevent structure can be used repeatedly - with bufferevent_enable() and bufferevent_disable(). - - When reading is enabled, the bufferevent will try to read from the - file descriptor onto its input buffer, and call the read callback. - When writing is enabled, the bufferevent will try to write data onto its - file descriptor when the output buffer has enough data, and call the write - callback when the output buffer is sufficiently drained. - - Bufferevents come in several flavors, including: - -
-
Socket-based bufferevents
-
A bufferevent that reads and writes data onto a network - socket. Created with bufferevent_socket_new().
- -
Paired bufferevents
-
A pair of bufferevents that send and receive data to one - another without touching the network. Created with - bufferevent_pair_new().
- -
Filtering bufferevents
-
A bufferevent that transforms data, and sends or receives it - over another underlying bufferevent. Created with - bufferevent_filter_new().
- -
SSL-backed bufferevents
-
A bufferevent that uses the openssl library to send and - receive data over an encrypted connection. Created with - bufferevent_openssl_socket_new() or - bufferevent_openssl_filter_new().
-
- */ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#ifdef EVENT__HAVE_SYS_TYPES_H -#include -#endif -#ifdef EVENT__HAVE_SYS_TIME_H -#include -#endif - -/* For int types. */ -#include - -/** @name Bufferevent event codes - - These flags are passed as arguments to a bufferevent's event callback. - - @{ -*/ -#define BEV_EVENT_READING 0x01 /**< error encountered while reading */ -#define BEV_EVENT_WRITING 0x02 /**< error encountered while writing */ -#define BEV_EVENT_EOF 0x10 /**< eof file reached */ -#define BEV_EVENT_ERROR 0x20 /**< unrecoverable error encountered */ -#define BEV_EVENT_TIMEOUT 0x40 /**< user-specified timeout reached */ -#define BEV_EVENT_CONNECTED 0x80 /**< connect operation finished. */ -/**@}*/ - -/** - An opaque type for handling buffered IO - - @see event2/bufferevent.h - */ -struct bufferevent -#ifdef EVENT_IN_DOXYGEN_ -{} -#endif -; -struct event_base; -struct evbuffer; -struct sockaddr; - -/** - A read or write callback for a bufferevent. - - The read callback is triggered when new data arrives in the input - buffer and the amount of readable data exceed the low watermark - which is 0 by default. - - The write callback is triggered if the write buffer has been - exhausted or fell below its low watermark. - - @param bev the bufferevent that triggered the callback - @param ctx the user-specified context for this bufferevent - */ -typedef void (*bufferevent_data_cb)(struct bufferevent *bev, void *ctx); - -/** - An event/error callback for a bufferevent. - - The event callback is triggered if either an EOF condition or another - unrecoverable error was encountered. - - For bufferevents with deferred callbacks, this is a bitwise OR of all errors - that have happened on the bufferevent since the last callback invocation. - - @param bev the bufferevent for which the error condition was reached - @param what a conjunction of flags: BEV_EVENT_READING or BEV_EVENT_WRITING - to indicate if the error was encountered on the read or write path, - and one of the following flags: BEV_EVENT_EOF, BEV_EVENT_ERROR, - BEV_EVENT_TIMEOUT, BEV_EVENT_CONNECTED. - - @param ctx the user-specified context for this bufferevent -*/ -typedef void (*bufferevent_event_cb)(struct bufferevent *bev, short what, void *ctx); - -/** Options that can be specified when creating a bufferevent */ -enum bufferevent_options { - /** If set, we close the underlying file - * descriptor/bufferevent/whatever when this bufferevent is freed. */ - BEV_OPT_CLOSE_ON_FREE = (1<<0), - - /** If set, and threading is enabled, operations on this bufferevent - * are protected by a lock */ - BEV_OPT_THREADSAFE = (1<<1), - - /** If set, callbacks are run deferred in the event loop. */ - BEV_OPT_DEFER_CALLBACKS = (1<<2), - - /** If set, callbacks are executed without locks being held on the - * bufferevent. This option currently requires that - * BEV_OPT_DEFER_CALLBACKS also be set; a future version of Libevent - * might remove the requirement.*/ - BEV_OPT_UNLOCK_CALLBACKS = (1<<3) -}; - -/** - Create a new socket bufferevent over an existing socket. - - @param base the event base to associate with the new bufferevent. - @param fd the file descriptor from which data is read and written to. - This file descriptor is not allowed to be a pipe(2). - It is safe to set the fd to -1, so long as you later - set it with bufferevent_setfd or bufferevent_socket_connect(). - @param options Zero or more BEV_OPT_* flags - @return a pointer to a newly allocated bufferevent struct, or NULL if an - error occurred - @see bufferevent_free() - */ -EVENT2_EXPORT_SYMBOL -struct bufferevent *bufferevent_socket_new(struct event_base *base, evutil_socket_t fd, int options); - -/** - Launch a connect() attempt with a socket-based bufferevent. - - When the connect succeeds, the eventcb will be invoked with - BEV_EVENT_CONNECTED set. - - If the bufferevent does not already have a socket set, we allocate a new - socket here and make it nonblocking before we begin. - - If no address is provided, we assume that the socket is already connecting, - and configure the bufferevent so that a BEV_EVENT_CONNECTED event will be - yielded when it is done connecting. - - @param bufev an existing bufferevent allocated with - bufferevent_socket_new(). - @param addr the address we should connect to - @param socklen The length of the address - @return 0 on success, -1 on failure. - */ -EVENT2_EXPORT_SYMBOL -int bufferevent_socket_connect(struct bufferevent *, const struct sockaddr *, int); - -struct evdns_base; -/** - Resolve the hostname 'hostname' and connect to it as with - bufferevent_socket_connect(). - - @param bufev An existing bufferevent allocated with bufferevent_socket_new() - @param evdns_base Optionally, an evdns_base to use for resolving hostnames - asynchronously. May be set to NULL for a blocking resolve. - @param family A preferred address family to resolve addresses to, or - AF_UNSPEC for no preference. Only AF_INET, AF_INET6, and AF_UNSPEC are - supported. - @param hostname The hostname to resolve; see below for notes on recognized - formats - @param port The port to connect to on the resolved address. - @return 0 if successful, -1 on failure. - - Recognized hostname formats are: - - www.example.com (hostname) - 1.2.3.4 (ipv4address) - ::1 (ipv6address) - [::1] ([ipv6address]) - - Performance note: If you do not provide an evdns_base, this function - may block while it waits for a DNS response. This is probably not - what you want. - */ -EVENT2_EXPORT_SYMBOL -int bufferevent_socket_connect_hostname(struct bufferevent *, - struct evdns_base *, int, const char *, int); - -/** - Return the error code for the last failed DNS lookup attempt made by - bufferevent_socket_connect_hostname(). - - @param bev The bufferevent object. - @return DNS error code. - @see evutil_gai_strerror() -*/ -EVENT2_EXPORT_SYMBOL -int bufferevent_socket_get_dns_error(struct bufferevent *bev); - -/** - Assign a bufferevent to a specific event_base. - - NOTE that only socket bufferevents support this function. - - @param base an event_base returned by event_init() - @param bufev a bufferevent struct returned by bufferevent_new() - or bufferevent_socket_new() - @return 0 if successful, or -1 if an error occurred - @see bufferevent_new() - */ -EVENT2_EXPORT_SYMBOL -int bufferevent_base_set(struct event_base *base, struct bufferevent *bufev); - -/** - Return the event_base used by a bufferevent -*/ -EVENT2_EXPORT_SYMBOL -struct event_base *bufferevent_get_base(struct bufferevent *bev); - -/** - Assign a priority to a bufferevent. - - Only supported for socket bufferevents. - - @param bufev a bufferevent struct - @param pri the priority to be assigned - @return 0 if successful, or -1 if an error occurred - */ -EVENT2_EXPORT_SYMBOL -int bufferevent_priority_set(struct bufferevent *bufev, int pri); - -/** - Return the priority of a bufferevent. - - Only supported for socket bufferevents - */ -EVENT2_EXPORT_SYMBOL -int bufferevent_get_priority(const struct bufferevent *bufev); - -/** - Deallocate the storage associated with a bufferevent structure. - - If there is pending data to write on the bufferevent, it probably won't be - flushed before the bufferevent is freed. - - @param bufev the bufferevent structure to be freed. - */ -EVENT2_EXPORT_SYMBOL -void bufferevent_free(struct bufferevent *bufev); - - -/** - Changes the callbacks for a bufferevent. - - @param bufev the bufferevent object for which to change callbacks - @param readcb callback to invoke when there is data to be read, or NULL if - no callback is desired - @param writecb callback to invoke when the file descriptor is ready for - writing, or NULL if no callback is desired - @param eventcb callback to invoke when there is an event on the file - descriptor - @param cbarg an argument that will be supplied to each of the callbacks - (readcb, writecb, and errorcb) - @see bufferevent_new() - */ -EVENT2_EXPORT_SYMBOL -void bufferevent_setcb(struct bufferevent *bufev, - bufferevent_data_cb readcb, bufferevent_data_cb writecb, - bufferevent_event_cb eventcb, void *cbarg); - -/** - Retrieves the callbacks for a bufferevent. - - @param bufev the bufferevent to examine. - @param readcb_ptr if readcb_ptr is nonnull, *readcb_ptr is set to the current - read callback for the bufferevent. - @param writecb_ptr if writecb_ptr is nonnull, *writecb_ptr is set to the - current write callback for the bufferevent. - @param eventcb_ptr if eventcb_ptr is nonnull, *eventcb_ptr is set to the - current event callback for the bufferevent. - @param cbarg_ptr if cbarg_ptr is nonnull, *cbarg_ptr is set to the current - callback argument for the bufferevent. - @see buffervent_setcb() -*/ -EVENT2_EXPORT_SYMBOL -void bufferevent_getcb(struct bufferevent *bufev, - bufferevent_data_cb *readcb_ptr, - bufferevent_data_cb *writecb_ptr, - bufferevent_event_cb *eventcb_ptr, - void **cbarg_ptr); - -/** - Changes the file descriptor on which the bufferevent operates. - Not supported for all bufferevent types. - - @param bufev the bufferevent object for which to change the file descriptor - @param fd the file descriptor to operate on -*/ -EVENT2_EXPORT_SYMBOL -int bufferevent_setfd(struct bufferevent *bufev, evutil_socket_t fd); - -/** - Returns the file descriptor associated with a bufferevent, or -1 if - no file descriptor is associated with the bufferevent. - */ -EVENT2_EXPORT_SYMBOL -evutil_socket_t bufferevent_getfd(struct bufferevent *bufev); - -/** - Returns the underlying bufferevent associated with a bufferevent (if - the bufferevent is a wrapper), or NULL if there is no underlying bufferevent. - */ -EVENT2_EXPORT_SYMBOL -struct bufferevent *bufferevent_get_underlying(struct bufferevent *bufev); - -/** - Write data to a bufferevent buffer. - - The bufferevent_write() function can be used to write data to the file - descriptor. The data is appended to the output buffer and written to the - descriptor automatically as it becomes available for writing. - - @param bufev the bufferevent to be written to - @param data a pointer to the data to be written - @param size the length of the data, in bytes - @return 0 if successful, or -1 if an error occurred - @see bufferevent_write_buffer() - */ -EVENT2_EXPORT_SYMBOL -int bufferevent_write(struct bufferevent *bufev, - const void *data, size_t size); - - -/** - Write data from an evbuffer to a bufferevent buffer. The evbuffer is - being drained as a result. - - @param bufev the bufferevent to be written to - @param buf the evbuffer to be written - @return 0 if successful, or -1 if an error occurred - @see bufferevent_write() - */ -EVENT2_EXPORT_SYMBOL -int bufferevent_write_buffer(struct bufferevent *bufev, struct evbuffer *buf); - - -/** - Read data from a bufferevent buffer. - - The bufferevent_read() function is used to read data from the input buffer. - - @param bufev the bufferevent to be read from - @param data pointer to a buffer that will store the data - @param size the size of the data buffer, in bytes - @return the amount of data read, in bytes. - */ -EVENT2_EXPORT_SYMBOL -size_t bufferevent_read(struct bufferevent *bufev, void *data, size_t size); - -/** - Read data from a bufferevent buffer into an evbuffer. This avoids - memory copies. - - @param bufev the bufferevent to be read from - @param buf the evbuffer to which to add data - @return 0 if successful, or -1 if an error occurred. - */ -EVENT2_EXPORT_SYMBOL -int bufferevent_read_buffer(struct bufferevent *bufev, struct evbuffer *buf); - -/** - Returns the input buffer. - - The user MUST NOT set the callback on this buffer. - - @param bufev the bufferevent from which to get the evbuffer - @return the evbuffer object for the input buffer - */ - -EVENT2_EXPORT_SYMBOL -struct evbuffer *bufferevent_get_input(struct bufferevent *bufev); - -/** - Returns the output buffer. - - The user MUST NOT set the callback on this buffer. - - When filters are being used, the filters need to be manually - triggered if the output buffer was manipulated. - - @param bufev the bufferevent from which to get the evbuffer - @return the evbuffer object for the output buffer - */ - -EVENT2_EXPORT_SYMBOL -struct evbuffer *bufferevent_get_output(struct bufferevent *bufev); - -/** - Enable a bufferevent. - - @param bufev the bufferevent to be enabled - @param event any combination of EV_READ | EV_WRITE. - @return 0 if successful, or -1 if an error occurred - @see bufferevent_disable() - */ -EVENT2_EXPORT_SYMBOL -int bufferevent_enable(struct bufferevent *bufev, short event); - -/** - Disable a bufferevent. - - @param bufev the bufferevent to be disabled - @param event any combination of EV_READ | EV_WRITE. - @return 0 if successful, or -1 if an error occurred - @see bufferevent_enable() - */ -EVENT2_EXPORT_SYMBOL -int bufferevent_disable(struct bufferevent *bufev, short event); - -/** - Return the events that are enabled on a given bufferevent. - - @param bufev the bufferevent to inspect - @return A combination of EV_READ | EV_WRITE - */ -EVENT2_EXPORT_SYMBOL -short bufferevent_get_enabled(struct bufferevent *bufev); - -/** - Set the read and write timeout for a bufferevent. - - A bufferevent's timeout will fire the first time that the indicated - amount of time has elapsed since a successful read or write operation, - during which the bufferevent was trying to read or write. - - (In other words, if reading or writing is disabled, or if the - bufferevent's read or write operation has been suspended because - there's no data to write, or not enough banwidth, or so on, the - timeout isn't active. The timeout only becomes active when we we're - willing to actually read or write.) - - Calling bufferevent_enable or setting a timeout for a bufferevent - whose timeout is already pending resets its timeout. - - If the timeout elapses, the corresponding operation (EV_READ or - EV_WRITE) becomes disabled until you re-enable it again. The - bufferevent's event callback is called with the - BEV_EVENT_TIMEOUT|BEV_EVENT_READING or - BEV_EVENT_TIMEOUT|BEV_EVENT_WRITING. - - @param bufev the bufferevent to be modified - @param timeout_read the read timeout, or NULL - @param timeout_write the write timeout, or NULL - */ -EVENT2_EXPORT_SYMBOL -int bufferevent_set_timeouts(struct bufferevent *bufev, - const struct timeval *timeout_read, const struct timeval *timeout_write); - -/** - Sets the watermarks for read and write events. - - On input, a bufferevent does not invoke the user read callback unless - there is at least low watermark data in the buffer. If the read buffer - is beyond the high watermark, the bufferevent stops reading from the network. - - On output, the user write callback is invoked whenever the buffered data - falls below the low watermark. Filters that write to this bufev will try - not to write more bytes to this buffer than the high watermark would allow, - except when flushing. - - @param bufev the bufferevent to be modified - @param events EV_READ, EV_WRITE or both - @param lowmark the lower watermark to set - @param highmark the high watermark to set -*/ - -EVENT2_EXPORT_SYMBOL -void bufferevent_setwatermark(struct bufferevent *bufev, short events, - size_t lowmark, size_t highmark); - -/** - Retrieves the watermarks for read or write events. - Returns non-zero if events contains not only EV_READ or EV_WRITE. - Returns zero if events equal EV_READ or EV_WRITE - - @param bufev the bufferevent to be examined - @param events EV_READ or EV_WRITE - @param lowmark receives the lower watermark if not NULL - @param highmark receives the high watermark if not NULL -*/ -EVENT2_EXPORT_SYMBOL -int bufferevent_getwatermark(struct bufferevent *bufev, short events, - size_t *lowmark, size_t *highmark); - -/** - Acquire the lock on a bufferevent. Has no effect if locking was not - enabled with BEV_OPT_THREADSAFE. - */ -EVENT2_EXPORT_SYMBOL -void bufferevent_lock(struct bufferevent *bufev); - -/** - Release the lock on a bufferevent. Has no effect if locking was not - enabled with BEV_OPT_THREADSAFE. - */ -EVENT2_EXPORT_SYMBOL -void bufferevent_unlock(struct bufferevent *bufev); - - -/** - * Public interface to manually increase the reference count of a bufferevent - * this is useful in situations where a user may reference the bufferevent - * somewhere eles (unknown to libevent) - * - * @param bufev the bufferevent to increase the refcount on - * - */ -EVENT2_EXPORT_SYMBOL -void bufferevent_incref(struct bufferevent *bufev); - -/** - * Public interface to manually decrement the reference count of a bufferevent - * - * Warning: make sure you know what you're doing. This is mainly used in - * conjunction with bufferevent_incref(). This will free up all data associated - * with a bufferevent if the reference count hits 0. - * - * @param bufev the bufferevent to decrement the refcount on - * - * @return 1 if the bufferevent was freed, otherwise 0 (still referenced) - */ -EVENT2_EXPORT_SYMBOL -int bufferevent_decref(struct bufferevent *bufev); - -/** - Flags that can be passed into filters to let them know how to - deal with the incoming data. -*/ -enum bufferevent_flush_mode { - /** usually set when processing data */ - BEV_NORMAL = 0, - - /** want to checkpoint all data sent. */ - BEV_FLUSH = 1, - - /** encountered EOF on read or done sending data */ - BEV_FINISHED = 2 -}; - -/** - Triggers the bufferevent to produce more data if possible. - - @param bufev the bufferevent object - @param iotype either EV_READ or EV_WRITE or both. - @param mode either BEV_NORMAL or BEV_FLUSH or BEV_FINISHED - @return -1 on failure, 0 if no data was produces, 1 if data was produced - */ -EVENT2_EXPORT_SYMBOL -int bufferevent_flush(struct bufferevent *bufev, - short iotype, - enum bufferevent_flush_mode mode); - -/** - Flags for bufferevent_trigger(_event) that modify when and how to trigger - the callback. -*/ -enum bufferevent_trigger_options { - /** trigger the callback regardless of the watermarks */ - BEV_TRIG_IGNORE_WATERMARKS = (1<<16), - - /** defer even if the callbacks are not */ - BEV_TRIG_DEFER_CALLBACKS = BEV_OPT_DEFER_CALLBACKS - - /* (Note: for internal reasons, these need to be disjoint from - * bufferevent_options, except when they mean the same thing. */ -}; - -/** - Triggers bufferevent data callbacks. - - The function will honor watermarks unless options contain - BEV_TRIG_IGNORE_WATERMARKS. If the options contain BEV_OPT_DEFER_CALLBACKS, - the callbacks are deferred. - - @param bufev the bufferevent object - @param iotype either EV_READ or EV_WRITE or both. - @param options - */ -EVENT2_EXPORT_SYMBOL -void bufferevent_trigger(struct bufferevent *bufev, short iotype, - int options); - -/** - Triggers the bufferevent event callback. - - If the options contain BEV_OPT_DEFER_CALLBACKS, the callbacks are deferred. - - @param bufev the bufferevent object - @param what the flags to pass onto the event callback - @param options - */ -EVENT2_EXPORT_SYMBOL -void bufferevent_trigger_event(struct bufferevent *bufev, short what, - int options); - -/** - @name Filtering support - - @{ -*/ -/** - Values that filters can return. - */ -enum bufferevent_filter_result { - /** everything is okay */ - BEV_OK = 0, - - /** the filter needs to read more data before output */ - BEV_NEED_MORE = 1, - - /** the filter encountered a critical error, no further data - can be processed. */ - BEV_ERROR = 2 -}; - -/** A callback function to implement a filter for a bufferevent. - - @param src An evbuffer to drain data from. - @param dst An evbuffer to add data to. - @param limit A suggested upper bound of bytes to write to dst. - The filter may ignore this value, but doing so means that - it will overflow the high-water mark associated with dst. - -1 means "no limit". - @param mode Whether we should write data as may be convenient - (BEV_NORMAL), or flush as much data as we can (BEV_FLUSH), - or flush as much as we can, possibly including an end-of-stream - marker (BEV_FINISH). - @param ctx A user-supplied pointer. - - @return BEV_OK if we wrote some data; BEV_NEED_MORE if we can't - produce any more output until we get some input; and BEV_ERROR - on an error. - */ -typedef enum bufferevent_filter_result (*bufferevent_filter_cb)( - struct evbuffer *src, struct evbuffer *dst, ev_ssize_t dst_limit, - enum bufferevent_flush_mode mode, void *ctx); - -/** - Allocate a new filtering bufferevent on top of an existing bufferevent. - - @param underlying the underlying bufferevent. - @param input_filter The filter to apply to data we read from the underlying - bufferevent - @param output_filter The filer to apply to data we write to the underlying - bufferevent - @param options A bitfield of bufferevent options. - @param free_context A function to use to free the filter context when - this bufferevent is freed. - @param ctx A context pointer to pass to the filter functions. - */ -EVENT2_EXPORT_SYMBOL -struct bufferevent * -bufferevent_filter_new(struct bufferevent *underlying, - bufferevent_filter_cb input_filter, - bufferevent_filter_cb output_filter, - int options, - void (*free_context)(void *), - void *ctx); -/**@}*/ - -/** - Allocate a pair of linked bufferevents. The bufferevents behave as would - two bufferevent_sock instances connected to opposite ends of a - socketpair(), except that no internal socketpair is allocated. - - @param base The event base to associate with the socketpair. - @param options A set of options for this bufferevent - @param pair A pointer to an array to hold the two new bufferevent objects. - @return 0 on success, -1 on failure. - */ -EVENT2_EXPORT_SYMBOL -int bufferevent_pair_new(struct event_base *base, int options, - struct bufferevent *pair[2]); - -/** - Given one bufferevent returned by bufferevent_pair_new(), returns the - other one if it still exists. Otherwise returns NULL. - */ -EVENT2_EXPORT_SYMBOL -struct bufferevent *bufferevent_pair_get_partner(struct bufferevent *bev); - -/** - Abstract type used to configure rate-limiting on a bufferevent or a group - of bufferevents. - */ -struct ev_token_bucket_cfg; - -/** - A group of bufferevents which are configured to respect the same rate - limit. -*/ -struct bufferevent_rate_limit_group; - -/** Maximum configurable rate- or burst-limit. */ -#define EV_RATE_LIMIT_MAX EV_SSIZE_MAX - -/** - Initialize and return a new object to configure the rate-limiting behavior - of bufferevents. - - @param read_rate The maximum number of bytes to read per tick on - average. - @param read_burst The maximum number of bytes to read in any single tick. - @param write_rate The maximum number of bytes to write per tick on - average. - @param write_burst The maximum number of bytes to write in any single tick. - @param tick_len The length of a single tick. Defaults to one second. - Any fractions of a millisecond are ignored. - - Note that all rate-limits hare are currently best-effort: future versions - of Libevent may implement them more tightly. - */ -EVENT2_EXPORT_SYMBOL -struct ev_token_bucket_cfg *ev_token_bucket_cfg_new( - size_t read_rate, size_t read_burst, - size_t write_rate, size_t write_burst, - const struct timeval *tick_len); - -/** Free all storage held in 'cfg'. - - Note: 'cfg' is not currently reference-counted; it is not safe to free it - until no bufferevent is using it. - */ -EVENT2_EXPORT_SYMBOL -void ev_token_bucket_cfg_free(struct ev_token_bucket_cfg *cfg); - -/** - Set the rate-limit of a the bufferevent 'bev' to the one specified in - 'cfg'. If 'cfg' is NULL, disable any per-bufferevent rate-limiting on - 'bev'. - - Note that only some bufferevent types currently respect rate-limiting. - They are: socket-based bufferevents (normal and IOCP-based), and SSL-based - bufferevents. - - Return 0 on sucess, -1 on failure. - */ -EVENT2_EXPORT_SYMBOL -int bufferevent_set_rate_limit(struct bufferevent *bev, - struct ev_token_bucket_cfg *cfg); - -/** - Create a new rate-limit group for bufferevents. A rate-limit group - constrains the maximum number of bytes sent and received, in toto, - by all of its bufferevents. - - @param base An event_base to run any necessary timeouts for the group. - Note that all bufferevents in the group do not necessarily need to share - this event_base. - @param cfg The rate-limit for this group. - - Note that all rate-limits hare are currently best-effort: future versions - of Libevent may implement them more tightly. - - Note also that only some bufferevent types currently respect rate-limiting. - They are: socket-based bufferevents (normal and IOCP-based), and SSL-based - bufferevents. - */ -EVENT2_EXPORT_SYMBOL -struct bufferevent_rate_limit_group *bufferevent_rate_limit_group_new( - struct event_base *base, - const struct ev_token_bucket_cfg *cfg); -/** - Change the rate-limiting settings for a given rate-limiting group. - - Return 0 on success, -1 on failure. -*/ -EVENT2_EXPORT_SYMBOL -int bufferevent_rate_limit_group_set_cfg( - struct bufferevent_rate_limit_group *, - const struct ev_token_bucket_cfg *); - -/** - Change the smallest quantum we're willing to allocate to any single - bufferevent in a group for reading or writing at a time. - - The rationale is that, because of TCP/IP protocol overheads and kernel - behavior, if a rate-limiting group is so tight on bandwidth that you're - only willing to send 1 byte per tick per bufferevent, you might instead - want to batch up the reads and writes so that you send N bytes per - 1/N of the bufferevents (chosen at random) each tick, so you still wind - up send 1 byte per tick per bufferevent on average, but you don't send - so many tiny packets. - - The default min-share is currently 64 bytes. - - Returns 0 on success, -1 on faulre. - */ -EVENT2_EXPORT_SYMBOL -int bufferevent_rate_limit_group_set_min_share( - struct bufferevent_rate_limit_group *, size_t); - -/** - Free a rate-limiting group. The group must have no members when - this function is called. -*/ -EVENT2_EXPORT_SYMBOL -void bufferevent_rate_limit_group_free(struct bufferevent_rate_limit_group *); - -/** - Add 'bev' to the list of bufferevents whose aggregate reading and writing - is restricted by 'g'. If 'g' is NULL, remove 'bev' from its current group. - - A bufferevent may belong to no more than one rate-limit group at a time. - If 'bev' is already a member of a group, it will be removed from its old - group before being added to 'g'. - - Return 0 on success and -1 on failure. - */ -EVENT2_EXPORT_SYMBOL -int bufferevent_add_to_rate_limit_group(struct bufferevent *bev, - struct bufferevent_rate_limit_group *g); - -/** Remove 'bev' from its current rate-limit group (if any). */ -EVENT2_EXPORT_SYMBOL -int bufferevent_remove_from_rate_limit_group(struct bufferevent *bev); - -/** - Set the size limit for single read operation. - - Set to 0 for a reasonable default. - - Return 0 on success and -1 on failure. - */ -EVENT2_EXPORT_SYMBOL -int bufferevent_set_max_single_read(struct bufferevent *bev, size_t size); - -/** - Set the size limit for single write operation. - - Set to 0 for a reasonable default. - - Return 0 on success and -1 on failure. - */ -EVENT2_EXPORT_SYMBOL -int bufferevent_set_max_single_write(struct bufferevent *bev, size_t size); - -/** Get the current size limit for single read operation. */ -EVENT2_EXPORT_SYMBOL -ev_ssize_t bufferevent_get_max_single_read(struct bufferevent *bev); - -/** Get the current size limit for single write operation. */ -EVENT2_EXPORT_SYMBOL -ev_ssize_t bufferevent_get_max_single_write(struct bufferevent *bev); - -/** - @name Rate limit inspection - - Return the current read or write bucket size for a bufferevent. - If it is not configured with a per-bufferevent ratelimit, return - EV_SSIZE_MAX. This function does not inspect the group limit, if any. - Note that it can return a negative value if the bufferevent has been - made to read or write more than its limit. - - @{ - */ -EVENT2_EXPORT_SYMBOL -ev_ssize_t bufferevent_get_read_limit(struct bufferevent *bev); -EVENT2_EXPORT_SYMBOL -ev_ssize_t bufferevent_get_write_limit(struct bufferevent *bev); -/*@}*/ - -EVENT2_EXPORT_SYMBOL -ev_ssize_t bufferevent_get_max_to_read(struct bufferevent *bev); -EVENT2_EXPORT_SYMBOL -ev_ssize_t bufferevent_get_max_to_write(struct bufferevent *bev); - -EVENT2_EXPORT_SYMBOL -const struct ev_token_bucket_cfg *bufferevent_get_token_bucket_cfg(const struct bufferevent * bev); - -/** - @name Group Rate limit inspection - - Return the read or write bucket size for a bufferevent rate limit - group. Note that it can return a negative value if bufferevents in - the group have been made to read or write more than their limits. - - @{ - */ -EVENT2_EXPORT_SYMBOL -ev_ssize_t bufferevent_rate_limit_group_get_read_limit( - struct bufferevent_rate_limit_group *); -EVENT2_EXPORT_SYMBOL -ev_ssize_t bufferevent_rate_limit_group_get_write_limit( - struct bufferevent_rate_limit_group *); -/*@}*/ - -/** - @name Rate limit manipulation - - Subtract a number of bytes from a bufferevent's read or write bucket. - The decrement value can be negative, if you want to manually refill - the bucket. If the change puts the bucket above or below zero, the - bufferevent will resume or suspend reading writing as appropriate. - These functions make no change in the buckets for the bufferevent's - group, if any. - - Returns 0 on success, -1 on internal error. - - @{ - */ -EVENT2_EXPORT_SYMBOL -int bufferevent_decrement_read_limit(struct bufferevent *bev, ev_ssize_t decr); -EVENT2_EXPORT_SYMBOL -int bufferevent_decrement_write_limit(struct bufferevent *bev, ev_ssize_t decr); -/*@}*/ - -/** - @name Group rate limit manipulation - - Subtract a number of bytes from a bufferevent rate-limiting group's - read or write bucket. The decrement value can be negative, if you - want to manually refill the bucket. If the change puts the bucket - above or below zero, the bufferevents in the group will resume or - suspend reading writing as appropriate. - - Returns 0 on success, -1 on internal error. - - @{ - */ -EVENT2_EXPORT_SYMBOL -int bufferevent_rate_limit_group_decrement_read( - struct bufferevent_rate_limit_group *, ev_ssize_t); -EVENT2_EXPORT_SYMBOL -int bufferevent_rate_limit_group_decrement_write( - struct bufferevent_rate_limit_group *, ev_ssize_t); -/*@}*/ - - -/** - * Inspect the total bytes read/written on a group. - * - * Set the variable pointed to by total_read_out to the total number of bytes - * ever read on grp, and the variable pointed to by total_written_out to the - * total number of bytes ever written on grp. */ -EVENT2_EXPORT_SYMBOL -void bufferevent_rate_limit_group_get_totals( - struct bufferevent_rate_limit_group *grp, - ev_uint64_t *total_read_out, ev_uint64_t *total_written_out); - -/** - * Reset the total bytes read/written on a group. - * - * Reset the number of bytes read or written on grp as given by - * bufferevent_rate_limit_group_reset_totals(). */ -EVENT2_EXPORT_SYMBOL -void -bufferevent_rate_limit_group_reset_totals( - struct bufferevent_rate_limit_group *grp); - -#ifdef __cplusplus -} -#endif - -#endif /* EVENT2_BUFFEREVENT_H_INCLUDED_ */ diff --git a/cache/include/libevent2/event2/bufferevent_compat.h b/cache/include/libevent2/event2/bufferevent_compat.h deleted file mode 100644 index 6548204..0000000 --- a/cache/include/libevent2/event2/bufferevent_compat.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright (c) 2007-2012 Niels Provos, Nick Mathewson - * Copyright (c) 2000-2007 Niels Provos - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef EVENT2_BUFFEREVENT_COMPAT_H_INCLUDED_ -#define EVENT2_BUFFEREVENT_COMPAT_H_INCLUDED_ - -#define evbuffercb bufferevent_data_cb -#define everrorcb bufferevent_event_cb - -/** - Create a new bufferevent for an fd. - - This function is deprecated. Use bufferevent_socket_new and - bufferevent_set_callbacks instead. - - Libevent provides an abstraction on top of the regular event callbacks. - This abstraction is called a buffered event. A buffered event provides - input and output buffers that get filled and drained automatically. The - user of a buffered event no longer deals directly with the I/O, but - instead is reading from input and writing to output buffers. - - Once initialized, the bufferevent structure can be used repeatedly with - bufferevent_enable() and bufferevent_disable(). - - When read enabled the bufferevent will try to read from the file descriptor - and call the read callback. The write callback is executed whenever the - output buffer is drained below the write low watermark, which is 0 by - default. - - If multiple bases are in use, bufferevent_base_set() must be called before - enabling the bufferevent for the first time. - - @deprecated This function is deprecated because it uses the current - event base, and as such can be error prone for multithreaded programs. - Use bufferevent_socket_new() instead. - - @param fd the file descriptor from which data is read and written to. - This file descriptor is not allowed to be a pipe(2). - @param readcb callback to invoke when there is data to be read, or NULL if - no callback is desired - @param writecb callback to invoke when the file descriptor is ready for - writing, or NULL if no callback is desired - @param errorcb callback to invoke when there is an error on the file - descriptor - @param cbarg an argument that will be supplied to each of the callbacks - (readcb, writecb, and errorcb) - @return a pointer to a newly allocated bufferevent struct, or NULL if an - error occurred - @see bufferevent_base_set(), bufferevent_free() - */ -struct bufferevent *bufferevent_new(evutil_socket_t fd, - evbuffercb readcb, evbuffercb writecb, everrorcb errorcb, void *cbarg); - - -/** - Set the read and write timeout for a buffered event. - - @param bufev the bufferevent to be modified - @param timeout_read the read timeout - @param timeout_write the write timeout - */ -void bufferevent_settimeout(struct bufferevent *bufev, - int timeout_read, int timeout_write); - -#define EVBUFFER_READ BEV_EVENT_READING -#define EVBUFFER_WRITE BEV_EVENT_WRITING -#define EVBUFFER_EOF BEV_EVENT_EOF -#define EVBUFFER_ERROR BEV_EVENT_ERROR -#define EVBUFFER_TIMEOUT BEV_EVENT_TIMEOUT - -/** macro for getting access to the input buffer of a bufferevent */ -#define EVBUFFER_INPUT(x) bufferevent_get_input(x) -/** macro for getting access to the output buffer of a bufferevent */ -#define EVBUFFER_OUTPUT(x) bufferevent_get_output(x) - -#endif diff --git a/cache/include/libevent2/event2/bufferevent_ssl.h b/cache/include/libevent2/event2/bufferevent_ssl.h deleted file mode 100644 index bf39b84..0000000 --- a/cache/include/libevent2/event2/bufferevent_ssl.h +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Copyright (c) 2009-2012 Niels Provos and Nick Mathewson - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef EVENT2_BUFFEREVENT_SSL_H_INCLUDED_ -#define EVENT2_BUFFEREVENT_SSL_H_INCLUDED_ - -/** @file event2/bufferevent_ssl.h - - OpenSSL support for bufferevents. - */ -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* This is what openssl's SSL objects are underneath. */ -struct ssl_st; - -/** - The state of an SSL object to be used when creating a new - SSL bufferevent. - */ -enum bufferevent_ssl_state { - BUFFEREVENT_SSL_OPEN = 0, - BUFFEREVENT_SSL_CONNECTING = 1, - BUFFEREVENT_SSL_ACCEPTING = 2 -}; - -#if defined(EVENT__HAVE_OPENSSL) || defined(EVENT_IN_DOXYGEN_) -/** - Create a new SSL bufferevent to send its data over another bufferevent. - - @param base An event_base to use to detect reading and writing. It - must also be the base for the underlying bufferevent. - @param underlying A socket to use for this SSL - @param ssl A SSL* object from openssl. - @param state The current state of the SSL connection - @param options One or more bufferevent_options - @return A new bufferevent on success, or NULL on failure -*/ -EVENT2_EXPORT_SYMBOL -struct bufferevent * -bufferevent_openssl_filter_new(struct event_base *base, - struct bufferevent *underlying, - struct ssl_st *ssl, - enum bufferevent_ssl_state state, - int options); - -/** - Create a new SSL bufferevent to send its data over an SSL * on a socket. - - @param base An event_base to use to detect reading and writing - @param fd A socket to use for this SSL - @param ssl A SSL* object from openssl. - @param state The current state of the SSL connection - @param options One or more bufferevent_options - @return A new bufferevent on success, or NULL on failure. -*/ -EVENT2_EXPORT_SYMBOL -struct bufferevent * -bufferevent_openssl_socket_new(struct event_base *base, - evutil_socket_t fd, - struct ssl_st *ssl, - enum bufferevent_ssl_state state, - int options); - -/** Control how to report dirty SSL shutdowns. - - If the peer (or the network, or an attacker) closes the TCP - connection before closing the SSL channel, and the protocol is SSL >= v3, - this is a "dirty" shutdown. If allow_dirty_shutdown is 0 (default), - this is reported as BEV_EVENT_ERROR. - - If instead allow_dirty_shutdown=1, a dirty shutdown is reported as - BEV_EVENT_EOF. - - (Note that if the protocol is < SSLv3, you will always receive - BEV_EVENT_EOF, since SSL 2 and earlier cannot distinguish a secure - connection close from a dirty one. This is one reason (among many) - not to use SSL 2.) -*/ - -EVENT2_EXPORT_SYMBOL -int bufferevent_openssl_get_allow_dirty_shutdown(struct bufferevent *bev); -EVENT2_EXPORT_SYMBOL -void bufferevent_openssl_set_allow_dirty_shutdown(struct bufferevent *bev, - int allow_dirty_shutdown); - -/** Return the underlying openssl SSL * object for an SSL bufferevent. */ -EVENT2_EXPORT_SYMBOL -struct ssl_st * -bufferevent_openssl_get_ssl(struct bufferevent *bufev); - -/** Tells a bufferevent to begin SSL renegotiation. */ -EVENT2_EXPORT_SYMBOL -int bufferevent_ssl_renegotiate(struct bufferevent *bev); - -/** Return the most recent OpenSSL error reported on an SSL bufferevent. */ -EVENT2_EXPORT_SYMBOL -unsigned long bufferevent_get_openssl_error(struct bufferevent *bev); - -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* EVENT2_BUFFEREVENT_SSL_H_INCLUDED_ */ diff --git a/cache/include/libevent2/event2/bufferevent_struct.h b/cache/include/libevent2/event2/bufferevent_struct.h deleted file mode 100644 index e84c082..0000000 --- a/cache/include/libevent2/event2/bufferevent_struct.h +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright (c) 2000-2007 Niels Provos - * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef EVENT2_BUFFEREVENT_STRUCT_H_INCLUDED_ -#define EVENT2_BUFFEREVENT_STRUCT_H_INCLUDED_ - -/** @file event2/bufferevent_struct.h - - Data structures for bufferevents. Using these structures may hurt forward - compatibility with later versions of Libevent: be careful! - - @deprecated Use of bufferevent_struct.h is completely deprecated; these - structures are only exposed for backward compatibility with programs - written before Libevent 2.0 that used them. - */ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#ifdef EVENT__HAVE_SYS_TYPES_H -#include -#endif -#ifdef EVENT__HAVE_SYS_TIME_H -#include -#endif - -/* For int types. */ -#include -/* For struct event */ -#include - -struct event_watermark { - size_t low; - size_t high; -}; - -/** - Shared implementation of a bufferevent. - - This type is exposed only because it was exposed in previous versions, - and some people's code may rely on manipulating it. Otherwise, you - should really not rely on the layout, size, or contents of this structure: - it is fairly volatile, and WILL change in future versions of the code. -**/ -struct bufferevent { - /** Event base for which this bufferevent was created. */ - struct event_base *ev_base; - /** Pointer to a table of function pointers to set up how this - bufferevent behaves. */ - const struct bufferevent_ops *be_ops; - - /** A read event that triggers when a timeout has happened or a socket - is ready to read data. Only used by some subtypes of - bufferevent. */ - struct event ev_read; - /** A write event that triggers when a timeout has happened or a socket - is ready to write data. Only used by some subtypes of - bufferevent. */ - struct event ev_write; - - /** An input buffer. Only the bufferevent is allowed to add data to - this buffer, though the user is allowed to drain it. */ - struct evbuffer *input; - - /** An input buffer. Only the bufferevent is allowed to drain data - from this buffer, though the user is allowed to add it. */ - struct evbuffer *output; - - struct event_watermark wm_read; - struct event_watermark wm_write; - - bufferevent_data_cb readcb; - bufferevent_data_cb writecb; - /* This should be called 'eventcb', but renaming it would break - * backward compatibility */ - bufferevent_event_cb errorcb; - void *cbarg; - - struct timeval timeout_read; - struct timeval timeout_write; - - /** Events that are currently enabled: currently EV_READ and EV_WRITE - are supported. */ - short enabled; -}; - -#ifdef __cplusplus -} -#endif - -#endif /* EVENT2_BUFFEREVENT_STRUCT_H_INCLUDED_ */ diff --git a/cache/include/libevent2/event2/dns.h b/cache/include/libevent2/event2/dns.h deleted file mode 100644 index 17cd86a..0000000 --- a/cache/include/libevent2/event2/dns.h +++ /dev/null @@ -1,717 +0,0 @@ -/* - * Copyright (c) 2006-2007 Niels Provos - * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * The original DNS code is due to Adam Langley with heavy - * modifications by Nick Mathewson. Adam put his DNS software in the - * public domain. You can find his original copyright below. Please, - * aware that the code as part of Libevent is governed by the 3-clause - * BSD license above. - * - * This software is Public Domain. To view a copy of the public domain dedication, - * visit http://creativecommons.org/licenses/publicdomain/ or send a letter to - * Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. - * - * I ask and expect, but do not require, that all derivative works contain an - * attribution similar to: - * Parts developed by Adam Langley - * - * You may wish to replace the word "Parts" with something else depending on - * the amount of original code. - * - * (Derivative works does not include programs which link against, run or include - * the source verbatim in their source distributions) - */ - -/** @file event2/dns.h - * - * Welcome, gentle reader - * - * Async DNS lookups are really a whole lot harder than they should be, - * mostly stemming from the fact that the libc resolver has never been - * very good at them. Before you use this library you should see if libc - * can do the job for you with the modern async call getaddrinfo_a - * (see http://www.imperialviolet.org/page25.html#e498). Otherwise, - * please continue. - * - * The library keeps track of the state of nameservers and will avoid - * them when they go down. Otherwise it will round robin between them. - * - * Quick start guide: - * #include "evdns.h" - * void callback(int result, char type, int count, int ttl, - * void *addresses, void *arg); - * evdns_resolv_conf_parse(DNS_OPTIONS_ALL, "/etc/resolv.conf"); - * evdns_resolve("www.hostname.com", 0, callback, NULL); - * - * When the lookup is complete the callback function is called. The - * first argument will be one of the DNS_ERR_* defines in evdns.h. - * Hopefully it will be DNS_ERR_NONE, in which case type will be - * DNS_IPv4_A, count will be the number of IP addresses, ttl is the time - * which the data can be cached for (in seconds), addresses will point - * to an array of uint32_t's and arg will be whatever you passed to - * evdns_resolve. - * - * Searching: - * - * In order for this library to be a good replacement for glibc's resolver it - * supports searching. This involves setting a list of default domains, in - * which names will be queried for. The number of dots in the query name - * determines the order in which this list is used. - * - * Searching appears to be a single lookup from the point of view of the API, - * although many DNS queries may be generated from a single call to - * evdns_resolve. Searching can also drastically slow down the resolution - * of names. - * - * To disable searching: - * 1. Never set it up. If you never call evdns_resolv_conf_parse or - * evdns_search_add then no searching will occur. - * - * 2. If you do call evdns_resolv_conf_parse then don't pass - * DNS_OPTION_SEARCH (or DNS_OPTIONS_ALL, which implies it). - * - * 3. When calling evdns_resolve, pass the DNS_QUERY_NO_SEARCH flag. - * - * The order of searches depends on the number of dots in the name. If the - * number is greater than the ndots setting then the names is first tried - * globally. Otherwise each search domain is appended in turn. - * - * The ndots setting can either be set from a resolv.conf, or by calling - * evdns_search_ndots_set. - * - * For example, with ndots set to 1 (the default) and a search domain list of - * ["myhome.net"]: - * Query: www - * Order: www.myhome.net, www. - * - * Query: www.abc - * Order: www.abc., www.abc.myhome.net - * - * Internals: - * - * Requests are kept in two queues. The first is the inflight queue. In - * this queue requests have an allocated transaction id and nameserver. - * They will soon be transmitted if they haven't already been. - * - * The second is the waiting queue. The size of the inflight ring is - * limited and all other requests wait in waiting queue for space. This - * bounds the number of concurrent requests so that we don't flood the - * nameserver. Several algorithms require a full walk of the inflight - * queue and so bounding its size keeps thing going nicely under huge - * (many thousands of requests) loads. - * - * If a nameserver loses too many requests it is considered down and we - * try not to use it. After a while we send a probe to that nameserver - * (a lookup for google.com) and, if it replies, we consider it working - * again. If the nameserver fails a probe we wait longer to try again - * with the next probe. - */ - -#ifndef EVENT2_DNS_H_INCLUDED_ -#define EVENT2_DNS_H_INCLUDED_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* For integer types. */ -#include - -/** Error codes 0-5 are as described in RFC 1035. */ -#define DNS_ERR_NONE 0 -/** The name server was unable to interpret the query */ -#define DNS_ERR_FORMAT 1 -/** The name server was unable to process this query due to a problem with the - * name server */ -#define DNS_ERR_SERVERFAILED 2 -/** The domain name does not exist */ -#define DNS_ERR_NOTEXIST 3 -/** The name server does not support the requested kind of query */ -#define DNS_ERR_NOTIMPL 4 -/** The name server refuses to reform the specified operation for policy - * reasons */ -#define DNS_ERR_REFUSED 5 -/** The reply was truncated or ill-formatted */ -#define DNS_ERR_TRUNCATED 65 -/** An unknown error occurred */ -#define DNS_ERR_UNKNOWN 66 -/** Communication with the server timed out */ -#define DNS_ERR_TIMEOUT 67 -/** The request was canceled because the DNS subsystem was shut down. */ -#define DNS_ERR_SHUTDOWN 68 -/** The request was canceled via a call to evdns_cancel_request */ -#define DNS_ERR_CANCEL 69 -/** There were no answers and no error condition in the DNS packet. - * This can happen when you ask for an address that exists, but a record - * type that doesn't. */ -#define DNS_ERR_NODATA 70 - -#define DNS_IPv4_A 1 -#define DNS_PTR 2 -#define DNS_IPv6_AAAA 3 - -#define DNS_QUERY_NO_SEARCH 1 - -#define DNS_OPTION_SEARCH 1 -#define DNS_OPTION_NAMESERVERS 2 -#define DNS_OPTION_MISC 4 -#define DNS_OPTION_HOSTSFILE 8 -#define DNS_OPTIONS_ALL 15 - -/* Obsolete name for DNS_QUERY_NO_SEARCH */ -#define DNS_NO_SEARCH DNS_QUERY_NO_SEARCH - -/** - * The callback that contains the results from a lookup. - * - result is one of the DNS_ERR_* values (DNS_ERR_NONE for success) - * - type is either DNS_IPv4_A or DNS_PTR or DNS_IPv6_AAAA - * - count contains the number of addresses of form type - * - ttl is the number of seconds the resolution may be cached for. - * - addresses needs to be cast according to type. It will be an array of - * 4-byte sequences for ipv4, or an array of 16-byte sequences for ipv6, - * or a nul-terminated string for PTR. - */ -typedef void (*evdns_callback_type) (int result, char type, int count, int ttl, void *addresses, void *arg); - -struct evdns_base; -struct event_base; - -/** Flag for evdns_base_new: process resolv.conf. */ -#define EVDNS_BASE_INITIALIZE_NAMESERVERS 1 -/** Flag for evdns_base_new: Do not prevent the libevent event loop from - * exiting when we have no active dns requests. */ -#define EVDNS_BASE_DISABLE_WHEN_INACTIVE 0x8000 - -/** - Initialize the asynchronous DNS library. - - This function initializes support for non-blocking name resolution by - calling evdns_resolv_conf_parse() on UNIX and - evdns_config_windows_nameservers() on Windows. - - @param event_base the event base to associate the dns client with - @param flags any of EVDNS_BASE_INITIALIZE_NAMESERVERS| - EVDNS_BASE_DISABLE_WHEN_INACTIVE - @return evdns_base object if successful, or NULL if an error occurred. - @see evdns_base_free() - */ -EVENT2_EXPORT_SYMBOL -struct evdns_base * evdns_base_new(struct event_base *event_base, int initialize_nameservers); - - -/** - Shut down the asynchronous DNS resolver and terminate all active requests. - - If the 'fail_requests' option is enabled, all active requests will return - an empty result with the error flag set to DNS_ERR_SHUTDOWN. Otherwise, - the requests will be silently discarded. - - @param evdns_base the evdns base to free - @param fail_requests if zero, active requests will be aborted; if non-zero, - active requests will return DNS_ERR_SHUTDOWN. - @see evdns_base_new() - */ -EVENT2_EXPORT_SYMBOL -void evdns_base_free(struct evdns_base *base, int fail_requests); - -/** - Remove all hosts entries that have been loaded into the event_base via - evdns_base_load_hosts or via event_base_resolv_conf_parse. - - @param evdns_base the evdns base to remove outdated host addresses from - */ -EVENT2_EXPORT_SYMBOL -void evdns_base_clear_host_addresses(struct evdns_base *base); - -/** - Convert a DNS error code to a string. - - @param err the DNS error code - @return a string containing an explanation of the error code -*/ -EVENT2_EXPORT_SYMBOL -const char *evdns_err_to_string(int err); - - -/** - Add a nameserver. - - The address should be an IPv4 address in network byte order. - The type of address is chosen so that it matches in_addr.s_addr. - - @param base the evdns_base to which to add the name server - @param address an IP address in network byte order - @return 0 if successful, or -1 if an error occurred - @see evdns_base_nameserver_ip_add() - */ -EVENT2_EXPORT_SYMBOL -int evdns_base_nameserver_add(struct evdns_base *base, - unsigned long int address); - -/** - Get the number of configured nameservers. - - This returns the number of configured nameservers (not necessarily the - number of running nameservers). This is useful for double-checking - whether our calls to the various nameserver configuration functions - have been successful. - - @param base the evdns_base to which to apply this operation - @return the number of configured nameservers - @see evdns_base_nameserver_add() - */ -EVENT2_EXPORT_SYMBOL -int evdns_base_count_nameservers(struct evdns_base *base); - -/** - Remove all configured nameservers, and suspend all pending resolves. - - Resolves will not necessarily be re-attempted until evdns_base_resume() is called. - - @param base the evdns_base to which to apply this operation - @return 0 if successful, or -1 if an error occurred - @see evdns_base_resume() - */ -EVENT2_EXPORT_SYMBOL -int evdns_base_clear_nameservers_and_suspend(struct evdns_base *base); - - -/** - Resume normal operation and continue any suspended resolve requests. - - Re-attempt resolves left in limbo after an earlier call to - evdns_base_clear_nameservers_and_suspend(). - - @param base the evdns_base to which to apply this operation - @return 0 if successful, or -1 if an error occurred - @see evdns_base_clear_nameservers_and_suspend() - */ -EVENT2_EXPORT_SYMBOL -int evdns_base_resume(struct evdns_base *base); - -/** - Add a nameserver by string address. - - This function parses a n IPv4 or IPv6 address from a string and adds it as a - nameserver. It supports the following formats: - - [IPv6Address]:port - - [IPv6Address] - - IPv6Address - - IPv4Address:port - - IPv4Address - - If no port is specified, it defaults to 53. - - @param base the evdns_base to which to apply this operation - @return 0 if successful, or -1 if an error occurred - @see evdns_base_nameserver_add() - */ -EVENT2_EXPORT_SYMBOL -int evdns_base_nameserver_ip_add(struct evdns_base *base, - const char *ip_as_string); - -/** - Add a nameserver by sockaddr. - **/ -EVENT2_EXPORT_SYMBOL -int -evdns_base_nameserver_sockaddr_add(struct evdns_base *base, - const struct sockaddr *sa, ev_socklen_t len, unsigned flags); - -struct evdns_request; - -/** - Lookup an A record for a given name. - - @param base the evdns_base to which to apply this operation - @param name a DNS hostname - @param flags either 0, or DNS_QUERY_NO_SEARCH to disable searching for this query. - @param callback a callback function to invoke when the request is completed - @param ptr an argument to pass to the callback function - @return an evdns_request object if successful, or NULL if an error occurred. - @see evdns_resolve_ipv6(), evdns_resolve_reverse(), evdns_resolve_reverse_ipv6(), evdns_cancel_request() - */ -EVENT2_EXPORT_SYMBOL -struct evdns_request *evdns_base_resolve_ipv4(struct evdns_base *base, const char *name, int flags, evdns_callback_type callback, void *ptr); - -/** - Lookup an AAAA record for a given name. - - @param base the evdns_base to which to apply this operation - @param name a DNS hostname - @param flags either 0, or DNS_QUERY_NO_SEARCH to disable searching for this query. - @param callback a callback function to invoke when the request is completed - @param ptr an argument to pass to the callback function - @return an evdns_request object if successful, or NULL if an error occurred. - @see evdns_resolve_ipv4(), evdns_resolve_reverse(), evdns_resolve_reverse_ipv6(), evdns_cancel_request() - */ -EVENT2_EXPORT_SYMBOL -struct evdns_request *evdns_base_resolve_ipv6(struct evdns_base *base, const char *name, int flags, evdns_callback_type callback, void *ptr); - -struct in_addr; -struct in6_addr; - -/** - Lookup a PTR record for a given IP address. - - @param base the evdns_base to which to apply this operation - @param in an IPv4 address - @param flags either 0, or DNS_QUERY_NO_SEARCH to disable searching for this query. - @param callback a callback function to invoke when the request is completed - @param ptr an argument to pass to the callback function - @return an evdns_request object if successful, or NULL if an error occurred. - @see evdns_resolve_reverse_ipv6(), evdns_cancel_request() - */ -EVENT2_EXPORT_SYMBOL -struct evdns_request *evdns_base_resolve_reverse(struct evdns_base *base, const struct in_addr *in, int flags, evdns_callback_type callback, void *ptr); - - -/** - Lookup a PTR record for a given IPv6 address. - - @param base the evdns_base to which to apply this operation - @param in an IPv6 address - @param flags either 0, or DNS_QUERY_NO_SEARCH to disable searching for this query. - @param callback a callback function to invoke when the request is completed - @param ptr an argument to pass to the callback function - @return an evdns_request object if successful, or NULL if an error occurred. - @see evdns_resolve_reverse_ipv6(), evdns_cancel_request() - */ -EVENT2_EXPORT_SYMBOL -struct evdns_request *evdns_base_resolve_reverse_ipv6(struct evdns_base *base, const struct in6_addr *in, int flags, evdns_callback_type callback, void *ptr); - -/** - Cancels a pending DNS resolution request. - - @param base the evdns_base that was used to make the request - @param req the evdns_request that was returned by calling a resolve function - @see evdns_base_resolve_ipv4(), evdns_base_resolve_ipv6, evdns_base_resolve_reverse -*/ -EVENT2_EXPORT_SYMBOL -void evdns_cancel_request(struct evdns_base *base, struct evdns_request *req); - -/** - Set the value of a configuration option. - - The currently available configuration options are: - - ndots, timeout, max-timeouts, max-inflight, attempts, randomize-case, - bind-to, initial-probe-timeout, getaddrinfo-allow-skew. - - In versions before Libevent 2.0.3-alpha, the option name needed to end with - a colon. - - @param base the evdns_base to which to apply this operation - @param option the name of the configuration option to be modified - @param val the value to be set - @return 0 if successful, or -1 if an error occurred - */ -EVENT2_EXPORT_SYMBOL -int evdns_base_set_option(struct evdns_base *base, const char *option, const char *val); - - -/** - Parse a resolv.conf file. - - The 'flags' parameter determines what information is parsed from the - resolv.conf file. See the man page for resolv.conf for the format of this - file. - - The following directives are not parsed from the file: sortlist, rotate, - no-check-names, inet6, debug. - - If this function encounters an error, the possible return values are: 1 = - failed to open file, 2 = failed to stat file, 3 = file too large, 4 = out of - memory, 5 = short read from file, 6 = no nameservers listed in the file - - @param base the evdns_base to which to apply this operation - @param flags any of DNS_OPTION_NAMESERVERS|DNS_OPTION_SEARCH|DNS_OPTION_MISC| - DNS_OPTION_HOSTSFILE|DNS_OPTIONS_ALL - @param filename the path to the resolv.conf file - @return 0 if successful, or various positive error codes if an error - occurred (see above) - @see resolv.conf(3), evdns_config_windows_nameservers() - */ -EVENT2_EXPORT_SYMBOL -int evdns_base_resolv_conf_parse(struct evdns_base *base, int flags, const char *const filename); - -/** - Load an /etc/hosts-style file from 'hosts_fname' into 'base'. - - If hosts_fname is NULL, add minimal entries for localhost, and nothing - else. - - Note that only evdns_getaddrinfo uses the /etc/hosts entries. - - This function does not replace previously loaded hosts entries; to do that, - call evdns_base_clear_host_addresses first. - - Return 0 on success, negative on failure. -*/ -EVENT2_EXPORT_SYMBOL -int evdns_base_load_hosts(struct evdns_base *base, const char *hosts_fname); - -/** - Obtain nameserver information using the Windows API. - - Attempt to configure a set of nameservers based on platform settings on - a win32 host. Preferentially tries to use GetNetworkParams; if that fails, - looks in the registry. - - @return 0 if successful, or -1 if an error occurred - @see evdns_resolv_conf_parse() - */ -#ifdef _WIN32 -EVENT2_EXPORT_SYMBOL -int evdns_base_config_windows_nameservers(struct evdns_base *); -#define EVDNS_BASE_CONFIG_WINDOWS_NAMESERVERS_IMPLEMENTED -#endif - - -/** - Clear the list of search domains. - */ -EVENT2_EXPORT_SYMBOL -void evdns_base_search_clear(struct evdns_base *base); - - -/** - Add a domain to the list of search domains - - @param domain the domain to be added to the search list - */ -EVENT2_EXPORT_SYMBOL -void evdns_base_search_add(struct evdns_base *base, const char *domain); - - -/** - Set the 'ndots' parameter for searches. - - Sets the number of dots which, when found in a name, causes - the first query to be without any search domain. - - @param ndots the new ndots parameter - */ -EVENT2_EXPORT_SYMBOL -void evdns_base_search_ndots_set(struct evdns_base *base, const int ndots); - -/** - A callback that is invoked when a log message is generated - - @param is_warning indicates if the log message is a 'warning' - @param msg the content of the log message - */ -typedef void (*evdns_debug_log_fn_type)(int is_warning, const char *msg); - - -/** - Set the callback function to handle DNS log messages. If this - callback is not set, evdns log messages are handled with the regular - Libevent logging system. - - @param fn the callback to be invoked when a log message is generated - */ -EVENT2_EXPORT_SYMBOL -void evdns_set_log_fn(evdns_debug_log_fn_type fn); - -/** - Set a callback that will be invoked to generate transaction IDs. By - default, we pick transaction IDs based on the current clock time, which - is bad for security. - - @param fn the new callback, or NULL to use the default. - - NOTE: This function has no effect in Libevent 2.0.4-alpha and later, - since Libevent now provides its own secure RNG. - */ -EVENT2_EXPORT_SYMBOL -void evdns_set_transaction_id_fn(ev_uint16_t (*fn)(void)); - -/** - Set a callback used to generate random bytes. By default, we use - the same function as passed to evdns_set_transaction_id_fn to generate - bytes two at a time. If a function is provided here, it's also used - to generate transaction IDs. - - NOTE: This function has no effect in Libevent 2.0.4-alpha and later, - since Libevent now provides its own secure RNG. -*/ -EVENT2_EXPORT_SYMBOL -void evdns_set_random_bytes_fn(void (*fn)(char *, size_t)); - -/* - * Functions used to implement a DNS server. - */ - -struct evdns_server_request; -struct evdns_server_question; - -/** - A callback to implement a DNS server. The callback function receives a DNS - request. It should then optionally add a number of answers to the reply - using the evdns_server_request_add_*_reply functions, before calling either - evdns_server_request_respond to send the reply back, or - evdns_server_request_drop to decline to answer the request. - - @param req A newly received request - @param user_data A pointer that was passed to - evdns_add_server_port_with_base(). - */ -typedef void (*evdns_request_callback_fn_type)(struct evdns_server_request *, void *); -#define EVDNS_ANSWER_SECTION 0 -#define EVDNS_AUTHORITY_SECTION 1 -#define EVDNS_ADDITIONAL_SECTION 2 - -#define EVDNS_TYPE_A 1 -#define EVDNS_TYPE_NS 2 -#define EVDNS_TYPE_CNAME 5 -#define EVDNS_TYPE_SOA 6 -#define EVDNS_TYPE_PTR 12 -#define EVDNS_TYPE_MX 15 -#define EVDNS_TYPE_TXT 16 -#define EVDNS_TYPE_AAAA 28 - -#define EVDNS_QTYPE_AXFR 252 -#define EVDNS_QTYPE_ALL 255 - -#define EVDNS_CLASS_INET 1 - -/* flags that can be set in answers; as part of the err parameter */ -#define EVDNS_FLAGS_AA 0x400 -#define EVDNS_FLAGS_RD 0x080 - -/** Create a new DNS server port. - - @param base The event base to handle events for the server port. - @param socket A UDP socket to accept DNS requests. - @param flags Always 0 for now. - @param callback A function to invoke whenever we get a DNS request - on the socket. - @param user_data Data to pass to the callback. - @return an evdns_server_port structure for this server port. - */ -EVENT2_EXPORT_SYMBOL -struct evdns_server_port *evdns_add_server_port_with_base(struct event_base *base, evutil_socket_t socket, int flags, evdns_request_callback_fn_type callback, void *user_data); -/** Close down a DNS server port, and free associated structures. */ -EVENT2_EXPORT_SYMBOL -void evdns_close_server_port(struct evdns_server_port *port); - -/** Sets some flags in a reply we're building. - Allows setting of the AA or RD flags - */ -EVENT2_EXPORT_SYMBOL -void evdns_server_request_set_flags(struct evdns_server_request *req, int flags); - -/* Functions to add an answer to an in-progress DNS reply. - */ -EVENT2_EXPORT_SYMBOL -int evdns_server_request_add_reply(struct evdns_server_request *req, int section, const char *name, int type, int dns_class, int ttl, int datalen, int is_name, const char *data); -EVENT2_EXPORT_SYMBOL -int evdns_server_request_add_a_reply(struct evdns_server_request *req, const char *name, int n, const void *addrs, int ttl); -EVENT2_EXPORT_SYMBOL -int evdns_server_request_add_aaaa_reply(struct evdns_server_request *req, const char *name, int n, const void *addrs, int ttl); -EVENT2_EXPORT_SYMBOL -int evdns_server_request_add_ptr_reply(struct evdns_server_request *req, struct in_addr *in, const char *inaddr_name, const char *hostname, int ttl); -EVENT2_EXPORT_SYMBOL -int evdns_server_request_add_cname_reply(struct evdns_server_request *req, const char *name, const char *cname, int ttl); - -/** - Send back a response to a DNS request, and free the request structure. -*/ -EVENT2_EXPORT_SYMBOL -int evdns_server_request_respond(struct evdns_server_request *req, int err); -/** - Free a DNS request without sending back a reply. -*/ -EVENT2_EXPORT_SYMBOL -int evdns_server_request_drop(struct evdns_server_request *req); -struct sockaddr; -/** - Get the address that made a DNS request. - */ -EVENT2_EXPORT_SYMBOL -int evdns_server_request_get_requesting_addr(struct evdns_server_request *req, struct sockaddr *sa, int addr_len); - -/** Callback for evdns_getaddrinfo. */ -typedef void (*evdns_getaddrinfo_cb)(int result, struct evutil_addrinfo *res, void *arg); - -struct evdns_base; -struct evdns_getaddrinfo_request; -/** Make a non-blocking getaddrinfo request using the dns_base in 'dns_base'. - * - * If we can answer the request immediately (with an error or not!), then we - * invoke cb immediately and return NULL. Otherwise we return - * an evdns_getaddrinfo_request and invoke cb later. - * - * When the callback is invoked, we pass as its first argument the error code - * that getaddrinfo would return (or 0 for no error). As its second argument, - * we pass the evutil_addrinfo structures we found (or NULL on error). We - * pass 'arg' as the third argument. - * - * Limitations: - * - * - The AI_V4MAPPED and AI_ALL flags are not currently implemented. - * - For ai_socktype, we only handle SOCKTYPE_STREAM, SOCKTYPE_UDP, and 0. - * - For ai_protocol, we only handle IPPROTO_TCP, IPPROTO_UDP, and 0. - */ -EVENT2_EXPORT_SYMBOL -struct evdns_getaddrinfo_request *evdns_getaddrinfo( - struct evdns_base *dns_base, - const char *nodename, const char *servname, - const struct evutil_addrinfo *hints_in, - evdns_getaddrinfo_cb cb, void *arg); - -/* Cancel an in-progress evdns_getaddrinfo. This MUST NOT be called after the - * getaddrinfo's callback has been invoked. The resolves will be canceled, - * and the callback will be invoked with the error EVUTIL_EAI_CANCEL. */ -EVENT2_EXPORT_SYMBOL -void evdns_getaddrinfo_cancel(struct evdns_getaddrinfo_request *req); - -/** - Retrieve the address of the 'idx'th configured nameserver. - - @param base The evdns_base to examine. - @param idx The index of the nameserver to get the address of. - @param sa A location to receive the server's address. - @param len The number of bytes available at sa. - - @return the number of bytes written into sa on success. On failure, returns - -1 if idx is greater than the number of configured nameservers, or a - value greater than 'len' if len was not high enough. - */ -EVENT2_EXPORT_SYMBOL -int evdns_base_get_nameserver_addr(struct evdns_base *base, int idx, - struct sockaddr *sa, ev_socklen_t len); - -#ifdef __cplusplus -} -#endif - -#endif /* !EVENT2_DNS_H_INCLUDED_ */ diff --git a/cache/include/libevent2/event2/dns_compat.h b/cache/include/libevent2/event2/dns_compat.h deleted file mode 100644 index 965fd65..0000000 --- a/cache/include/libevent2/event2/dns_compat.h +++ /dev/null @@ -1,336 +0,0 @@ -/* - * Copyright (c) 2006-2007 Niels Provos - * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef EVENT2_DNS_COMPAT_H_INCLUDED_ -#define EVENT2_DNS_COMPAT_H_INCLUDED_ - -/** @file event2/dns_compat.h - - Potentially non-threadsafe versions of the functions in dns.h: provided - only for backwards compatibility. - - - */ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#ifdef EVENT__HAVE_SYS_TYPES_H -#include -#endif -#ifdef EVENT__HAVE_SYS_TIME_H -#include -#endif - -/* For int types. */ -#include - -/** - Initialize the asynchronous DNS library. - - This function initializes support for non-blocking name resolution by - calling evdns_resolv_conf_parse() on UNIX and - evdns_config_windows_nameservers() on Windows. - - @deprecated This function is deprecated because it always uses the current - event base, and is easily confused by multiple calls to event_init(), and - so is not safe for multithreaded use. Additionally, it allocates a global - structure that only one thread can use. The replacement is - evdns_base_new(). - - @return 0 if successful, or -1 if an error occurred - @see evdns_shutdown() - */ -int evdns_init(void); - -struct evdns_base; -/** - Return the global evdns_base created by event_init() and used by the other - deprecated functions. - - @deprecated This function is deprecated because use of the global - evdns_base is error-prone. - */ -struct evdns_base *evdns_get_global_base(void); - -/** - Shut down the asynchronous DNS resolver and terminate all active requests. - - If the 'fail_requests' option is enabled, all active requests will return - an empty result with the error flag set to DNS_ERR_SHUTDOWN. Otherwise, - the requests will be silently discarded. - - @deprecated This function is deprecated because it does not allow the - caller to specify which evdns_base it applies to. The recommended - function is evdns_base_shutdown(). - - @param fail_requests if zero, active requests will be aborted; if non-zero, - active requests will return DNS_ERR_SHUTDOWN. - @see evdns_init() - */ -void evdns_shutdown(int fail_requests); - -/** - Add a nameserver. - - The address should be an IPv4 address in network byte order. - The type of address is chosen so that it matches in_addr.s_addr. - - @deprecated This function is deprecated because it does not allow the - caller to specify which evdns_base it applies to. The recommended - function is evdns_base_nameserver_add(). - - @param address an IP address in network byte order - @return 0 if successful, or -1 if an error occurred - @see evdns_nameserver_ip_add() - */ -int evdns_nameserver_add(unsigned long int address); - -/** - Get the number of configured nameservers. - - This returns the number of configured nameservers (not necessarily the - number of running nameservers). This is useful for double-checking - whether our calls to the various nameserver configuration functions - have been successful. - - @deprecated This function is deprecated because it does not allow the - caller to specify which evdns_base it applies to. The recommended - function is evdns_base_count_nameservers(). - - @return the number of configured nameservers - @see evdns_nameserver_add() - */ -int evdns_count_nameservers(void); - -/** - Remove all configured nameservers, and suspend all pending resolves. - - Resolves will not necessarily be re-attempted until evdns_resume() is called. - - @deprecated This function is deprecated because it does not allow the - caller to specify which evdns_base it applies to. The recommended - function is evdns_base_clear_nameservers_and_suspend(). - - @return 0 if successful, or -1 if an error occurred - @see evdns_resume() - */ -int evdns_clear_nameservers_and_suspend(void); - -/** - Resume normal operation and continue any suspended resolve requests. - - Re-attempt resolves left in limbo after an earlier call to - evdns_clear_nameservers_and_suspend(). - - @deprecated This function is deprecated because it does not allow the - caller to specify which evdns_base it applies to. The recommended - function is evdns_base_resume(). - - @return 0 if successful, or -1 if an error occurred - @see evdns_clear_nameservers_and_suspend() - */ -int evdns_resume(void); - -/** - Add a nameserver. - - This wraps the evdns_nameserver_add() function by parsing a string as an IP - address and adds it as a nameserver. - - @deprecated This function is deprecated because it does not allow the - caller to specify which evdns_base it applies to. The recommended - function is evdns_base_nameserver_ip_add(). - - @return 0 if successful, or -1 if an error occurred - @see evdns_nameserver_add() - */ -int evdns_nameserver_ip_add(const char *ip_as_string); - -/** - Lookup an A record for a given name. - - @deprecated This function is deprecated because it does not allow the - caller to specify which evdns_base it applies to. The recommended - function is evdns_base_resolve_ipv4(). - - @param name a DNS hostname - @param flags either 0, or DNS_QUERY_NO_SEARCH to disable searching for this query. - @param callback a callback function to invoke when the request is completed - @param ptr an argument to pass to the callback function - @return 0 if successful, or -1 if an error occurred - @see evdns_resolve_ipv6(), evdns_resolve_reverse(), evdns_resolve_reverse_ipv6() - */ -int evdns_resolve_ipv4(const char *name, int flags, evdns_callback_type callback, void *ptr); - -/** - Lookup an AAAA record for a given name. - - @param name a DNS hostname - @param flags either 0, or DNS_QUERY_NO_SEARCH to disable searching for this query. - @param callback a callback function to invoke when the request is completed - @param ptr an argument to pass to the callback function - @return 0 if successful, or -1 if an error occurred - @see evdns_resolve_ipv4(), evdns_resolve_reverse(), evdns_resolve_reverse_ipv6() - */ -int evdns_resolve_ipv6(const char *name, int flags, evdns_callback_type callback, void *ptr); - -struct in_addr; -struct in6_addr; - -/** - Lookup a PTR record for a given IP address. - - @deprecated This function is deprecated because it does not allow the - caller to specify which evdns_base it applies to. The recommended - function is evdns_base_resolve_reverse(). - - @param in an IPv4 address - @param flags either 0, or DNS_QUERY_NO_SEARCH to disable searching for this query. - @param callback a callback function to invoke when the request is completed - @param ptr an argument to pass to the callback function - @return 0 if successful, or -1 if an error occurred - @see evdns_resolve_reverse_ipv6() - */ -int evdns_resolve_reverse(const struct in_addr *in, int flags, evdns_callback_type callback, void *ptr); - -/** - Lookup a PTR record for a given IPv6 address. - - @deprecated This function is deprecated because it does not allow the - caller to specify which evdns_base it applies to. The recommended - function is evdns_base_resolve_reverse_ipv6(). - - @param in an IPv6 address - @param flags either 0, or DNS_QUERY_NO_SEARCH to disable searching for this query. - @param callback a callback function to invoke when the request is completed - @param ptr an argument to pass to the callback function - @return 0 if successful, or -1 if an error occurred - @see evdns_resolve_reverse_ipv6() - */ -int evdns_resolve_reverse_ipv6(const struct in6_addr *in, int flags, evdns_callback_type callback, void *ptr); - -/** - Set the value of a configuration option. - - The currently available configuration options are: - - ndots, timeout, max-timeouts, max-inflight, and attempts - - @deprecated This function is deprecated because it does not allow the - caller to specify which evdns_base it applies to. The recommended - function is evdns_base_set_option(). - - @param option the name of the configuration option to be modified - @param val the value to be set - @param flags Ignored. - @return 0 if successful, or -1 if an error occurred - */ -int evdns_set_option(const char *option, const char *val, int flags); - -/** - Parse a resolv.conf file. - - The 'flags' parameter determines what information is parsed from the - resolv.conf file. See the man page for resolv.conf for the format of this - file. - - The following directives are not parsed from the file: sortlist, rotate, - no-check-names, inet6, debug. - - If this function encounters an error, the possible return values are: 1 = - failed to open file, 2 = failed to stat file, 3 = file too large, 4 = out of - memory, 5 = short read from file, 6 = no nameservers listed in the file - - @deprecated This function is deprecated because it does not allow the - caller to specify which evdns_base it applies to. The recommended - function is evdns_base_resolv_conf_parse(). - - @param flags any of DNS_OPTION_NAMESERVERS|DNS_OPTION_SEARCH|DNS_OPTION_MISC| - DNS_OPTIONS_ALL - @param filename the path to the resolv.conf file - @return 0 if successful, or various positive error codes if an error - occurred (see above) - @see resolv.conf(3), evdns_config_windows_nameservers() - */ -int evdns_resolv_conf_parse(int flags, const char *const filename); - -/** - Clear the list of search domains. - - @deprecated This function is deprecated because it does not allow the - caller to specify which evdns_base it applies to. The recommended - function is evdns_base_search_clear(). - */ -void evdns_search_clear(void); - -/** - Add a domain to the list of search domains - - @deprecated This function is deprecated because it does not allow the - caller to specify which evdns_base it applies to. The recommended - function is evdns_base_search_add(). - - @param domain the domain to be added to the search list - */ -void evdns_search_add(const char *domain); - -/** - Set the 'ndots' parameter for searches. - - Sets the number of dots which, when found in a name, causes - the first query to be without any search domain. - - @deprecated This function is deprecated because it does not allow the - caller to specify which evdns_base it applies to. The recommended - function is evdns_base_search_ndots_set(). - - @param ndots the new ndots parameter - */ -void evdns_search_ndots_set(const int ndots); - -/** - As evdns_server_new_with_base. - - @deprecated This function is deprecated because it does not allow the - caller to specify which even_base it uses. The recommended - function is evdns_add_server_port_with_base(). - -*/ -struct evdns_server_port *evdns_add_server_port(evutil_socket_t socket, int flags, evdns_request_callback_fn_type callback, void *user_data); - -#ifdef _WIN32 -int evdns_config_windows_nameservers(void); -#define EVDNS_CONFIG_WINDOWS_NAMESERVERS_IMPLEMENTED -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* EVENT2_EVENT_COMPAT_H_INCLUDED_ */ diff --git a/cache/include/libevent2/event2/dns_struct.h b/cache/include/libevent2/event2/dns_struct.h deleted file mode 100644 index 593a8a7..0000000 --- a/cache/include/libevent2/event2/dns_struct.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) 2000-2007 Niels Provos - * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef EVENT2_DNS_STRUCT_H_INCLUDED_ -#define EVENT2_DNS_STRUCT_H_INCLUDED_ - -/** @file event2/dns_struct.h - - Data structures for dns. Using these structures may hurt forward - compatibility with later versions of Libevent: be careful! - - */ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#ifdef EVENT__HAVE_SYS_TYPES_H -#include -#endif -#ifdef EVENT__HAVE_SYS_TIME_H -#include -#endif - -/* For int types. */ -#include - -/* - * Structures used to implement a DNS server. - */ - -struct evdns_server_request { - int flags; - int nquestions; - struct evdns_server_question **questions; -}; -struct evdns_server_question { - int type; -#ifdef __cplusplus - int dns_question_class; -#else - /* You should refer to this field as "dns_question_class". The - * name "class" works in C for backward compatibility, and will be - * removed in a future version. (1.5 or later). */ - int class; -#define dns_question_class class -#endif - char name[1]; -}; - -#ifdef __cplusplus -} -#endif - -#endif /* EVENT2_DNS_STRUCT_H_INCLUDED_ */ - diff --git a/cache/include/libevent2/event2/event-config.h b/cache/include/libevent2/event2/event-config.h deleted file mode 100644 index 457f98e..0000000 --- a/cache/include/libevent2/event2/event-config.h +++ /dev/null @@ -1,545 +0,0 @@ -/* event2/event-config.h - * - * This file was generated by autoconf when libevent was built, and post- - * processed by Libevent so that its macros would have a uniform prefix. - * - * DO NOT EDIT THIS FILE. - * - * Do not rely on macros in this file existing in later versions. - */ - -#ifndef EVENT2_EVENT_CONFIG_H_INCLUDED_ -#define EVENT2_EVENT_CONFIG_H_INCLUDED_ - -/* config.h. Generated from config.h.in by configure. */ -/* config.h.in. Generated from configure.ac by autoheader. */ - -/* Define if libevent should build without support for a debug mode */ -/* #undef EVENT__DISABLE_DEBUG_MODE */ - -/* Define if libevent should not allow replacing the mm functions */ -/* #undef EVENT__DISABLE_MM_REPLACEMENT */ - -/* Define if libevent should not be compiled with thread support */ -/* #undef EVENT__DISABLE_THREAD_SUPPORT */ - -/* Define to 1 if you have the `accept4' function. */ -#define EVENT__HAVE_ACCEPT4 1 - -/* Define to 1 if you have the `arc4random' function. */ -/* #undef EVENT__HAVE_ARC4RANDOM */ - -/* Define to 1 if you have the `arc4random_buf' function. */ -/* #undef EVENT__HAVE_ARC4RANDOM_BUF */ - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_ARPA_INET_H 1 - -/* Define to 1 if you have the `clock_gettime' function. */ -#define EVENT__HAVE_CLOCK_GETTIME 1 - -/* Define to 1 if you have the declaration of `CTL_KERN', and to 0 if you - don't. */ -#define EVENT__HAVE_DECL_CTL_KERN 1 - -/* Define to 1 if you have the declaration of `KERN_ARND', and to 0 if you - don't. */ -#define EVENT__HAVE_DECL_KERN_ARND 0 - -/* Define to 1 if you have the declaration of `KERN_RANDOM', and to 0 if you - don't. */ -#define EVENT__HAVE_DECL_KERN_RANDOM 1 - -/* Define to 1 if you have the declaration of `RANDOM_UUID', and to 0 if you - don't. */ -#define EVENT__HAVE_DECL_RANDOM_UUID 1 - -/* Define if /dev/poll is available */ -/* #undef EVENT__HAVE_DEVPOLL */ - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_DLFCN_H 1 - -/* Define if your system supports the epoll system calls */ -#define EVENT__HAVE_EPOLL 1 - -/* Define to 1 if you have the `epoll_create1' function. */ -#define EVENT__HAVE_EPOLL_CREATE1 1 - -/* Define to 1 if you have the `epoll_ctl' function. */ -#define EVENT__HAVE_EPOLL_CTL 1 - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_ERRNO_H 1 - -/* Define to 1 if you have ERR_remove_thread_stat(). */ -#define EVENT__HAVE_ERR_REMOVE_THREAD_STATE 1 - -/* Define to 1 if you have the `eventfd' function. */ -#define EVENT__HAVE_EVENTFD 1 - -/* Define if your system supports event ports */ -/* #undef EVENT__HAVE_EVENT_PORTS */ - -/* Define to 1 if you have the `fcntl' function. */ -#define EVENT__HAVE_FCNTL 1 - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_FCNTL_H 1 - -/* Define to 1 if the system has the type `fd_mask'. */ -#define EVENT__HAVE_FD_MASK 1 - -/* Do we have getaddrinfo()? */ -#define EVENT__HAVE_GETADDRINFO 1 - -/* Define to 1 if you have the `getegid' function. */ -#define EVENT__HAVE_GETEGID 1 - -/* Define to 1 if you have the `geteuid' function. */ -#define EVENT__HAVE_GETEUID 1 - -/* Define this if you have any gethostbyname_r() */ -/* #undef EVENT__HAVE_GETHOSTBYNAME_R */ - -/* Define this if gethostbyname_r takes 3 arguments */ -/* #undef EVENT__HAVE_GETHOSTBYNAME_R_3_ARG */ - -/* Define this if gethostbyname_r takes 5 arguments */ -/* #undef EVENT__HAVE_GETHOSTBYNAME_R_5_ARG */ - -/* Define this if gethostbyname_r takes 6 arguments */ -/* #undef EVENT__HAVE_GETHOSTBYNAME_R_6_ARG */ - -/* Define to 1 if you have the `getifaddrs' function. */ -#define EVENT__HAVE_GETIFADDRS 1 - -/* Define to 1 if you have the `getnameinfo' function. */ -#define EVENT__HAVE_GETNAMEINFO 1 - -/* Define to 1 if you have the `getprotobynumber' function. */ -#define EVENT__HAVE_GETPROTOBYNUMBER 1 - -/* Define to 1 if you have the `getservbyname' function. */ -#define EVENT__HAVE_GETSERVBYNAME 1 - -/* Define to 1 if you have the `gettimeofday' function. */ -#define EVENT__HAVE_GETTIMEOFDAY 1 - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_IFADDRS_H 1 - -/* Define to 1 if you have the `inet_ntop' function. */ -#define EVENT__HAVE_INET_NTOP 1 - -/* Define to 1 if you have the `inet_pton' function. */ -#define EVENT__HAVE_INET_PTON 1 - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_INTTYPES_H 1 - -/* Define to 1 if you have the `issetugid' function. */ -/* #undef EVENT__HAVE_ISSETUGID */ - -/* Define to 1 if you have the `kqueue' function. */ -/* #undef EVENT__HAVE_KQUEUE */ - -/* Define if the system has zlib */ -#define EVENT__HAVE_LIBZ 1 - -/* Define to 1 if you have the `mach_absolute_time' function. */ -/* #undef EVENT__HAVE_MACH_ABSOLUTE_TIME */ - -/* Define to 1 if you have the header file. */ -/* #undef EVENT__HAVE_MACH_MACH_TIME_H */ - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_MEMORY_H 1 - -/* Define to 1 if you have the `mmap' function. */ -#define EVENT__HAVE_MMAP 1 - -/* Define to 1 if you have the `nanosleep' function. */ -#define EVENT__HAVE_NANOSLEEP 1 - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_NETDB_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef EVENT__HAVE_NETINET_IN6_H */ - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_NETINET_IN_H 1 - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_NETINET_TCP_H 1 - -/* Define if the system has openssl */ -#define EVENT__HAVE_OPENSSL 1 - -/* Define to 1 if you have the `pipe' function. */ -#define EVENT__HAVE_PIPE 1 - -/* Define to 1 if you have the `pipe2' function. */ -#define EVENT__HAVE_PIPE2 1 - -/* Define to 1 if you have the `poll' function. */ -#define EVENT__HAVE_POLL 1 - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_POLL_H 1 - -/* Define to 1 if you have the `port_create' function. */ -/* #undef EVENT__HAVE_PORT_CREATE */ - -/* Define to 1 if you have the header file. */ -/* #undef EVENT__HAVE_PORT_H */ - -/* Define if you have POSIX threads libraries and header files. */ -/* #undef EVENT__HAVE_PTHREAD */ - -/* Define if we have pthreads on this system */ -#define EVENT__HAVE_PTHREADS 1 - -/* Define to 1 if you have the `putenv' function. */ -#define EVENT__HAVE_PUTENV 1 - -/* Define to 1 if the system has the type `sa_family_t'. */ -#define EVENT__HAVE_SA_FAMILY_T 1 - -/* Define to 1 if you have the `select' function. */ -#define EVENT__HAVE_SELECT 1 - -/* Define to 1 if you have the `sendfile' function. */ -#define EVENT__HAVE_SENDFILE 1 - -/* Define to 1 if you have the `setenv' function. */ -#define EVENT__HAVE_SETENV 1 - -/* Define if F_SETFD is defined in */ -#define EVENT__HAVE_SETFD 1 - -/* Define to 1 if you have the `setrlimit' function. */ -#define EVENT__HAVE_SETRLIMIT 1 - -/* Define to 1 if you have the `sigaction' function. */ -#define EVENT__HAVE_SIGACTION 1 - -/* Define to 1 if you have the `signal' function. */ -#define EVENT__HAVE_SIGNAL 1 - -/* Define to 1 if you have the `splice' function. */ -#define EVENT__HAVE_SPLICE 1 - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_STDARG_H 1 - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_STDDEF_H 1 - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_STDLIB_H 1 - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_STRINGS_H 1 - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_STRING_H 1 - -/* Define to 1 if you have the `strlcpy' function. */ -/* #undef EVENT__HAVE_STRLCPY */ - -/* Define to 1 if you have the `strsep' function. */ -#define EVENT__HAVE_STRSEP 1 - -/* Define to 1 if you have the `strtok_r' function. */ -#define EVENT__HAVE_STRTOK_R 1 - -/* Define to 1 if you have the `strtoll' function. */ -#define EVENT__HAVE_STRTOLL 1 - -/* Define to 1 if the system has the type `struct addrinfo'. */ -#define EVENT__HAVE_STRUCT_ADDRINFO 1 - -/* Define to 1 if the system has the type `struct in6_addr'. */ -#define EVENT__HAVE_STRUCT_IN6_ADDR 1 - -/* Define to 1 if `s6_addr16' is a member of `struct in6_addr'. */ -#define EVENT__HAVE_STRUCT_IN6_ADDR_S6_ADDR16 1 - -/* Define to 1 if `s6_addr32' is a member of `struct in6_addr'. */ -#define EVENT__HAVE_STRUCT_IN6_ADDR_S6_ADDR32 1 - -/* Define to 1 if the system has the type `struct sockaddr_in6'. */ -#define EVENT__HAVE_STRUCT_SOCKADDR_IN6 1 - -/* Define to 1 if `sin6_len' is a member of `struct sockaddr_in6'. */ -/* #undef EVENT__HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN */ - -/* Define to 1 if `sin_len' is a member of `struct sockaddr_in'. */ -/* #undef EVENT__HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */ - -/* Define to 1 if the system has the type `struct sockaddr_storage'. */ -#define EVENT__HAVE_STRUCT_SOCKADDR_STORAGE 1 - -/* Define to 1 if `ss_family' is a member of `struct sockaddr_storage'. */ -#define EVENT__HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY 1 - -/* Define to 1 if `__ss_family' is a member of `struct sockaddr_storage'. */ -/* #undef EVENT__HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY */ - -/* Define to 1 if the system has the type `struct so_linger'. */ -/* #undef EVENT__HAVE_STRUCT_SO_LINGER */ - -/* Define to 1 if you have the `sysctl' function. */ -#define EVENT__HAVE_SYSCTL 1 - -/* Define to 1 if you have the header file. */ -/* #undef EVENT__HAVE_SYS_DEVPOLL_H */ - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_SYS_EPOLL_H 1 - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_SYS_EVENTFD_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef EVENT__HAVE_SYS_EVENT_H */ - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_SYS_IOCTL_H 1 - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_SYS_MMAN_H 1 - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_SYS_PARAM_H 1 - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_SYS_QUEUE_H 1 - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_SYS_RESOURCE_H 1 - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_SYS_SELECT_H 1 - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_SYS_SENDFILE_H 1 - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_SYS_SOCKET_H 1 - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_SYS_SYSCTL_H 1 - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_SYS_TIMERFD_H 1 - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_SYS_TIME_H 1 - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_SYS_UIO_H 1 - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_SYS_WAIT_H 1 - -/* Define if TAILQ_FOREACH is defined in */ -#define EVENT__HAVE_TAILQFOREACH 1 - -/* Define if timeradd is defined in */ -#define EVENT__HAVE_TIMERADD 1 - -/* Define if timerclear is defined in */ -#define EVENT__HAVE_TIMERCLEAR 1 - -/* Define if timercmp is defined in */ -#define EVENT__HAVE_TIMERCMP 1 - -/* Define to 1 if you have the `timerfd_create' function. */ -#define EVENT__HAVE_TIMERFD_CREATE 1 - -/* Define if timerisset is defined in */ -#define EVENT__HAVE_TIMERISSET 1 - -/* Define to 1 if the system has the type `uint16_t'. */ -#define EVENT__HAVE_UINT16_T 1 - -/* Define to 1 if the system has the type `uint32_t'. */ -#define EVENT__HAVE_UINT32_T 1 - -/* Define to 1 if the system has the type `uint64_t'. */ -#define EVENT__HAVE_UINT64_T 1 - -/* Define to 1 if the system has the type `uint8_t'. */ -#define EVENT__HAVE_UINT8_T 1 - -/* Define to 1 if the system has the type `uintptr_t'. */ -#define EVENT__HAVE_UINTPTR_T 1 - -/* Define to 1 if you have the `umask' function. */ -#define EVENT__HAVE_UMASK 1 - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_UNISTD_H 1 - -/* Define to 1 if you have the `unsetenv' function. */ -#define EVENT__HAVE_UNSETENV 1 - -/* Define to 1 if you have the `usleep' function. */ -#define EVENT__HAVE_USLEEP 1 - -/* Define to 1 if you have the `vasprintf' function. */ -#define EVENT__HAVE_VASPRINTF 1 - -/* Define if waitpid() supports WNOWAIT */ -/* #undef EVENT__HAVE_WAITPID_WITH_WNOWAIT */ - -/* Define if kqueue works correctly with pipes */ -/* #undef EVENT__HAVE_WORKING_KQUEUE */ - -/* Define to 1 if you have the header file. */ -#define EVENT__HAVE_ZLIB_H 1 - -/* Define to the sub-directory where libtool stores uninstalled libraries. */ -#define EVENT__LT_OBJDIR ".libs/" - -/* Numeric representation of the version */ -#define EVENT__NUMERIC_VERSION 0x02010800 - -/* Name of package */ -#define EVENT__PACKAGE "libevent" - -/* Define to the address where bug reports for this package should be sent. */ -#define EVENT__PACKAGE_BUGREPORT "" - -/* Define to the full name of this package. */ -#define EVENT__PACKAGE_NAME "libevent" - -/* Define to the full name and version of this package. */ -#define EVENT__PACKAGE_STRING "libevent 2.1.8-stable" - -/* Define to the one symbol short name of this package. */ -#define EVENT__PACKAGE_TARNAME "libevent" - -/* Define to the home page for this package. */ -#define EVENT__PACKAGE_URL "" - -/* Define to the version of this package. */ -#define EVENT__PACKAGE_VERSION "2.1.8-stable" - -/* Define to necessary symbol if this constant uses a non-standard name on - your system. */ -/* #undef EVENT__PTHREAD_CREATE_JOINABLE */ - -/* The size of `int', as computed by sizeof. */ -#define EVENT__SIZEOF_INT 4 - -/* The size of `long', as computed by sizeof. */ -#define EVENT__SIZEOF_LONG 8 - -/* The size of `long long', as computed by sizeof. */ -#define EVENT__SIZEOF_LONG_LONG 8 - -/* The size of `off_t', as computed by sizeof. */ -#define EVENT__SIZEOF_OFF_T 8 - -/* The size of `pthread_t', as computed by sizeof. */ -#define EVENT__SIZEOF_PTHREAD_T 8 - -/* The size of `short', as computed by sizeof. */ -#define EVENT__SIZEOF_SHORT 2 - -/* The size of `size_t', as computed by sizeof. */ -#define EVENT__SIZEOF_SIZE_T 8 - -/* The size of `void *', as computed by sizeof. */ -#define EVENT__SIZEOF_VOID_P 8 - -/* Define to 1 if you have the ANSI C header files. */ -#define EVENT__STDC_HEADERS 1 - -/* Define to 1 if you can safely include both and . */ -#define EVENT__TIME_WITH_SYS_TIME 1 - -/* Enable extensions on AIX 3, Interix. */ -#ifndef EVENT___ALL_SOURCE -# define EVENT___ALL_SOURCE 1 -#endif -/* Enable GNU extensions on systems that have them. */ -#ifndef EVENT___GNU_SOURCE -# define EVENT___GNU_SOURCE 1 -#endif -/* Enable threading extensions on Solaris. */ -#ifndef EVENT___POSIX_PTHREAD_SEMANTICS -# define EVENT___POSIX_PTHREAD_SEMANTICS 1 -#endif -/* Enable extensions on HP NonStop. */ -#ifndef EVENT___TANDEM_SOURCE -# define EVENT___TANDEM_SOURCE 1 -#endif -/* Enable general extensions on Solaris. */ -#ifndef EVENT____EXTENSIONS__ -# define EVENT____EXTENSIONS__ 1 -#endif - - -/* Version number of package */ -#define EVENT__VERSION "2.1.8-stable" - -/* Enable large inode numbers on Mac OS X 10.5. */ -#ifndef EVENT___DARWIN_USE_64_BIT_INODE -# define EVENT___DARWIN_USE_64_BIT_INODE 1 -#endif - -/* Number of bits in a file offset, on hosts where this is settable. */ -/* #undef EVENT___FILE_OFFSET_BITS */ - -/* Define for large files, on AIX-style hosts. */ -/* #undef EVENT___LARGE_FILES */ - -/* Define to 1 if on MINIX. */ -/* #undef EVENT___MINIX */ - -/* Define to 2 if the system does not provide POSIX.1 features except with - this defined. */ -/* #undef EVENT___POSIX_1_SOURCE */ - -/* Define to 1 if you need to in order for `stat' and other things to work. */ -/* #undef EVENT___POSIX_SOURCE */ - -/* Define to appropriate substitue if compiler doesnt have __func__ */ -/* #undef EVENT____func__ */ - -/* Define to empty if `const' does not conform to ANSI C. */ -/* #undef EVENT__const */ - -/* Define to `__inline__' or `__inline' if that's what the C compiler - calls it, or to nothing if 'inline' is not supported under any name. */ -#ifndef EVENT____cplusplus -/* #undef EVENT__inline */ -#endif - -/* Define to `int' if does not define. */ -/* #undef EVENT__pid_t */ - -/* Define to `unsigned int' if does not define. */ -/* #undef EVENT__size_t */ - -/* Define to unsigned int if you dont have it */ -/* #undef EVENT__socklen_t */ - -/* Define to `int' if does not define. */ -/* #undef EVENT__ssize_t */ - -#endif /* event2/event-config.h */ diff --git a/cache/include/libevent2/event2/event.h b/cache/include/libevent2/event2/event.h deleted file mode 100644 index 6e0a4f0..0000000 --- a/cache/include/libevent2/event2/event.h +++ /dev/null @@ -1,1675 +0,0 @@ -/* - * Copyright (c) 2000-2007 Niels Provos - * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef EVENT2_EVENT_H_INCLUDED_ -#define EVENT2_EVENT_H_INCLUDED_ - -/** - @mainpage - - @section intro Introduction - - Libevent is an event notification library for developing scalable network - servers. The Libevent API provides a mechanism to execute a callback - function when a specific event occurs on a file descriptor or after a - timeout has been reached. Furthermore, Libevent also support callbacks due - to signals or regular timeouts. - - Libevent is meant to replace the event loop found in event driven network - servers. An application just needs to call event_base_dispatch() and then add or - remove events dynamically without having to change the event loop. - - - Currently, Libevent supports /dev/poll, kqueue(2), select(2), poll(2), - epoll(4), and evports. The internal event mechanism is completely - independent of the exposed event API, and a simple update of Libevent can - provide new functionality without having to redesign the applications. As a - result, Libevent allows for portable application development and provides - the most scalable event notification mechanism available on an operating - system. Libevent can also be used for multithreaded programs. Libevent - should compile on Linux, *BSD, Mac OS X, Solaris and, Windows. - - @section usage Standard usage - - Every program that uses Libevent must include the - header, and pass the -levent flag to the linker. (You can instead link - -levent_core if you only want the main event and buffered IO-based code, - and don't want to link any protocol code.) - - @section setup Library setup - - Before you call any other Libevent functions, you need to set up the - library. If you're going to use Libevent from multiple threads in a - multithreaded application, you need to initialize thread support -- - typically by using evthread_use_pthreads() or - evthread_use_windows_threads(). See for more - information. - - This is also the point where you can replace Libevent's memory - management functions with event_set_mem_functions, and enable debug mode - with event_enable_debug_mode(). - - @section base Creating an event base - - Next, you need to create an event_base structure, using event_base_new() - or event_base_new_with_config(). The event_base is responsible for - keeping track of which events are "pending" (that is to say, being - watched to see if they become active) and which events are "active". - Every event is associated with a single event_base. - - @section event Event notification - - For each file descriptor that you wish to monitor, you must create an - event structure with event_new(). (You may also declare an event - structure and call event_assign() to initialize the members of the - structure.) To enable notification, you add the structure to the list - of monitored events by calling event_add(). The event structure must - remain allocated as long as it is active, so it should generally be - allocated on the heap. - - @section loop Dispatching events. - - Finally, you call event_base_dispatch() to loop and dispatch events. - You can also use event_base_loop() for more fine-grained control. - - Currently, only one thread can be dispatching a given event_base at a - time. If you want to run events in multiple threads at once, you can - either have a single event_base whose events add work to a work queue, - or you can create multiple event_base objects. - - @section bufferevent I/O Buffers - - Libevent provides a buffered I/O abstraction on top of the regular event - callbacks. This abstraction is called a bufferevent. A bufferevent - provides input and output buffers that get filled and drained - automatically. The user of a buffered event no longer deals directly - with the I/O, but instead is reading from input and writing to output - buffers. - - Once initialized via bufferevent_socket_new(), the bufferevent structure - can be used repeatedly with bufferevent_enable() and - bufferevent_disable(). Instead of reading and writing directly to a - socket, you would call bufferevent_read() and bufferevent_write(). - - When read enabled the bufferevent will try to read from the file descriptor - and call the read callback. The write callback is executed whenever the - output buffer is drained below the write low watermark, which is 0 by - default. - - See for more information. - - @section timers Timers - - Libevent can also be used to create timers that invoke a callback after a - certain amount of time has expired. The evtimer_new() macro returns - an event struct to use as a timer. To activate the timer, call - evtimer_add(). Timers can be deactivated by calling evtimer_del(). - (These macros are thin wrappers around event_new(), event_add(), - and event_del(); you can also use those instead.) - - @section evdns Asynchronous DNS resolution - - Libevent provides an asynchronous DNS resolver that should be used instead - of the standard DNS resolver functions. See the - functions for more detail. - - @section evhttp Event-driven HTTP servers - - Libevent provides a very simple event-driven HTTP server that can be - embedded in your program and used to service HTTP requests. - - To use this capability, you need to include the header in your - program. See that header for more information. - - @section evrpc A framework for RPC servers and clients - - Libevent provides a framework for creating RPC servers and clients. It - takes care of marshaling and unmarshaling all data structures. - - @section api API Reference - - To browse the complete documentation of the libevent API, click on any of - the following links. - - event2/event.h - The primary libevent header - - event2/thread.h - Functions for use by multithreaded programs - - event2/buffer.h and event2/bufferevent.h - Buffer management for network reading and writing - - event2/util.h - Utility functions for portable nonblocking network code - - event2/dns.h - Asynchronous DNS resolution - - event2/http.h - An embedded libevent-based HTTP server - - event2/rpc.h - A framework for creating RPC servers and clients - - */ - -/** @file event2/event.h - - Core functions for waiting for and receiving events, and using event bases. -*/ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#ifdef EVENT__HAVE_SYS_TYPES_H -#include -#endif -#ifdef EVENT__HAVE_SYS_TIME_H -#include -#endif - -#include - -/* For int types. */ -#include - -/** - * Structure to hold information and state for a Libevent dispatch loop. - * - * The event_base lies at the center of Libevent; every application will - * have one. It keeps track of all pending and active events, and - * notifies your application of the active ones. - * - * This is an opaque structure; you can allocate one using - * event_base_new() or event_base_new_with_config(). - * - * @see event_base_new(), event_base_free(), event_base_loop(), - * event_base_new_with_config() - */ -struct event_base -#ifdef EVENT_IN_DOXYGEN_ -{/*Empty body so that doxygen will generate documentation here.*/} -#endif -; - -/** - * @struct event - * - * Structure to represent a single event. - * - * An event can have some underlying condition it represents: a socket - * becoming readable or writeable (or both), or a signal becoming raised. - * (An event that represents no underlying condition is still useful: you - * can use one to implement a timer, or to communicate between threads.) - * - * Generally, you can create events with event_new(), then make them - * pending with event_add(). As your event_base runs, it will run the - * callbacks of an events whose conditions are triggered. When you - * longer want the event, free it with event_free(). - * - * In more depth: - * - * An event may be "pending" (one whose condition we are watching), - * "active" (one whose condition has triggered and whose callback is about - * to run), neither, or both. Events come into existence via - * event_assign() or event_new(), and are then neither active nor pending. - * - * To make an event pending, pass it to event_add(). When doing so, you - * can also set a timeout for the event. - * - * Events become active during an event_base_loop() call when either their - * condition has triggered, or when their timeout has elapsed. You can - * also activate an event manually using event_active(). The even_base - * loop will run the callbacks of active events; after it has done so, it - * marks them as no longer active. - * - * You can make an event non-pending by passing it to event_del(). This - * also makes the event non-active. - * - * Events can be "persistent" or "non-persistent". A non-persistent event - * becomes non-pending as soon as it is triggered: thus, it only runs at - * most once per call to event_add(). A persistent event remains pending - * even when it becomes active: you'll need to event_del() it manually in - * order to make it non-pending. When a persistent event with a timeout - * becomes active, its timeout is reset: this means you can use persistent - * events to implement periodic timeouts. - * - * This should be treated as an opaque structure; you should never read or - * write any of its fields directly. For backward compatibility with old - * code, it is defined in the event2/event_struct.h header; including this - * header may make your code incompatible with other versions of Libevent. - * - * @see event_new(), event_free(), event_assign(), event_get_assignment(), - * event_add(), event_del(), event_active(), event_pending(), - * event_get_fd(), event_get_base(), event_get_events(), - * event_get_callback(), event_get_callback_arg(), - * event_priority_set() - */ -struct event -#ifdef EVENT_IN_DOXYGEN_ -{/*Empty body so that doxygen will generate documentation here.*/} -#endif -; - -/** - * Configuration for an event_base. - * - * There are many options that can be used to alter the behavior and - * implementation of an event_base. To avoid having to pass them all in a - * complex many-argument constructor, we provide an abstract data type - * wrhere you set up configation information before passing it to - * event_base_new_with_config(). - * - * @see event_config_new(), event_config_free(), event_base_new_with_config(), - * event_config_avoid_method(), event_config_require_features(), - * event_config_set_flag(), event_config_set_num_cpus_hint() - */ -struct event_config -#ifdef EVENT_IN_DOXYGEN_ -{/*Empty body so that doxygen will generate documentation here.*/} -#endif -; - -/** - * Enable some relatively expensive debugging checks in Libevent that - * would normally be turned off. Generally, these checks cause code that - * would otherwise crash mysteriously to fail earlier with an assertion - * failure. Note that this method MUST be called before any events or - * event_bases have been created. - * - * Debug mode can currently catch the following errors: - * An event is re-assigned while it is added - * Any function is called on a non-assigned event - * - * Note that debugging mode uses memory to track every event that has been - * initialized (via event_assign, event_set, or event_new) but not yet - * released (via event_free or event_debug_unassign). If you want to use - * debug mode, and you find yourself running out of memory, you will need - * to use event_debug_unassign to explicitly stop tracking events that - * are no longer considered set-up. - * - * @see event_debug_unassign() - */ -EVENT2_EXPORT_SYMBOL -void event_enable_debug_mode(void); - -/** - * When debugging mode is enabled, informs Libevent that an event should no - * longer be considered as assigned. When debugging mode is not enabled, does - * nothing. - * - * This function must only be called on a non-added event. - * - * @see event_enable_debug_mode() - */ -EVENT2_EXPORT_SYMBOL -void event_debug_unassign(struct event *); - -/** - * Create and return a new event_base to use with the rest of Libevent. - * - * @return a new event_base on success, or NULL on failure. - * - * @see event_base_free(), event_base_new_with_config() - */ -EVENT2_EXPORT_SYMBOL -struct event_base *event_base_new(void); - -/** - Reinitialize the event base after a fork - - Some event mechanisms do not survive across fork. The event base needs - to be reinitialized with the event_reinit() function. - - @param base the event base that needs to be re-initialized - @return 0 if successful, or -1 if some events could not be re-added. - @see event_base_new() -*/ -EVENT2_EXPORT_SYMBOL -int event_reinit(struct event_base *base); - -/** - Event dispatching loop - - This loop will run the event base until either there are no more pending or - active, or until something calls event_base_loopbreak() or - event_base_loopexit(). - - @param base the event_base structure returned by event_base_new() or - event_base_new_with_config() - @return 0 if successful, -1 if an error occurred, or 1 if we exited because - no events were pending or active. - @see event_base_loop() - */ -EVENT2_EXPORT_SYMBOL -int event_base_dispatch(struct event_base *); - -/** - Get the kernel event notification mechanism used by Libevent. - - @param eb the event_base structure returned by event_base_new() - @return a string identifying the kernel event mechanism (kqueue, epoll, etc.) - */ -EVENT2_EXPORT_SYMBOL -const char *event_base_get_method(const struct event_base *); - -/** - Gets all event notification mechanisms supported by Libevent. - - This functions returns the event mechanism in order preferred by - Libevent. Note that this list will include all backends that - Libevent has compiled-in support for, and will not necessarily check - your OS to see whether it has the required resources. - - @return an array with pointers to the names of support methods. - The end of the array is indicated by a NULL pointer. If an - error is encountered NULL is returned. -*/ -EVENT2_EXPORT_SYMBOL -const char **event_get_supported_methods(void); - -/** Query the current monotonic time from a the timer for a struct - * event_base. - */ -EVENT2_EXPORT_SYMBOL -int event_gettime_monotonic(struct event_base *base, struct timeval *tp); - -/** - @name event type flag - - Flags to pass to event_base_get_num_events() to specify the kinds of events - we want to aggregate counts for -*/ -/**@{*/ -/** count the number of active events, which have been triggered.*/ -#define EVENT_BASE_COUNT_ACTIVE 1U -/** count the number of virtual events, which is used to represent an internal - * condition, other than a pending event, that keeps the loop from exiting. */ -#define EVENT_BASE_COUNT_VIRTUAL 2U -/** count the number of events which have been added to event base, including - * internal events. */ -#define EVENT_BASE_COUNT_ADDED 4U -/**@}*/ - -/** - Gets the number of events in event_base, as specified in the flags. - - Since event base has some internal events added to make some of its - functionalities work, EVENT_BASE_COUNT_ADDED may return more than the - number of events you added using event_add(). - - If you pass EVENT_BASE_COUNT_ACTIVE and EVENT_BASE_COUNT_ADDED together, an - active event will be counted twice. However, this might not be the case in - future libevent versions. The return value is an indication of the work - load, but the user shouldn't rely on the exact value as this may change in - the future. - - @param eb the event_base structure returned by event_base_new() - @param flags a bitwise combination of the kinds of events to aggregate - counts for - @return the number of events specified in the flags -*/ -EVENT2_EXPORT_SYMBOL -int event_base_get_num_events(struct event_base *, unsigned int); - -/** - Get the maximum number of events in a given event_base as specified in the - flags. - - @param eb the event_base structure returned by event_base_new() - @param flags a bitwise combination of the kinds of events to aggregate - counts for - @param clear option used to reset the maximum count. - @return the number of events specified in the flags - */ -EVENT2_EXPORT_SYMBOL -int event_base_get_max_events(struct event_base *, unsigned int, int); - -/** - Allocates a new event configuration object. - - The event configuration object can be used to change the behavior of - an event base. - - @return an event_config object that can be used to store configuration, or - NULL if an error is encountered. - @see event_base_new_with_config(), event_config_free(), event_config -*/ -EVENT2_EXPORT_SYMBOL -struct event_config *event_config_new(void); - -/** - Deallocates all memory associated with an event configuration object - - @param cfg the event configuration object to be freed. -*/ -EVENT2_EXPORT_SYMBOL -void event_config_free(struct event_config *cfg); - -/** - Enters an event method that should be avoided into the configuration. - - This can be used to avoid event mechanisms that do not support certain - file descriptor types, or for debugging to avoid certain event - mechanisms. An application can make use of multiple event bases to - accommodate incompatible file descriptor types. - - @param cfg the event configuration object - @param method the name of the event method to avoid - @return 0 on success, -1 on failure. -*/ -EVENT2_EXPORT_SYMBOL -int event_config_avoid_method(struct event_config *cfg, const char *method); - -/** - A flag used to describe which features an event_base (must) provide. - - Because of OS limitations, not every Libevent backend supports every - possible feature. You can use this type with - event_config_require_features() to tell Libevent to only proceed if your - event_base implements a given feature, and you can receive this type from - event_base_get_features() to see which features are available. -*/ -enum event_method_feature { - /** Require an event method that allows edge-triggered events with EV_ET. */ - EV_FEATURE_ET = 0x01, - /** Require an event method where having one event triggered among - * many is [approximately] an O(1) operation. This excludes (for - * example) select and poll, which are approximately O(N) for N - * equal to the total number of possible events. */ - EV_FEATURE_O1 = 0x02, - /** Require an event method that allows file descriptors as well as - * sockets. */ - EV_FEATURE_FDS = 0x04, - /** Require an event method that allows you to use EV_CLOSED to detect - * connection close without the necessity of reading all the pending data. - * - * Methods that do support EV_CLOSED may not be able to provide support on - * all kernel versions. - **/ - EV_FEATURE_EARLY_CLOSE = 0x08 -}; - -/** - A flag passed to event_config_set_flag(). - - These flags change the behavior of an allocated event_base. - - @see event_config_set_flag(), event_base_new_with_config(), - event_method_feature - */ -enum event_base_config_flag { - /** Do not allocate a lock for the event base, even if we have - locking set up. - - Setting this option will make it unsafe and nonfunctional to call - functions on the base concurrently from multiple threads. - */ - EVENT_BASE_FLAG_NOLOCK = 0x01, - /** Do not check the EVENT_* environment variables when configuring - an event_base */ - EVENT_BASE_FLAG_IGNORE_ENV = 0x02, - /** Windows only: enable the IOCP dispatcher at startup - - If this flag is set then bufferevent_socket_new() and - evconn_listener_new() will use IOCP-backed implementations - instead of the usual select-based one on Windows. - */ - EVENT_BASE_FLAG_STARTUP_IOCP = 0x04, - /** Instead of checking the current time every time the event loop is - ready to run timeout callbacks, check after each timeout callback. - */ - EVENT_BASE_FLAG_NO_CACHE_TIME = 0x08, - - /** If we are using the epoll backend, this flag says that it is - safe to use Libevent's internal change-list code to batch up - adds and deletes in order to try to do as few syscalls as - possible. Setting this flag can make your code run faster, but - it may trigger a Linux bug: it is not safe to use this flag - if you have any fds cloned by dup() or its variants. Doing so - will produce strange and hard-to-diagnose bugs. - - This flag can also be activated by setting the - EVENT_EPOLL_USE_CHANGELIST environment variable. - - This flag has no effect if you wind up using a backend other than - epoll. - */ - EVENT_BASE_FLAG_EPOLL_USE_CHANGELIST = 0x10, - - /** Ordinarily, Libevent implements its time and timeout code using - the fastest monotonic timer that we have. If this flag is set, - however, we use less efficient more precise timer, assuming one is - present. - */ - EVENT_BASE_FLAG_PRECISE_TIMER = 0x20 -}; - -/** - Return a bitmask of the features implemented by an event base. This - will be a bitwise OR of one or more of the values of - event_method_feature - - @see event_method_feature - */ -EVENT2_EXPORT_SYMBOL -int event_base_get_features(const struct event_base *base); - -/** - Enters a required event method feature that the application demands. - - Note that not every feature or combination of features is supported - on every platform. Code that requests features should be prepared - to handle the case where event_base_new_with_config() returns NULL, as in: -
-     event_config_require_features(cfg, EV_FEATURE_ET);
-     base = event_base_new_with_config(cfg);
-     if (base == NULL) {
-       // We can't get edge-triggered behavior here.
-       event_config_require_features(cfg, 0);
-       base = event_base_new_with_config(cfg);
-     }
-   
- - @param cfg the event configuration object - @param feature a bitfield of one or more event_method_feature values. - Replaces values from previous calls to this function. - @return 0 on success, -1 on failure. - @see event_method_feature, event_base_new_with_config() -*/ -EVENT2_EXPORT_SYMBOL -int event_config_require_features(struct event_config *cfg, int feature); - -/** - * Sets one or more flags to configure what parts of the eventual event_base - * will be initialized, and how they'll work. - * - * @see event_base_config_flags, event_base_new_with_config() - **/ -EVENT2_EXPORT_SYMBOL -int event_config_set_flag(struct event_config *cfg, int flag); - -/** - * Records a hint for the number of CPUs in the system. This is used for - * tuning thread pools, etc, for optimal performance. In Libevent 2.0, - * it is only on Windows, and only when IOCP is in use. - * - * @param cfg the event configuration object - * @param cpus the number of cpus - * @return 0 on success, -1 on failure. - */ -EVENT2_EXPORT_SYMBOL -int event_config_set_num_cpus_hint(struct event_config *cfg, int cpus); - -/** - * Record an interval and/or a number of callbacks after which the event base - * should check for new events. By default, the event base will run as many - * events are as activated at the higest activated priority before checking - * for new events. If you configure it by setting max_interval, it will check - * the time after each callback, and not allow more than max_interval to - * elapse before checking for new events. If you configure it by setting - * max_callbacks to a value >= 0, it will run no more than max_callbacks - * callbacks before checking for new events. - * - * This option can decrease the latency of high-priority events, and - * avoid priority inversions where multiple low-priority events keep us from - * polling for high-priority events, but at the expense of slightly decreasing - * the throughput. Use it with caution! - * - * @param cfg The event_base configuration object. - * @param max_interval An interval after which Libevent should stop running - * callbacks and check for more events, or NULL if there should be - * no such interval. - * @param max_callbacks A number of callbacks after which Libevent should - * stop running callbacks and check for more events, or -1 if there - * should be no such limit. - * @param min_priority A priority below which max_interval and max_callbacks - * should not be enforced. If this is set to 0, they are enforced - * for events of every priority; if it's set to 1, they're enforced - * for events of priority 1 and above, and so on. - * @return 0 on success, -1 on failure. - **/ -EVENT2_EXPORT_SYMBOL -int event_config_set_max_dispatch_interval(struct event_config *cfg, - const struct timeval *max_interval, int max_callbacks, - int min_priority); - -/** - Initialize the event API. - - Use event_base_new_with_config() to initialize a new event base, taking - the specified configuration under consideration. The configuration object - can currently be used to avoid certain event notification mechanisms. - - @param cfg the event configuration object - @return an initialized event_base that can be used to registering events, - or NULL if no event base can be created with the requested event_config. - @see event_base_new(), event_base_free(), event_init(), event_assign() -*/ -EVENT2_EXPORT_SYMBOL -struct event_base *event_base_new_with_config(const struct event_config *); - -/** - Deallocate all memory associated with an event_base, and free the base. - - Note that this function will not close any fds or free any memory passed - to event_new as the argument to callback. - - If there are any pending finalizer callbacks, this function will invoke - them. - - @param eb an event_base to be freed - */ -EVENT2_EXPORT_SYMBOL -void event_base_free(struct event_base *); - -/** - As event_free, but do not run finalizers. - - THIS IS AN EXPERIMENTAL API. IT MIGHT CHANGE BEFORE THE LIBEVENT 2.1 SERIES - BECOMES STABLE. - */ -EVENT2_EXPORT_SYMBOL -void event_base_free_nofinalize(struct event_base *); - -/** @name Log severities - */ -/**@{*/ -#define EVENT_LOG_DEBUG 0 -#define EVENT_LOG_MSG 1 -#define EVENT_LOG_WARN 2 -#define EVENT_LOG_ERR 3 -/**@}*/ - -/* Obsolete names: these are deprecated, but older programs might use them. - * They violate the reserved-identifier namespace. */ -#define _EVENT_LOG_DEBUG EVENT_LOG_DEBUG -#define _EVENT_LOG_MSG EVENT_LOG_MSG -#define _EVENT_LOG_WARN EVENT_LOG_WARN -#define _EVENT_LOG_ERR EVENT_LOG_ERR - -/** - A callback function used to intercept Libevent's log messages. - - @see event_set_log_callback - */ -typedef void (*event_log_cb)(int severity, const char *msg); -/** - Redirect Libevent's log messages. - - @param cb a function taking two arguments: an integer severity between - EVENT_LOG_DEBUG and EVENT_LOG_ERR, and a string. If cb is NULL, - then the default log is used. - - NOTE: The function you provide *must not* call any other libevent - functionality. Doing so can produce undefined behavior. - */ -EVENT2_EXPORT_SYMBOL -void event_set_log_callback(event_log_cb cb); - -/** - A function to be called if Libevent encounters a fatal internal error. - - @see event_set_fatal_callback - */ -typedef void (*event_fatal_cb)(int err); - -/** - Override Libevent's behavior in the event of a fatal internal error. - - By default, Libevent will call exit(1) if a programming error makes it - impossible to continue correct operation. This function allows you to supply - another callback instead. Note that if the function is ever invoked, - something is wrong with your program, or with Libevent: any subsequent calls - to Libevent may result in undefined behavior. - - Libevent will (almost) always log an EVENT_LOG_ERR message before calling - this function; look at the last log message to see why Libevent has died. - */ -EVENT2_EXPORT_SYMBOL -void event_set_fatal_callback(event_fatal_cb cb); - -#define EVENT_DBG_ALL 0xffffffffu -#define EVENT_DBG_NONE 0 - -/** - Turn on debugging logs and have them sent to the default log handler. - - This is a global setting; if you are going to call it, you must call this - before any calls that create an event-base. You must call it before any - multithreaded use of Libevent. - - Debug logs are verbose. - - @param which Controls which debug messages are turned on. This option is - unused for now; for forward compatibility, you must pass in the constant - "EVENT_DBG_ALL" to turn debugging logs on, or "EVENT_DBG_NONE" to turn - debugging logs off. - */ -EVENT2_EXPORT_SYMBOL -void event_enable_debug_logging(ev_uint32_t which); - -/** - Associate a different event base with an event. - - The event to be associated must not be currently active or pending. - - @param eb the event base - @param ev the event - @return 0 on success, -1 on failure. - */ -EVENT2_EXPORT_SYMBOL -int event_base_set(struct event_base *, struct event *); - -/** @name Loop flags - - These flags control the behavior of event_base_loop(). - */ -/**@{*/ -/** Block until we have an active event, then exit once all active events - * have had their callbacks run. */ -#define EVLOOP_ONCE 0x01 -/** Do not block: see which events are ready now, run the callbacks - * of the highest-priority ones, then exit. */ -#define EVLOOP_NONBLOCK 0x02 -/** Do not exit the loop because we have no pending events. Instead, keep - * running until event_base_loopexit() or event_base_loopbreak() makes us - * stop. - */ -#define EVLOOP_NO_EXIT_ON_EMPTY 0x04 -/**@}*/ - -/** - Wait for events to become active, and run their callbacks. - - This is a more flexible version of event_base_dispatch(). - - By default, this loop will run the event base until either there are no more - pending or active events, or until something calls event_base_loopbreak() or - event_base_loopexit(). You can override this behavior with the 'flags' - argument. - - @param eb the event_base structure returned by event_base_new() or - event_base_new_with_config() - @param flags any combination of EVLOOP_ONCE | EVLOOP_NONBLOCK - @return 0 if successful, -1 if an error occurred, or 1 if we exited because - no events were pending or active. - @see event_base_loopexit(), event_base_dispatch(), EVLOOP_ONCE, - EVLOOP_NONBLOCK - */ -EVENT2_EXPORT_SYMBOL -int event_base_loop(struct event_base *, int); - -/** - Exit the event loop after the specified time - - The next event_base_loop() iteration after the given timer expires will - complete normally (handling all queued events) then exit without - blocking for events again. - - Subsequent invocations of event_base_loop() will proceed normally. - - @param eb the event_base structure returned by event_init() - @param tv the amount of time after which the loop should terminate, - or NULL to exit after running all currently active events. - @return 0 if successful, or -1 if an error occurred - @see event_base_loopbreak() - */ -EVENT2_EXPORT_SYMBOL -int event_base_loopexit(struct event_base *, const struct timeval *); - -/** - Abort the active event_base_loop() immediately. - - event_base_loop() will abort the loop after the next event is completed; - event_base_loopbreak() is typically invoked from this event's callback. - This behavior is analogous to the "break;" statement. - - Subsequent invocations of event_base_loop() will proceed normally. - - @param eb the event_base structure returned by event_init() - @return 0 if successful, or -1 if an error occurred - @see event_base_loopexit() - */ -EVENT2_EXPORT_SYMBOL -int event_base_loopbreak(struct event_base *); - -/** - Tell the active event_base_loop() to scan for new events immediately. - - Calling this function makes the currently active event_base_loop() - start the loop over again (scanning for new events) after the current - event callback finishes. If the event loop is not running, this - function has no effect. - - event_base_loopbreak() is typically invoked from this event's callback. - This behavior is analogous to the "continue;" statement. - - Subsequent invocations of event loop will proceed normally. - - @param eb the event_base structure returned by event_init() - @return 0 if successful, or -1 if an error occurred - @see event_base_loopbreak() - */ -EVENT2_EXPORT_SYMBOL -int event_base_loopcontinue(struct event_base *); - -/** - Checks if the event loop was told to exit by event_base_loopexit(). - - This function will return true for an event_base at every point after - event_loopexit() is called, until the event loop is next entered. - - @param eb the event_base structure returned by event_init() - @return true if event_base_loopexit() was called on this event base, - or 0 otherwise - @see event_base_loopexit() - @see event_base_got_break() - */ -EVENT2_EXPORT_SYMBOL -int event_base_got_exit(struct event_base *); - -/** - Checks if the event loop was told to abort immediately by event_base_loopbreak(). - - This function will return true for an event_base at every point after - event_base_loopbreak() is called, until the event loop is next entered. - - @param eb the event_base structure returned by event_init() - @return true if event_base_loopbreak() was called on this event base, - or 0 otherwise - @see event_base_loopbreak() - @see event_base_got_exit() - */ -EVENT2_EXPORT_SYMBOL -int event_base_got_break(struct event_base *); - -/** - * @name event flags - * - * Flags to pass to event_new(), event_assign(), event_pending(), and - * anything else with an argument of the form "short events" - */ -/**@{*/ -/** Indicates that a timeout has occurred. It's not necessary to pass - * this flag to event_for new()/event_assign() to get a timeout. */ -#define EV_TIMEOUT 0x01 -/** Wait for a socket or FD to become readable */ -#define EV_READ 0x02 -/** Wait for a socket or FD to become writeable */ -#define EV_WRITE 0x04 -/** Wait for a POSIX signal to be raised*/ -#define EV_SIGNAL 0x08 -/** - * Persistent event: won't get removed automatically when activated. - * - * When a persistent event with a timeout becomes activated, its timeout - * is reset to 0. - */ -#define EV_PERSIST 0x10 -/** Select edge-triggered behavior, if supported by the backend. */ -#define EV_ET 0x20 -/** - * If this option is provided, then event_del() will not block in one thread - * while waiting for the event callback to complete in another thread. - * - * To use this option safely, you may need to use event_finalize() or - * event_free_finalize() in order to safely tear down an event in a - * multithreaded application. See those functions for more information. - * - * THIS IS AN EXPERIMENTAL API. IT MIGHT CHANGE BEFORE THE LIBEVENT 2.1 SERIES - * BECOMES STABLE. - **/ -#define EV_FINALIZE 0x40 -/** - * Detects connection close events. You can use this to detect when a - * connection has been closed, without having to read all the pending data - * from a connection. - * - * Not all backends support EV_CLOSED. To detect or require it, use the - * feature flag EV_FEATURE_EARLY_CLOSE. - **/ -#define EV_CLOSED 0x80 -/**@}*/ - -/** - @name evtimer_* macros - - Aliases for working with one-shot timer events */ -/**@{*/ -#define evtimer_assign(ev, b, cb, arg) \ - event_assign((ev), (b), -1, 0, (cb), (arg)) -#define evtimer_new(b, cb, arg) event_new((b), -1, 0, (cb), (arg)) -#define evtimer_add(ev, tv) event_add((ev), (tv)) -#define evtimer_del(ev) event_del(ev) -#define evtimer_pending(ev, tv) event_pending((ev), EV_TIMEOUT, (tv)) -#define evtimer_initialized(ev) event_initialized(ev) -/**@}*/ - -/** - @name evsignal_* macros - - Aliases for working with signal events - */ -/**@{*/ -#define evsignal_add(ev, tv) event_add((ev), (tv)) -#define evsignal_assign(ev, b, x, cb, arg) \ - event_assign((ev), (b), (x), EV_SIGNAL|EV_PERSIST, cb, (arg)) -#define evsignal_new(b, x, cb, arg) \ - event_new((b), (x), EV_SIGNAL|EV_PERSIST, (cb), (arg)) -#define evsignal_del(ev) event_del(ev) -#define evsignal_pending(ev, tv) event_pending((ev), EV_SIGNAL, (tv)) -#define evsignal_initialized(ev) event_initialized(ev) -/**@}*/ - -/** - A callback function for an event. - - It receives three arguments: - - @param fd An fd or signal - @param events One or more EV_* flags - @param arg A user-supplied argument. - - @see event_new() - */ -typedef void (*event_callback_fn)(evutil_socket_t, short, void *); - -/** - Return a value used to specify that the event itself must be used as the callback argument. - - The function event_new() takes a callback argument which is passed - to the event's callback function. To specify that the argument to be - passed to the callback function is the event that event_new() returns, - pass in the return value of event_self_cbarg() as the callback argument - for event_new(). - - For example: -
-      struct event *ev = event_new(base, sock, events, callback, %event_self_cbarg());
-  
- - For consistency with event_new(), it is possible to pass the return value - of this function as the callback argument for event_assign() – this - achieves the same result as passing the event in directly. - - @return a value to be passed as the callback argument to event_new() or - event_assign(). - @see event_new(), event_assign() - */ -EVENT2_EXPORT_SYMBOL -void *event_self_cbarg(void); - -/** - Allocate and asssign a new event structure, ready to be added. - - The function event_new() returns a new event that can be used in - future calls to event_add() and event_del(). The fd and events - arguments determine which conditions will trigger the event; the - callback and callback_arg arguments tell Libevent what to do when the - event becomes active. - - If events contains one of EV_READ, EV_WRITE, or EV_READ|EV_WRITE, then - fd is a file descriptor or socket that should get monitored for - readiness to read, readiness to write, or readiness for either operation - (respectively). If events contains EV_SIGNAL, then fd is a signal - number to wait for. If events contains none of those flags, then the - event can be triggered only by a timeout or by manual activation with - event_active(): In this case, fd must be -1. - - The EV_PERSIST flag can also be passed in the events argument: it makes - event_add() persistent until event_del() is called. - - The EV_ET flag is compatible with EV_READ and EV_WRITE, and supported - only by certain backends. It tells Libevent to use edge-triggered - events. - - The EV_TIMEOUT flag has no effect here. - - It is okay to have multiple events all listening on the same fds; but - they must either all be edge-triggered, or all not be edge triggerd. - - When the event becomes active, the event loop will run the provided - callbuck function, with three arguments. The first will be the provided - fd value. The second will be a bitfield of the events that triggered: - EV_READ, EV_WRITE, or EV_SIGNAL. Here the EV_TIMEOUT flag indicates - that a timeout occurred, and EV_ET indicates that an edge-triggered - event occurred. The third event will be the callback_arg pointer that - you provide. - - @param base the event base to which the event should be attached. - @param fd the file descriptor or signal to be monitored, or -1. - @param events desired events to monitor: bitfield of EV_READ, EV_WRITE, - EV_SIGNAL, EV_PERSIST, EV_ET. - @param callback callback function to be invoked when the event occurs - @param callback_arg an argument to be passed to the callback function - - @return a newly allocated struct event that must later be freed with - event_free(). - @see event_free(), event_add(), event_del(), event_assign() - */ -EVENT2_EXPORT_SYMBOL -struct event *event_new(struct event_base *, evutil_socket_t, short, event_callback_fn, void *); - - -/** - Prepare a new, already-allocated event structure to be added. - - The function event_assign() prepares the event structure ev to be used - in future calls to event_add() and event_del(). Unlike event_new(), it - doesn't allocate memory itself: it requires that you have already - allocated a struct event, probably on the heap. Doing this will - typically make your code depend on the size of the event structure, and - thereby create incompatibility with future versions of Libevent. - - The easiest way to avoid this problem is just to use event_new() and - event_free() instead. - - A slightly harder way to future-proof your code is to use - event_get_struct_event_size() to determine the required size of an event - at runtime. - - Note that it is NOT safe to call this function on an event that is - active or pending. Doing so WILL corrupt internal data structures in - Libevent, and lead to strange, hard-to-diagnose bugs. You _can_ use - event_assign to change an existing event, but only if it is not active - or pending! - - The arguments for this function, and the behavior of the events that it - makes, are as for event_new(). - - @param ev an event struct to be modified - @param base the event base to which ev should be attached. - @param fd the file descriptor to be monitored - @param events desired events to monitor; can be EV_READ and/or EV_WRITE - @param callback callback function to be invoked when the event occurs - @param callback_arg an argument to be passed to the callback function - - @return 0 if success, or -1 on invalid arguments. - - @see event_new(), event_add(), event_del(), event_base_once(), - event_get_struct_event_size() - */ -EVENT2_EXPORT_SYMBOL -int event_assign(struct event *, struct event_base *, evutil_socket_t, short, event_callback_fn, void *); - -/** - Deallocate a struct event * returned by event_new(). - - If the event is pending or active, first make it non-pending and - non-active. - */ -EVENT2_EXPORT_SYMBOL -void event_free(struct event *); - -/** - * Callback type for event_finalize and event_free_finalize(). - * - * THIS IS AN EXPERIMENTAL API. IT MIGHT CHANGE BEFORE THE LIBEVENT 2.1 SERIES - * BECOMES STABLE. - * - **/ -typedef void (*event_finalize_callback_fn)(struct event *, void *); -/** - @name Finalization functions - - These functions are used to safely tear down an event in a multithreaded - application. If you construct your events with EV_FINALIZE to avoid - deadlocks, you will need a way to remove an event in the certainty that - it will definitely not be running its callback when you deallocate it - and its callback argument. - - To do this, call one of event_finalize() or event_free_finalize with - 0 for its first argument, the event to tear down as its second argument, - and a callback function as its third argument. The callback will be - invoked as part of the event loop, with the event's priority. - - After you call a finalizer function, event_add() and event_active() will - no longer work on the event, and event_del() will produce a no-op. You - must not try to change the event's fields with event_assign() or - event_set() while the finalize callback is in progress. Once the - callback has been invoked, you should treat the event structure as - containing uninitialized memory. - - The event_free_finalize() function frees the event after it's finalized; - event_finalize() does not. - - A finalizer callback must not make events pending or active. It must not - add events, activate events, or attempt to "resucitate" the event being - finalized in any way. - - THIS IS AN EXPERIMENTAL API. IT MIGHT CHANGE BEFORE THE LIBEVENT 2.1 SERIES - BECOMES STABLE. - - @return 0 on succes, -1 on failure. - */ -/**@{*/ -EVENT2_EXPORT_SYMBOL -int event_finalize(unsigned, struct event *, event_finalize_callback_fn); -EVENT2_EXPORT_SYMBOL -int event_free_finalize(unsigned, struct event *, event_finalize_callback_fn); -/**@}*/ - -/** - Schedule a one-time event - - The function event_base_once() is similar to event_new(). However, it - schedules a callback to be called exactly once, and does not require the - caller to prepare an event structure. - - Note that in Libevent 2.0 and earlier, if the event is never triggered, the - internal memory used to hold it will never be freed. In Libevent 2.1, - the internal memory will get freed by event_base_free() if the event - is never triggered. The 'arg' value, however, will not get freed in either - case--you'll need to free that on your own if you want it to go away. - - @param base an event_base - @param fd a file descriptor to monitor, or -1 for no fd. - @param events event(s) to monitor; can be any of EV_READ | - EV_WRITE, or EV_TIMEOUT - @param callback callback function to be invoked when the event occurs - @param arg an argument to be passed to the callback function - @param timeout the maximum amount of time to wait for the event. NULL - makes an EV_READ/EV_WRITE event make forever; NULL makes an - EV_TIMEOUT event succees immediately. - @return 0 if successful, or -1 if an error occurred - */ -EVENT2_EXPORT_SYMBOL -int event_base_once(struct event_base *, evutil_socket_t, short, event_callback_fn, void *, const struct timeval *); - -/** - Add an event to the set of pending events. - - The function event_add() schedules the execution of the event 'ev' when the - condition specified by event_assign() or event_new() occurs, or when the time - specified in timeout has elapesed. If atimeout is NULL, no timeout - occurs and the function will only be - called if a matching event occurs. The event in the - ev argument must be already initialized by event_assign() or event_new() - and may not be used - in calls to event_assign() until it is no longer pending. - - If the event in the ev argument already has a scheduled timeout, calling - event_add() replaces the old timeout with the new one if tv is non-NULL. - - @param ev an event struct initialized via event_assign() or event_new() - @param timeout the maximum amount of time to wait for the event, or NULL - to wait forever - @return 0 if successful, or -1 if an error occurred - @see event_del(), event_assign(), event_new() - */ -EVENT2_EXPORT_SYMBOL -int event_add(struct event *ev, const struct timeval *timeout); - -/** - Remove a timer from a pending event without removing the event itself. - - If the event has a scheduled timeout, this function unschedules it but - leaves the event otherwise pending. - - @param ev an event struct initialized via event_assign() or event_new() - @return 0 on success, or -1 if an error occurrect. -*/ -EVENT2_EXPORT_SYMBOL -int event_remove_timer(struct event *ev); - -/** - Remove an event from the set of monitored events. - - The function event_del() will cancel the event in the argument ev. If the - event has already executed or has never been added the call will have no - effect. - - @param ev an event struct to be removed from the working set - @return 0 if successful, or -1 if an error occurred - @see event_add() - */ -EVENT2_EXPORT_SYMBOL -int event_del(struct event *); - -/** - As event_del(), but never blocks while the event's callback is running - in another thread, even if the event was constructed without the - EV_FINALIZE flag. - - THIS IS AN EXPERIMENTAL API. IT MIGHT CHANGE BEFORE THE LIBEVENT 2.1 SERIES - BECOMES STABLE. - */ -EVENT2_EXPORT_SYMBOL -int event_del_noblock(struct event *ev); -/** - As event_del(), but always blocks while the event's callback is running - in another thread, even if the event was constructed with the - EV_FINALIZE flag. - - THIS IS AN EXPERIMENTAL API. IT MIGHT CHANGE BEFORE THE LIBEVENT 2.1 SERIES - BECOMES STABLE. - */ -EVENT2_EXPORT_SYMBOL -int event_del_block(struct event *ev); - -/** - Make an event active. - - You can use this function on a pending or a non-pending event to make it - active, so that its callback will be run by event_base_dispatch() or - event_base_loop(). - - One common use in multithreaded programs is to wake the thread running - event_base_loop() from another thread. - - @param ev an event to make active. - @param res a set of flags to pass to the event's callback. - @param ncalls an obsolete argument: this is ignored. - **/ -EVENT2_EXPORT_SYMBOL -void event_active(struct event *ev, int res, short ncalls); - -/** - Checks if a specific event is pending or scheduled. - - @param ev an event struct previously passed to event_add() - @param events the requested event type; any of EV_TIMEOUT|EV_READ| - EV_WRITE|EV_SIGNAL - @param tv if this field is not NULL, and the event has a timeout, - this field is set to hold the time at which the timeout will - expire. - - @return true if the event is pending on any of the events in 'what', (that - is to say, it has been added), or 0 if the event is not added. - */ -EVENT2_EXPORT_SYMBOL -int event_pending(const struct event *ev, short events, struct timeval *tv); - -/** - If called from within the callback for an event, returns that event. - - The behavior of this function is not defined when called from outside the - callback function for an event. - */ -EVENT2_EXPORT_SYMBOL -struct event *event_base_get_running_event(struct event_base *base); - -/** - Test if an event structure might be initialized. - - The event_initialized() function can be used to check if an event has been - initialized. - - Warning: This function is only useful for distinguishing a a zeroed-out - piece of memory from an initialized event, it can easily be confused by - uninitialized memory. Thus, it should ONLY be used to distinguish an - initialized event from zero. - - @param ev an event structure to be tested - @return 1 if the structure might be initialized, or 0 if it has not been - initialized - */ -EVENT2_EXPORT_SYMBOL -int event_initialized(const struct event *ev); - -/** - Get the signal number assigned to a signal event -*/ -#define event_get_signal(ev) ((int)event_get_fd(ev)) - -/** - Get the socket or signal assigned to an event, or -1 if the event has - no socket. -*/ -EVENT2_EXPORT_SYMBOL -evutil_socket_t event_get_fd(const struct event *ev); - -/** - Get the event_base associated with an event. -*/ -EVENT2_EXPORT_SYMBOL -struct event_base *event_get_base(const struct event *ev); - -/** - Return the events (EV_READ, EV_WRITE, etc) assigned to an event. -*/ -EVENT2_EXPORT_SYMBOL -short event_get_events(const struct event *ev); - -/** - Return the callback assigned to an event. -*/ -EVENT2_EXPORT_SYMBOL -event_callback_fn event_get_callback(const struct event *ev); - -/** - Return the callback argument assigned to an event. -*/ -EVENT2_EXPORT_SYMBOL -void *event_get_callback_arg(const struct event *ev); - -/** - Return the priority of an event. - @see event_priority_init(), event_get_priority() -*/ -EVENT2_EXPORT_SYMBOL -int event_get_priority(const struct event *ev); - -/** - Extract _all_ of arguments given to construct a given event. The - event_base is copied into *base_out, the fd is copied into *fd_out, and so - on. - - If any of the "_out" arguments is NULL, it will be ignored. - */ -EVENT2_EXPORT_SYMBOL -void event_get_assignment(const struct event *event, - struct event_base **base_out, evutil_socket_t *fd_out, short *events_out, - event_callback_fn *callback_out, void **arg_out); - -/** - Return the size of struct event that the Libevent library was compiled - with. - - This will be NO GREATER than sizeof(struct event) if you're running with - the same version of Libevent that your application was built with, but - otherwise might not. - - Note that it might be SMALLER than sizeof(struct event) if some future - version of Libevent adds extra padding to the end of struct event. - We might do this to help ensure ABI-compatibility between different - versions of Libevent. - */ -EVENT2_EXPORT_SYMBOL -size_t event_get_struct_event_size(void); - -/** - Get the Libevent version. - - Note that this will give you the version of the library that you're - currently linked against, not the version of the headers that you've - compiled against. - - @return a string containing the version number of Libevent -*/ -EVENT2_EXPORT_SYMBOL -const char *event_get_version(void); - -/** - Return a numeric representation of Libevent's version. - - Note that this will give you the version of the library that you're - currently linked against, not the version of the headers you've used to - compile. - - The format uses one byte each for the major, minor, and patchlevel parts of - the version number. The low-order byte is unused. For example, version - 2.0.1-alpha has a numeric representation of 0x02000100 -*/ -EVENT2_EXPORT_SYMBOL -ev_uint32_t event_get_version_number(void); - -/** As event_get_version, but gives the version of Libevent's headers. */ -#define LIBEVENT_VERSION EVENT__VERSION -/** As event_get_version_number, but gives the version number of Libevent's - * headers. */ -#define LIBEVENT_VERSION_NUMBER EVENT__NUMERIC_VERSION - -/** Largest number of priorities that Libevent can support. */ -#define EVENT_MAX_PRIORITIES 256 -/** - Set the number of different event priorities - - By default Libevent schedules all active events with the same priority. - However, some time it is desirable to process some events with a higher - priority than others. For that reason, Libevent supports strict priority - queues. Active events with a lower priority are always processed before - events with a higher priority. - - The number of different priorities can be set initially with the - event_base_priority_init() function. This function should be called - before the first call to event_base_dispatch(). The - event_priority_set() function can be used to assign a priority to an - event. By default, Libevent assigns the middle priority to all events - unless their priority is explicitly set. - - Note that urgent-priority events can starve less-urgent events: after - running all urgent-priority callbacks, Libevent checks for more urgent - events again, before running less-urgent events. Less-urgent events - will not have their callbacks run until there are no events more urgent - than them that want to be active. - - @param eb the event_base structure returned by event_base_new() - @param npriorities the maximum number of priorities - @return 0 if successful, or -1 if an error occurred - @see event_priority_set() - */ -EVENT2_EXPORT_SYMBOL -int event_base_priority_init(struct event_base *, int); - -/** - Get the number of different event priorities. - - @param eb the event_base structure returned by event_base_new() - @return Number of different event priorities - @see event_base_priority_init() -*/ -EVENT2_EXPORT_SYMBOL -int event_base_get_npriorities(struct event_base *eb); - -/** - Assign a priority to an event. - - @param ev an event struct - @param priority the new priority to be assigned - @return 0 if successful, or -1 if an error occurred - @see event_priority_init(), event_get_priority() - */ -EVENT2_EXPORT_SYMBOL -int event_priority_set(struct event *, int); - -/** - Prepare an event_base to use a large number of timeouts with the same - duration. - - Libevent's default scheduling algorithm is optimized for having a large - number of timeouts with their durations more or less randomly - distributed. But if you have a large number of timeouts that all have - the same duration (for example, if you have a large number of - connections that all have a 10-second timeout), then you can improve - Libevent's performance by telling Libevent about it. - - To do this, call this function with the common duration. It will return a - pointer to a different, opaque timeout value. (Don't depend on its actual - contents!) When you use this timeout value in event_add(), Libevent will - schedule the event more efficiently. - - (This optimization probably will not be worthwhile until you have thousands - or tens of thousands of events with the same timeout.) - */ -EVENT2_EXPORT_SYMBOL -const struct timeval *event_base_init_common_timeout(struct event_base *base, - const struct timeval *duration); - -#if !defined(EVENT__DISABLE_MM_REPLACEMENT) || defined(EVENT_IN_DOXYGEN_) -/** - Override the functions that Libevent uses for memory management. - - Usually, Libevent uses the standard libc functions malloc, realloc, and - free to allocate memory. Passing replacements for those functions to - event_set_mem_functions() overrides this behavior. - - Note that all memory returned from Libevent will be allocated by the - replacement functions rather than by malloc() and realloc(). Thus, if you - have replaced those functions, it will not be appropriate to free() memory - that you get from Libevent. Instead, you must use the free_fn replacement - that you provided. - - Note also that if you are going to call this function, you should do so - before any call to any Libevent function that does allocation. - Otherwise, those funtions will allocate their memory using malloc(), but - then later free it using your provided free_fn. - - @param malloc_fn A replacement for malloc. - @param realloc_fn A replacement for realloc - @param free_fn A replacement for free. - **/ -EVENT2_EXPORT_SYMBOL -void event_set_mem_functions( - void *(*malloc_fn)(size_t sz), - void *(*realloc_fn)(void *ptr, size_t sz), - void (*free_fn)(void *ptr)); -/** This definition is present if Libevent was built with support for - event_set_mem_functions() */ -#define EVENT_SET_MEM_FUNCTIONS_IMPLEMENTED -#endif - -/** - Writes a human-readable description of all inserted and/or active - events to a provided stdio stream. - - This is intended for debugging; its format is not guaranteed to be the same - between libevent versions. - - @param base An event_base on which to scan the events. - @param output A stdio file to write on. - */ -EVENT2_EXPORT_SYMBOL -void event_base_dump_events(struct event_base *, FILE *); - - -/** - Activates all pending events for the given fd and event mask. - - This function activates pending events only. Events which have not been - added will not become active. - - @param base the event_base on which to activate the events. - @param fd An fd to active events on. - @param events One or more of EV_{READ,WRITE}. - */ -EVENT2_EXPORT_SYMBOL -void event_base_active_by_fd(struct event_base *base, evutil_socket_t fd, short events); - -/** - Activates all pending signals with a given signal number - - This function activates pending events only. Events which have not been - added will not become active. - - @param base the event_base on which to activate the events. - @param fd The signal to active events on. - */ -EVENT2_EXPORT_SYMBOL -void event_base_active_by_signal(struct event_base *base, int sig); - -/** - * Callback for iterating events in an event base via event_base_foreach_event - */ -typedef int (*event_base_foreach_event_cb)(const struct event_base *, const struct event *, void *); - -/** - Iterate over all added or active events events in an event loop, and invoke - a given callback on each one. - - The callback must not call any function that modifies the event base, that - modifies any event in the event base, or that adds or removes any event to - the event base. Doing so is unsupported and will lead to undefined - behavior -- likely, to crashes. - - event_base_foreach_event() holds a lock on the event_base() for the whole - time it's running: slow callbacks are not advisable. - - Note that Libevent adds some events of its own to make pieces of its - functionality work. You must not assume that the only events you'll - encounter will be the ones you added yourself. - - The callback function must return 0 to continue iteration, or some other - integer to stop iterating. - - @param base An event_base on which to scan the events. - @param fn A callback function to receive the events. - @param arg An argument passed to the callback function. - @return 0 if we iterated over every event, or the value returned by the - callback function if the loop exited early. -*/ -EVENT2_EXPORT_SYMBOL -int event_base_foreach_event(struct event_base *base, event_base_foreach_event_cb fn, void *arg); - - -/** Sets 'tv' to the current time (as returned by gettimeofday()), - looking at the cached value in 'base' if possible, and calling - gettimeofday() or clock_gettime() as appropriate if there is no - cached time. - - Generally, this value will only be cached while actually - processing event callbacks, and may be very inaccuate if your - callbacks take a long time to execute. - - Returns 0 on success, negative on failure. - */ -EVENT2_EXPORT_SYMBOL -int event_base_gettimeofday_cached(struct event_base *base, - struct timeval *tv); - -/** Update cached_tv in the 'base' to the current time - * - * You can use this function is useful for selectively increasing - * the accuracy of the cached time value in 'base' during callbacks - * that take a long time to execute. - * - * This function has no effect if the base is currently not in its - * event loop, or if timeval caching is disabled via - * EVENT_BASE_FLAG_NO_CACHE_TIME. - * - * @return 0 on success, -1 on failure - */ -EVENT2_EXPORT_SYMBOL -int event_base_update_cache_time(struct event_base *base); - -/** Release up all globally-allocated resources allocated by Libevent. - - This function does not free developer-controlled resources like - event_bases, events, bufferevents, listeners, and so on. It only releases - resources like global locks that there is no other way to free. - - It is not actually necessary to call this function before exit: every - resource that it frees would be released anyway on exit. It mainly exists - so that resource-leak debugging tools don't see Libevent as holding - resources at exit. - - You should only call this function when no other Libevent functions will - be invoked -- e.g., when cleanly exiting a program. - */ -EVENT2_EXPORT_SYMBOL -void libevent_global_shutdown(void); - -#ifdef __cplusplus -} -#endif - -#endif /* EVENT2_EVENT_H_INCLUDED_ */ diff --git a/cache/include/libevent2/event2/event_compat.h b/cache/include/libevent2/event2/event_compat.h deleted file mode 100644 index 5110175..0000000 --- a/cache/include/libevent2/event2/event_compat.h +++ /dev/null @@ -1,230 +0,0 @@ -/* - * Copyright (c) 2000-2007 Niels Provos - * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef EVENT2_EVENT_COMPAT_H_INCLUDED_ -#define EVENT2_EVENT_COMPAT_H_INCLUDED_ - -/** @file event2/event_compat.h - - Potentially non-threadsafe versions of the functions in event.h: provided - only for backwards compatibility. - - In the oldest versions of Libevent, event_base was not a first-class - structure. Instead, there was a single event base that every function - manipulated. Later, when separate event bases were added, the old functions - that didn't take an event_base argument needed to work by manipulating the - "current" event base. This could lead to thread-safety issues, and obscure, - hard-to-diagnose bugs. - - @deprecated All functions in this file are by definition deprecated. - */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#ifdef EVENT__HAVE_SYS_TYPES_H -#include -#endif -#ifdef EVENT__HAVE_SYS_TIME_H -#include -#endif - -/* For int types. */ -#include - -/** - Initialize the event API. - - The event API needs to be initialized with event_init() before it can be - used. Sets the global current base that gets used for events that have no - base associated with them. - - @deprecated This function is deprecated because it replaces the "current" - event_base, and is totally unsafe for multithreaded use. The replacement - is event_base_new(). - - @see event_base_set(), event_base_new() - */ -EVENT2_EXPORT_SYMBOL -struct event_base *event_init(void); - -/** - Loop to process events. - - Like event_base_dispatch(), but uses the "current" base. - - @deprecated This function is deprecated because it is easily confused by - multiple calls to event_init(), and because it is not safe for - multithreaded use. The replacement is event_base_dispatch(). - - @see event_base_dispatch(), event_init() - */ -EVENT2_EXPORT_SYMBOL -int event_dispatch(void); - -/** - Handle events. - - This function behaves like event_base_loop(), but uses the "current" base - - @deprecated This function is deprecated because it uses the event base from - the last call to event_init, and is therefore not safe for multithreaded - use. The replacement is event_base_loop(). - - @see event_base_loop(), event_init() -*/ -EVENT2_EXPORT_SYMBOL -int event_loop(int); - - -/** - Exit the event loop after the specified time. - - This function behaves like event_base_loopexit(), except that it uses the - "current" base. - - @deprecated This function is deprecated because it uses the event base from - the last call to event_init, and is therefore not safe for multithreaded - use. The replacement is event_base_loopexit(). - - @see event_init, event_base_loopexit() - */ -EVENT2_EXPORT_SYMBOL -int event_loopexit(const struct timeval *); - - -/** - Abort the active event_loop() immediately. - - This function behaves like event_base_loopbreakt(), except that it uses the - "current" base. - - @deprecated This function is deprecated because it uses the event base from - the last call to event_init, and is therefore not safe for multithreaded - use. The replacement is event_base_loopbreak(). - - @see event_base_loopbreak(), event_init() - */ -EVENT2_EXPORT_SYMBOL -int event_loopbreak(void); - -/** - Schedule a one-time event to occur. - - @deprecated This function is obsolete, and has been replaced by - event_base_once(). Its use is deprecated because it relies on the - "current" base configured by event_init(). - - @see event_base_once() - */ -EVENT2_EXPORT_SYMBOL -int event_once(evutil_socket_t , short, - void (*)(evutil_socket_t, short, void *), void *, const struct timeval *); - - -/** - Get the kernel event notification mechanism used by Libevent. - - @deprecated This function is obsolete, and has been replaced by - event_base_get_method(). Its use is deprecated because it relies on the - "current" base configured by event_init(). - - @see event_base_get_method() - */ -EVENT2_EXPORT_SYMBOL -const char *event_get_method(void); - - -/** - Set the number of different event priorities. - - @deprecated This function is deprecated because it is easily confused by - multiple calls to event_init(), and because it is not safe for - multithreaded use. The replacement is event_base_priority_init(). - - @see event_base_priority_init() - */ -EVENT2_EXPORT_SYMBOL -int event_priority_init(int); - -/** - Prepare an event structure to be added. - - @deprecated event_set() is not recommended for new code, because it requires - a subsequent call to event_base_set() to be safe under most circumstances. - Use event_assign() or event_new() instead. - */ -EVENT2_EXPORT_SYMBOL -void event_set(struct event *, evutil_socket_t, short, void (*)(evutil_socket_t, short, void *), void *); - -#define evtimer_set(ev, cb, arg) event_set((ev), -1, 0, (cb), (arg)) -#define evsignal_set(ev, x, cb, arg) \ - event_set((ev), (x), EV_SIGNAL|EV_PERSIST, (cb), (arg)) - - -/** - @name timeout_* macros - - @deprecated These macros are deprecated because their naming is inconsistent - with the rest of Libevent. Use the evtimer_* macros instead. - @{ - */ -#define timeout_add(ev, tv) event_add((ev), (tv)) -#define timeout_set(ev, cb, arg) event_set((ev), -1, 0, (cb), (arg)) -#define timeout_del(ev) event_del(ev) -#define timeout_pending(ev, tv) event_pending((ev), EV_TIMEOUT, (tv)) -#define timeout_initialized(ev) event_initialized(ev) -/**@}*/ - -/** - @name signal_* macros - - @deprecated These macros are deprecated because their naming is inconsistent - with the rest of Libevent. Use the evsignal_* macros instead. - @{ - */ -#define signal_add(ev, tv) event_add((ev), (tv)) -#define signal_set(ev, x, cb, arg) \ - event_set((ev), (x), EV_SIGNAL|EV_PERSIST, (cb), (arg)) -#define signal_del(ev) event_del(ev) -#define signal_pending(ev, tv) event_pending((ev), EV_SIGNAL, (tv)) -#define signal_initialized(ev) event_initialized(ev) -/**@}*/ - -#ifndef EVENT_FD -/* These macros are obsolete; use event_get_fd and event_get_signal instead. */ -#define EVENT_FD(ev) ((int)event_get_fd(ev)) -#define EVENT_SIGNAL(ev) event_get_signal(ev) -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* EVENT2_EVENT_COMPAT_H_INCLUDED_ */ diff --git a/cache/include/libevent2/event2/event_struct.h b/cache/include/libevent2/event2/event_struct.h deleted file mode 100644 index 1c8b71b..0000000 --- a/cache/include/libevent2/event2/event_struct.h +++ /dev/null @@ -1,180 +0,0 @@ -/* - * Copyright (c) 2000-2007 Niels Provos - * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef EVENT2_EVENT_STRUCT_H_INCLUDED_ -#define EVENT2_EVENT_STRUCT_H_INCLUDED_ - -/** @file event2/event_struct.h - - Structures used by event.h. Using these structures directly WILL harm - forward compatibility: be careful. - - No field declared in this file should be used directly in user code. Except - for historical reasons, these fields would not be exposed at all. - */ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#ifdef EVENT__HAVE_SYS_TYPES_H -#include -#endif -#ifdef EVENT__HAVE_SYS_TIME_H -#include -#endif - -/* For int types. */ -#include - -/* For evkeyvalq */ -#include - -#define EVLIST_TIMEOUT 0x01 -#define EVLIST_INSERTED 0x02 -#define EVLIST_SIGNAL 0x04 -#define EVLIST_ACTIVE 0x08 -#define EVLIST_INTERNAL 0x10 -#define EVLIST_ACTIVE_LATER 0x20 -#define EVLIST_FINALIZING 0x40 -#define EVLIST_INIT 0x80 - -#define EVLIST_ALL 0xff - -/* Fix so that people don't have to run with */ -#ifndef TAILQ_ENTRY -#define EVENT_DEFINED_TQENTRY_ -#define TAILQ_ENTRY(type) \ -struct { \ - struct type *tqe_next; /* next element */ \ - struct type **tqe_prev; /* address of previous next element */ \ -} -#endif /* !TAILQ_ENTRY */ - -#ifndef TAILQ_HEAD -#define EVENT_DEFINED_TQHEAD_ -#define TAILQ_HEAD(name, type) \ -struct name { \ - struct type *tqh_first; \ - struct type **tqh_last; \ -} -#endif - -/* Fix so that people don't have to run with */ -#ifndef LIST_ENTRY -#define EVENT_DEFINED_LISTENTRY_ -#define LIST_ENTRY(type) \ -struct { \ - struct type *le_next; /* next element */ \ - struct type **le_prev; /* address of previous next element */ \ -} -#endif /* !LIST_ENTRY */ - -#ifndef LIST_HEAD -#define EVENT_DEFINED_LISTHEAD_ -#define LIST_HEAD(name, type) \ -struct name { \ - struct type *lh_first; /* first element */ \ - } -#endif /* !LIST_HEAD */ - -struct event; - -struct event_callback { - TAILQ_ENTRY(event_callback) evcb_active_next; - short evcb_flags; - ev_uint8_t evcb_pri; /* smaller numbers are higher priority */ - ev_uint8_t evcb_closure; - /* allows us to adopt for different types of events */ - union { - void (*evcb_callback)(evutil_socket_t, short, void *); - void (*evcb_selfcb)(struct event_callback *, void *); - void (*evcb_evfinalize)(struct event *, void *); - void (*evcb_cbfinalize)(struct event_callback *, void *); - } evcb_cb_union; - void *evcb_arg; -}; - -struct event_base; -struct event { - struct event_callback ev_evcallback; - - /* for managing timeouts */ - union { - TAILQ_ENTRY(event) ev_next_with_common_timeout; - int min_heap_idx; - } ev_timeout_pos; - evutil_socket_t ev_fd; - - struct event_base *ev_base; - - union { - /* used for io events */ - struct { - LIST_ENTRY (event) ev_io_next; - struct timeval ev_timeout; - } ev_io; - - /* used by signal events */ - struct { - LIST_ENTRY (event) ev_signal_next; - short ev_ncalls; - /* Allows deletes in callback */ - short *ev_pncalls; - } ev_signal; - } ev_; - - short ev_events; - short ev_res; /* result passed to event callback */ - struct timeval ev_timeout; -}; - -TAILQ_HEAD (event_list, event); - -#ifdef EVENT_DEFINED_TQENTRY_ -#undef TAILQ_ENTRY -#endif - -#ifdef EVENT_DEFINED_TQHEAD_ -#undef TAILQ_HEAD -#endif - -LIST_HEAD (event_dlist, event); - -#ifdef EVENT_DEFINED_LISTENTRY_ -#undef LIST_ENTRY -#endif - -#ifdef EVENT_DEFINED_LISTHEAD_ -#undef LIST_HEAD -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* EVENT2_EVENT_STRUCT_H_INCLUDED_ */ diff --git a/cache/include/libevent2/event2/http.h b/cache/include/libevent2/event2/http.h deleted file mode 100644 index 8fb5642..0000000 --- a/cache/include/libevent2/event2/http.h +++ /dev/null @@ -1,1189 +0,0 @@ -/* - * Copyright (c) 2000-2007 Niels Provos - * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef EVENT2_HTTP_H_INCLUDED_ -#define EVENT2_HTTP_H_INCLUDED_ - -/* For int types. */ -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* In case we haven't included the right headers yet. */ -struct evbuffer; -struct event_base; -struct bufferevent; -struct evhttp_connection; - -/** @file event2/http.h - * - * Basic support for HTTP serving. - * - * As Libevent is a library for dealing with event notification and most - * interesting applications are networked today, I have often found the - * need to write HTTP code. The following prototypes and definitions provide - * an application with a minimal interface for making HTTP requests and for - * creating a very simple HTTP server. - */ - -/* Response codes */ -#define HTTP_OK 200 /**< request completed ok */ -#define HTTP_NOCONTENT 204 /**< request does not have content */ -#define HTTP_MOVEPERM 301 /**< the uri moved permanently */ -#define HTTP_MOVETEMP 302 /**< the uri moved temporarily */ -#define HTTP_NOTMODIFIED 304 /**< page was not modified from last */ -#define HTTP_BADREQUEST 400 /**< invalid http request was made */ -#define HTTP_NOTFOUND 404 /**< could not find content for uri */ -#define HTTP_BADMETHOD 405 /**< method not allowed for this uri */ -#define HTTP_ENTITYTOOLARGE 413 /**< */ -#define HTTP_EXPECTATIONFAILED 417 /**< we can't handle this expectation */ -#define HTTP_INTERNAL 500 /**< internal error */ -#define HTTP_NOTIMPLEMENTED 501 /**< not implemented */ -#define HTTP_SERVUNAVAIL 503 /**< the server is not available */ - -struct evhttp; -struct evhttp_request; -struct evkeyvalq; -struct evhttp_bound_socket; -struct evconnlistener; -struct evdns_base; - -/** - * Create a new HTTP server. - * - * @param base (optional) the event base to receive the HTTP events - * @return a pointer to a newly initialized evhttp server structure - * @see evhttp_free() - */ -EVENT2_EXPORT_SYMBOL -struct evhttp *evhttp_new(struct event_base *base); - -/** - * Binds an HTTP server on the specified address and port. - * - * Can be called multiple times to bind the same http server - * to multiple different ports. - * - * @param http a pointer to an evhttp object - * @param address a string containing the IP address to listen(2) on - * @param port the port number to listen on - * @return 0 on success, -1 on failure. - * @see evhttp_accept_socket() - */ -EVENT2_EXPORT_SYMBOL -int evhttp_bind_socket(struct evhttp *http, const char *address, ev_uint16_t port); - -/** - * Like evhttp_bind_socket(), but returns a handle for referencing the socket. - * - * The returned pointer is not valid after \a http is freed. - * - * @param http a pointer to an evhttp object - * @param address a string containing the IP address to listen(2) on - * @param port the port number to listen on - * @return Handle for the socket on success, NULL on failure. - * @see evhttp_bind_socket(), evhttp_del_accept_socket() - */ -EVENT2_EXPORT_SYMBOL -struct evhttp_bound_socket *evhttp_bind_socket_with_handle(struct evhttp *http, const char *address, ev_uint16_t port); - -/** - * Makes an HTTP server accept connections on the specified socket. - * - * This may be useful to create a socket and then fork multiple instances - * of an http server, or when a socket has been communicated via file - * descriptor passing in situations where an http servers does not have - * permissions to bind to a low-numbered port. - * - * Can be called multiple times to have the http server listen to - * multiple different sockets. - * - * @param http a pointer to an evhttp object - * @param fd a socket fd that is ready for accepting connections - * @return 0 on success, -1 on failure. - * @see evhttp_bind_socket() - */ -EVENT2_EXPORT_SYMBOL -int evhttp_accept_socket(struct evhttp *http, evutil_socket_t fd); - -/** - * Like evhttp_accept_socket(), but returns a handle for referencing the socket. - * - * The returned pointer is not valid after \a http is freed. - * - * @param http a pointer to an evhttp object - * @param fd a socket fd that is ready for accepting connections - * @return Handle for the socket on success, NULL on failure. - * @see evhttp_accept_socket(), evhttp_del_accept_socket() - */ -EVENT2_EXPORT_SYMBOL -struct evhttp_bound_socket *evhttp_accept_socket_with_handle(struct evhttp *http, evutil_socket_t fd); - -/** - * The most low-level evhttp_bind/accept method: takes an evconnlistener, and - * returns an evhttp_bound_socket. The listener will be freed when the bound - * socket is freed. - */ -EVENT2_EXPORT_SYMBOL -struct evhttp_bound_socket *evhttp_bind_listener(struct evhttp *http, struct evconnlistener *listener); - -/** - * Return the listener used to implement a bound socket. - */ -EVENT2_EXPORT_SYMBOL -struct evconnlistener *evhttp_bound_socket_get_listener(struct evhttp_bound_socket *bound); - -typedef void evhttp_bound_socket_foreach_fn(struct evhttp_bound_socket *, void *); -/** - * Applies the function specified in the first argument to all - * evhttp_bound_sockets associated with "http". The user must not - * attempt to free or remove any connections, sockets or listeners - * in the callback "function". - * - * @param http pointer to an evhttp object - * @param function function to apply to every bound socket - * @param argument pointer value passed to function for every socket iterated - */ -EVENT2_EXPORT_SYMBOL -void evhttp_foreach_bound_socket(struct evhttp *http, evhttp_bound_socket_foreach_fn *function, void *argument); - -/** - * Makes an HTTP server stop accepting connections on the specified socket - * - * This may be useful when a socket has been sent via file descriptor passing - * and is no longer needed by the current process. - * - * If you created this bound socket with evhttp_bind_socket_with_handle or - * evhttp_accept_socket_with_handle, this function closes the fd you provided. - * If you created this bound socket with evhttp_bind_listener, this function - * frees the listener you provided. - * - * \a bound_socket is an invalid pointer after this call returns. - * - * @param http a pointer to an evhttp object - * @param bound_socket a handle returned by evhttp_{bind,accept}_socket_with_handle - * @see evhttp_bind_socket_with_handle(), evhttp_accept_socket_with_handle() - */ -EVENT2_EXPORT_SYMBOL -void evhttp_del_accept_socket(struct evhttp *http, struct evhttp_bound_socket *bound_socket); - -/** - * Get the raw file descriptor referenced by an evhttp_bound_socket. - * - * @param bound_socket a handle returned by evhttp_{bind,accept}_socket_with_handle - * @return the file descriptor used by the bound socket - * @see evhttp_bind_socket_with_handle(), evhttp_accept_socket_with_handle() - */ -EVENT2_EXPORT_SYMBOL -evutil_socket_t evhttp_bound_socket_get_fd(struct evhttp_bound_socket *bound_socket); - -/** - * Free the previously created HTTP server. - * - * Works only if no requests are currently being served. - * - * @param http the evhttp server object to be freed - * @see evhttp_start() - */ -EVENT2_EXPORT_SYMBOL -void evhttp_free(struct evhttp* http); - -/** XXX Document. */ -EVENT2_EXPORT_SYMBOL -void evhttp_set_max_headers_size(struct evhttp* http, ev_ssize_t max_headers_size); -/** XXX Document. */ -EVENT2_EXPORT_SYMBOL -void evhttp_set_max_body_size(struct evhttp* http, ev_ssize_t max_body_size); - -/** - Set the value to use for the Content-Type header when none was provided. If - the content type string is NULL, the Content-Type header will not be - automatically added. - - @param http the http server on which to set the default content type - @param content_type the value for the Content-Type header -*/ -EVENT2_EXPORT_SYMBOL -void evhttp_set_default_content_type(struct evhttp *http, - const char *content_type); - -/** - Sets the what HTTP methods are supported in requests accepted by this - server, and passed to user callbacks. - - If not supported they will generate a "405 Method not allowed" response. - - By default this includes the following methods: GET, POST, HEAD, PUT, DELETE - - @param http the http server on which to set the methods - @param methods bit mask constructed from evhttp_cmd_type values -*/ -EVENT2_EXPORT_SYMBOL -void evhttp_set_allowed_methods(struct evhttp* http, ev_uint16_t methods); - -/** - Set a callback for a specified URI - - @param http the http sever on which to set the callback - @param path the path for which to invoke the callback - @param cb the callback function that gets invoked on requesting path - @param cb_arg an additional context argument for the callback - @return 0 on success, -1 if the callback existed already, -2 on failure -*/ -EVENT2_EXPORT_SYMBOL -int evhttp_set_cb(struct evhttp *http, const char *path, - void (*cb)(struct evhttp_request *, void *), void *cb_arg); - -/** Removes the callback for a specified URI */ -EVENT2_EXPORT_SYMBOL -int evhttp_del_cb(struct evhttp *, const char *); - -/** - Set a callback for all requests that are not caught by specific callbacks - - Invokes the specified callback for all requests that do not match any of - the previously specified request paths. This is catchall for requests not - specifically configured with evhttp_set_cb(). - - @param http the evhttp server object for which to set the callback - @param cb the callback to invoke for any unmatched requests - @param arg an context argument for the callback -*/ -EVENT2_EXPORT_SYMBOL -void evhttp_set_gencb(struct evhttp *http, - void (*cb)(struct evhttp_request *, void *), void *arg); - -/** - Set a callback used to create new bufferevents for connections - to a given evhttp object. - - You can use this to override the default bufferevent type -- for example, - to make this evhttp object use SSL bufferevents rather than unencrypted - ones. - - New bufferevents must be allocated with no fd set on them. - - @param http the evhttp server object for which to set the callback - @param cb the callback to invoke for incoming connections - @param arg an context argument for the callback - */ -EVENT2_EXPORT_SYMBOL -void evhttp_set_bevcb(struct evhttp *http, - struct bufferevent *(*cb)(struct event_base *, void *), void *arg); - -/** - Adds a virtual host to the http server. - - A virtual host is a newly initialized evhttp object that has request - callbacks set on it via evhttp_set_cb() or evhttp_set_gencb(). It - most not have any listing sockets associated with it. - - If the virtual host has not been removed by the time that evhttp_free() - is called on the main http server, it will be automatically freed, too. - - It is possible to have hierarchical vhosts. For example: A vhost - with the pattern *.example.com may have other vhosts with patterns - foo.example.com and bar.example.com associated with it. - - @param http the evhttp object to which to add a virtual host - @param pattern the glob pattern against which the hostname is matched. - The match is case insensitive and follows otherwise regular shell - matching. - @param vhost the virtual host to add the regular http server. - @return 0 on success, -1 on failure - @see evhttp_remove_virtual_host() -*/ -EVENT2_EXPORT_SYMBOL -int evhttp_add_virtual_host(struct evhttp* http, const char *pattern, - struct evhttp* vhost); - -/** - Removes a virtual host from the http server. - - @param http the evhttp object from which to remove the virtual host - @param vhost the virtual host to remove from the regular http server. - @return 0 on success, -1 on failure - @see evhttp_add_virtual_host() -*/ -EVENT2_EXPORT_SYMBOL -int evhttp_remove_virtual_host(struct evhttp* http, struct evhttp* vhost); - -/** - Add a server alias to an http object. The http object can be a virtual - host or the main server. - - @param http the evhttp object - @param alias the alias to add - @see evhttp_add_remove_alias() -*/ -EVENT2_EXPORT_SYMBOL -int evhttp_add_server_alias(struct evhttp *http, const char *alias); - -/** - Remove a server alias from an http object. - - @param http the evhttp object - @param alias the alias to remove - @see evhttp_add_server_alias() -*/ -EVENT2_EXPORT_SYMBOL -int evhttp_remove_server_alias(struct evhttp *http, const char *alias); - -/** - * Set the timeout for an HTTP request. - * - * @param http an evhttp object - * @param timeout_in_secs the timeout, in seconds - */ -EVENT2_EXPORT_SYMBOL -void evhttp_set_timeout(struct evhttp *http, int timeout_in_secs); - -/** - * Set the timeout for an HTTP request. - * - * @param http an evhttp object - * @param tv the timeout, or NULL - */ -EVENT2_EXPORT_SYMBOL -void evhttp_set_timeout_tv(struct evhttp *http, const struct timeval* tv); - -/* Read all the clients body, and only after this respond with an error if the - * clients body exceed max_body_size */ -#define EVHTTP_SERVER_LINGERING_CLOSE 0x0001 -/** - * Set connection flags for HTTP server. - * - * @see EVHTTP_SERVER_* - * @return 0 on success, otherwise non zero (for example if flag doesn't - * supported). - */ -EVENT2_EXPORT_SYMBOL -int evhttp_set_flags(struct evhttp *http, int flags); - -/* Request/Response functionality */ - -/** - * Send an HTML error message to the client. - * - * @param req a request object - * @param error the HTTP error code - * @param reason a brief explanation of the error. If this is NULL, we'll - * just use the standard meaning of the error code. - */ -EVENT2_EXPORT_SYMBOL -void evhttp_send_error(struct evhttp_request *req, int error, - const char *reason); - -/** - * Send an HTML reply to the client. - * - * The body of the reply consists of the data in databuf. After calling - * evhttp_send_reply() databuf will be empty, but the buffer is still - * owned by the caller and needs to be deallocated by the caller if - * necessary. - * - * @param req a request object - * @param code the HTTP response code to send - * @param reason a brief message to send with the response code - * @param databuf the body of the response - */ -EVENT2_EXPORT_SYMBOL -void evhttp_send_reply(struct evhttp_request *req, int code, - const char *reason, struct evbuffer *databuf); - -/* Low-level response interface, for streaming/chunked replies */ - -/** - Initiate a reply that uses Transfer-Encoding chunked. - - This allows the caller to stream the reply back to the client and is - useful when either not all of the reply data is immediately available - or when sending very large replies. - - The caller needs to supply data chunks with evhttp_send_reply_chunk() - and complete the reply by calling evhttp_send_reply_end(). - - @param req a request object - @param code the HTTP response code to send - @param reason a brief message to send with the response code -*/ -EVENT2_EXPORT_SYMBOL -void evhttp_send_reply_start(struct evhttp_request *req, int code, - const char *reason); - -/** - Send another data chunk as part of an ongoing chunked reply. - - The reply chunk consists of the data in databuf. After calling - evhttp_send_reply_chunk() databuf will be empty, but the buffer is - still owned by the caller and needs to be deallocated by the caller - if necessary. - - @param req a request object - @param databuf the data chunk to send as part of the reply. -*/ -EVENT2_EXPORT_SYMBOL -void evhttp_send_reply_chunk(struct evhttp_request *req, - struct evbuffer *databuf); - -/** - Send another data chunk as part of an ongoing chunked reply. - - The reply chunk consists of the data in databuf. After calling - evhttp_send_reply_chunk() databuf will be empty, but the buffer is - still owned by the caller and needs to be deallocated by the caller - if necessary. - - @param req a request object - @param databuf the data chunk to send as part of the reply. - @param cb callback funcion - @param call back's argument. -*/ -EVENT2_EXPORT_SYMBOL -void evhttp_send_reply_chunk_with_cb(struct evhttp_request *, struct evbuffer *, - void (*cb)(struct evhttp_connection *, void *), void *arg); - -/** - Complete a chunked reply, freeing the request as appropriate. - - @param req a request object -*/ -EVENT2_EXPORT_SYMBOL -void evhttp_send_reply_end(struct evhttp_request *req); - -/* - * Interfaces for making requests - */ - -/** The different request types supported by evhttp. These are as specified - * in RFC2616, except for PATCH which is specified by RFC5789. - * - * By default, only some of these methods are accepted and passed to user - * callbacks; use evhttp_set_allowed_methods() to change which methods - * are allowed. - */ -enum evhttp_cmd_type { - EVHTTP_REQ_GET = 1 << 0, - EVHTTP_REQ_POST = 1 << 1, - EVHTTP_REQ_HEAD = 1 << 2, - EVHTTP_REQ_PUT = 1 << 3, - EVHTTP_REQ_DELETE = 1 << 4, - EVHTTP_REQ_OPTIONS = 1 << 5, - EVHTTP_REQ_TRACE = 1 << 6, - EVHTTP_REQ_CONNECT = 1 << 7, - EVHTTP_REQ_PATCH = 1 << 8 -}; - -/** a request object can represent either a request or a reply */ -enum evhttp_request_kind { EVHTTP_REQUEST, EVHTTP_RESPONSE }; - -/** - * Create and return a connection object that can be used to for making HTTP - * requests. The connection object tries to resolve address and establish the - * connection when it is given an http request object. - * - * @param base the event_base to use for handling the connection - * @param dnsbase the dns_base to use for resolving host names; if not - * specified host name resolution will block. - * @param bev a bufferevent to use for connecting to the server; if NULL, a - * socket-based bufferevent will be created. This buffrevent will be freed - * when the connection closes. It must have no fd set on it. - * @param address the address to which to connect - * @param port the port to connect to - * @return an evhttp_connection object that can be used for making requests - */ -EVENT2_EXPORT_SYMBOL -struct evhttp_connection *evhttp_connection_base_bufferevent_new( - struct event_base *base, struct evdns_base *dnsbase, struct bufferevent* bev, const char *address, ev_uint16_t port); - -/** - * Return the bufferevent that an evhttp_connection is using. - */ -EVENT2_EXPORT_SYMBOL -struct bufferevent* evhttp_connection_get_bufferevent(struct evhttp_connection *evcon); - -/** - * Return the HTTP server associated with this connection, or NULL. - */ -EVENT2_EXPORT_SYMBOL -struct evhttp *evhttp_connection_get_server(struct evhttp_connection *evcon); - -/** - * Creates a new request object that needs to be filled in with the request - * parameters. The callback is executed when the request completed or an - * error occurred. - */ -EVENT2_EXPORT_SYMBOL -struct evhttp_request *evhttp_request_new( - void (*cb)(struct evhttp_request *, void *), void *arg); - -/** - * Enable delivery of chunks to requestor. - * @param cb will be called after every read of data with the same argument - * as the completion callback. Will never be called on an empty - * response. May drain the input buffer; it will be drained - * automatically on return. - */ -EVENT2_EXPORT_SYMBOL -void evhttp_request_set_chunked_cb(struct evhttp_request *, - void (*cb)(struct evhttp_request *, void *)); - -/** - * Register callback for additional parsing of request headers. - * @param cb will be called after receiving and parsing the full header. - * It allows analyzing the header and possibly closing the connection - * by returning a value < 0. - */ -EVENT2_EXPORT_SYMBOL -void evhttp_request_set_header_cb(struct evhttp_request *, - int (*cb)(struct evhttp_request *, void *)); - -/** - * The different error types supported by evhttp - * - * @see evhttp_request_set_error_cb() - */ -enum evhttp_request_error { - /** - * Timeout reached, also @see evhttp_connection_set_timeout() - */ - EVREQ_HTTP_TIMEOUT, - /** - * EOF reached - */ - EVREQ_HTTP_EOF, - /** - * Error while reading header, or invalid header - */ - EVREQ_HTTP_INVALID_HEADER, - /** - * Error encountered while reading or writing - */ - EVREQ_HTTP_BUFFER_ERROR, - /** - * The evhttp_cancel_request() called on this request. - */ - EVREQ_HTTP_REQUEST_CANCEL, - /** - * Body is greater then evhttp_connection_set_max_body_size() - */ - EVREQ_HTTP_DATA_TOO_LONG -}; -/** - * Set a callback for errors - * @see evhttp_request_error for error types. - * - * On error, both the error callback and the regular callback will be called, - * error callback is called before the regular callback. - **/ -EVENT2_EXPORT_SYMBOL -void evhttp_request_set_error_cb(struct evhttp_request *, - void (*)(enum evhttp_request_error, void *)); - -/** - * Set a callback to be called on request completion of evhttp_send_* function. - * - * The callback function will be called on the completion of the request after - * the output data has been written and before the evhttp_request object - * is destroyed. This can be useful for tracking resources associated with a - * request (ex: timing metrics). - * - * @param req a request object - * @param cb callback function that will be called on request completion - * @param cb_arg an additional context argument for the callback - */ -EVENT2_EXPORT_SYMBOL -void evhttp_request_set_on_complete_cb(struct evhttp_request *req, - void (*cb)(struct evhttp_request *, void *), void *cb_arg); - -/** Frees the request object and removes associated events. */ -EVENT2_EXPORT_SYMBOL -void evhttp_request_free(struct evhttp_request *req); - -/** - * Create and return a connection object that can be used to for making HTTP - * requests. The connection object tries to resolve address and establish the - * connection when it is given an http request object. - * - * @param base the event_base to use for handling the connection - * @param dnsbase the dns_base to use for resolving host names; if not - * specified host name resolution will block. - * @param address the address to which to connect - * @param port the port to connect to - * @return an evhttp_connection object that can be used for making requests - */ -EVENT2_EXPORT_SYMBOL -struct evhttp_connection *evhttp_connection_base_new( - struct event_base *base, struct evdns_base *dnsbase, - const char *address, ev_uint16_t port); - -/** - * Set family hint for DNS requests. - */ -EVENT2_EXPORT_SYMBOL -void evhttp_connection_set_family(struct evhttp_connection *evcon, - int family); - -/* reuse connection address on retry */ -#define EVHTTP_CON_REUSE_CONNECTED_ADDR 0x0008 -/* Try to read error, since server may already send and close - * connection, but if at that time we have some data to send then we - * can send get EPIPE and fail, while we can read that HTTP error. */ -#define EVHTTP_CON_READ_ON_WRITE_ERROR 0x0010 -/* @see EVHTTP_SERVER_LINGERING_CLOSE */ -#define EVHTTP_CON_LINGERING_CLOSE 0x0020 -/* Padding for public flags, @see EVHTTP_CON_* in http-internal.h */ -#define EVHTTP_CON_PUBLIC_FLAGS_END 0x100000 -/** - * Set connection flags. - * - * @see EVHTTP_CON_* - * @return 0 on success, otherwise non zero (for example if flag doesn't - * supported). - */ -EVENT2_EXPORT_SYMBOL -int evhttp_connection_set_flags(struct evhttp_connection *evcon, - int flags); - -/** Takes ownership of the request object - * - * Can be used in a request callback to keep onto the request until - * evhttp_request_free() is explicitly called by the user. - */ -EVENT2_EXPORT_SYMBOL -void evhttp_request_own(struct evhttp_request *req); - -/** Returns 1 if the request is owned by the user */ -EVENT2_EXPORT_SYMBOL -int evhttp_request_is_owned(struct evhttp_request *req); - -/** - * Returns the connection object associated with the request or NULL - * - * The user needs to either free the request explicitly or call - * evhttp_send_reply_end(). - */ -EVENT2_EXPORT_SYMBOL -struct evhttp_connection *evhttp_request_get_connection(struct evhttp_request *req); - -/** - * Returns the underlying event_base for this connection - */ -EVENT2_EXPORT_SYMBOL -struct event_base *evhttp_connection_get_base(struct evhttp_connection *req); - -EVENT2_EXPORT_SYMBOL -void evhttp_connection_set_max_headers_size(struct evhttp_connection *evcon, - ev_ssize_t new_max_headers_size); - -EVENT2_EXPORT_SYMBOL -void evhttp_connection_set_max_body_size(struct evhttp_connection* evcon, - ev_ssize_t new_max_body_size); - -/** Frees an http connection */ -EVENT2_EXPORT_SYMBOL -void evhttp_connection_free(struct evhttp_connection *evcon); - -/** Disowns a given connection object - * - * Can be used to tell libevent to free the connection object after - * the last request has completed or failed. - */ -EVENT2_EXPORT_SYMBOL -void evhttp_connection_free_on_completion(struct evhttp_connection *evcon); - -/** sets the ip address from which http connections are made */ -EVENT2_EXPORT_SYMBOL -void evhttp_connection_set_local_address(struct evhttp_connection *evcon, - const char *address); - -/** sets the local port from which http connections are made */ -EVENT2_EXPORT_SYMBOL -void evhttp_connection_set_local_port(struct evhttp_connection *evcon, - ev_uint16_t port); - -/** Sets the timeout in seconds for events related to this connection */ -EVENT2_EXPORT_SYMBOL -void evhttp_connection_set_timeout(struct evhttp_connection *evcon, - int timeout_in_secs); - -/** Sets the timeout for events related to this connection. Takes a struct - * timeval. */ -EVENT2_EXPORT_SYMBOL -void evhttp_connection_set_timeout_tv(struct evhttp_connection *evcon, - const struct timeval *tv); - -/** Sets the delay before retrying requests on this connection. This is only - * used if evhttp_connection_set_retries is used to make the number of retries - * at least one. Each retry after the first is twice as long as the one before - * it. */ -EVENT2_EXPORT_SYMBOL -void evhttp_connection_set_initial_retry_tv(struct evhttp_connection *evcon, - const struct timeval *tv); - -/** Sets the retry limit for this connection - -1 repeats indefinitely */ -EVENT2_EXPORT_SYMBOL -void evhttp_connection_set_retries(struct evhttp_connection *evcon, - int retry_max); - -/** Set a callback for connection close. */ -EVENT2_EXPORT_SYMBOL -void evhttp_connection_set_closecb(struct evhttp_connection *evcon, - void (*)(struct evhttp_connection *, void *), void *); - -/** Get the remote address and port associated with this connection. */ -EVENT2_EXPORT_SYMBOL -void evhttp_connection_get_peer(struct evhttp_connection *evcon, - char **address, ev_uint16_t *port); - -/** Get the remote address associated with this connection. - * extracted from getpeername() OR from nameserver. - * - * @return NULL if getpeername() return non success, - * or connection is not connected, - * otherwise it return pointer to struct sockaddr_storage */ -EVENT2_EXPORT_SYMBOL -const struct sockaddr* -evhttp_connection_get_addr(struct evhttp_connection *evcon); - -/** - Make an HTTP request over the specified connection. - - The connection gets ownership of the request. On failure, the - request object is no longer valid as it has been freed. - - @param evcon the evhttp_connection object over which to send the request - @param req the previously created and configured request object - @param type the request type EVHTTP_REQ_GET, EVHTTP_REQ_POST, etc. - @param uri the URI associated with the request - @return 0 on success, -1 on failure - @see evhttp_cancel_request() -*/ -EVENT2_EXPORT_SYMBOL -int evhttp_make_request(struct evhttp_connection *evcon, - struct evhttp_request *req, - enum evhttp_cmd_type type, const char *uri); - -/** - Cancels a pending HTTP request. - - Cancels an ongoing HTTP request. The callback associated with this request - is not executed and the request object is freed. If the request is - currently being processed, e.g. it is ongoing, the corresponding - evhttp_connection object is going to get reset. - - A request cannot be canceled if its callback has executed already. A request - may be canceled reentrantly from its chunked callback. - - @param req the evhttp_request to cancel; req becomes invalid after this call. -*/ -EVENT2_EXPORT_SYMBOL -void evhttp_cancel_request(struct evhttp_request *req); - -/** - * A structure to hold a parsed URI or Relative-Ref conforming to RFC3986. - */ -struct evhttp_uri; - -/** Returns the request URI */ -EVENT2_EXPORT_SYMBOL -const char *evhttp_request_get_uri(const struct evhttp_request *req); -/** Returns the request URI (parsed) */ -EVENT2_EXPORT_SYMBOL -const struct evhttp_uri *evhttp_request_get_evhttp_uri(const struct evhttp_request *req); -/** Returns the request command */ -EVENT2_EXPORT_SYMBOL -enum evhttp_cmd_type evhttp_request_get_command(const struct evhttp_request *req); - -EVENT2_EXPORT_SYMBOL -int evhttp_request_get_response_code(const struct evhttp_request *req); -EVENT2_EXPORT_SYMBOL -const char * evhttp_request_get_response_code_line(const struct evhttp_request *req); - -/** Returns the input headers */ -EVENT2_EXPORT_SYMBOL -struct evkeyvalq *evhttp_request_get_input_headers(struct evhttp_request *req); -/** Returns the output headers */ -EVENT2_EXPORT_SYMBOL -struct evkeyvalq *evhttp_request_get_output_headers(struct evhttp_request *req); -/** Returns the input buffer */ -EVENT2_EXPORT_SYMBOL -struct evbuffer *evhttp_request_get_input_buffer(struct evhttp_request *req); -/** Returns the output buffer */ -EVENT2_EXPORT_SYMBOL -struct evbuffer *evhttp_request_get_output_buffer(struct evhttp_request *req); -/** Returns the host associated with the request. If a client sends an absolute - URI, the host part of that is preferred. Otherwise, the input headers are - searched for a Host: header. NULL is returned if no absolute URI or Host: - header is provided. */ -EVENT2_EXPORT_SYMBOL -const char *evhttp_request_get_host(struct evhttp_request *req); - -/* Interfaces for dealing with HTTP headers */ - -/** - Finds the value belonging to a header. - - @param headers the evkeyvalq object in which to find the header - @param key the name of the header to find - @returns a pointer to the value for the header or NULL if the header - could not be found. - @see evhttp_add_header(), evhttp_remove_header() -*/ -EVENT2_EXPORT_SYMBOL -const char *evhttp_find_header(const struct evkeyvalq *headers, - const char *key); - -/** - Removes a header from a list of existing headers. - - @param headers the evkeyvalq object from which to remove a header - @param key the name of the header to remove - @returns 0 if the header was removed, -1 otherwise. - @see evhttp_find_header(), evhttp_add_header() -*/ -EVENT2_EXPORT_SYMBOL -int evhttp_remove_header(struct evkeyvalq *headers, const char *key); - -/** - Adds a header to a list of existing headers. - - @param headers the evkeyvalq object to which to add a header - @param key the name of the header - @param value the value belonging to the header - @returns 0 on success, -1 otherwise. - @see evhttp_find_header(), evhttp_clear_headers() -*/ -EVENT2_EXPORT_SYMBOL -int evhttp_add_header(struct evkeyvalq *headers, const char *key, const char *value); - -/** - Removes all headers from the header list. - - @param headers the evkeyvalq object from which to remove all headers -*/ -EVENT2_EXPORT_SYMBOL -void evhttp_clear_headers(struct evkeyvalq *headers); - -/* Miscellaneous utility functions */ - - -/** - Helper function to encode a string for inclusion in a URI. All - characters are replaced by their hex-escaped (%22) equivalents, - except for characters explicitly unreserved by RFC3986 -- that is, - ASCII alphanumeric characters, hyphen, dot, underscore, and tilde. - - The returned string must be freed by the caller. - - @param str an unencoded string - @return a newly allocated URI-encoded string or NULL on failure - */ -EVENT2_EXPORT_SYMBOL -char *evhttp_encode_uri(const char *str); - -/** - As evhttp_encode_uri, but if 'size' is nonnegative, treat the string - as being 'size' bytes long. This allows you to encode strings that - may contain 0-valued bytes. - - The returned string must be freed by the caller. - - @param str an unencoded string - @param size the length of the string to encode, or -1 if the string - is NUL-terminated - @param space_to_plus if true, space characters in 'str' are encoded - as +, not %20. - @return a newly allocate URI-encoded string, or NULL on failure. - */ -EVENT2_EXPORT_SYMBOL -char *evhttp_uriencode(const char *str, ev_ssize_t size, int space_to_plus); - -/** - Helper function to sort of decode a URI-encoded string. Unlike - evhttp_get_decoded_uri, it decodes all plus characters that appear - _after_ the first question mark character, but no plusses that occur - before. This is not a good way to decode URIs in whole or in part. - - The returned string must be freed by the caller - - @deprecated This function is deprecated; you probably want to use - evhttp_get_decoded_uri instead. - - @param uri an encoded URI - @return a newly allocated unencoded URI or NULL on failure - */ -EVENT2_EXPORT_SYMBOL -char *evhttp_decode_uri(const char *uri); - -/** - Helper function to decode a URI-escaped string or HTTP parameter. - - If 'decode_plus' is 1, then we decode the string as an HTTP parameter - value, and convert all plus ('+') characters to spaces. If - 'decode_plus' is 0, we leave all plus characters unchanged. - - The returned string must be freed by the caller. - - @param uri a URI-encode encoded URI - @param decode_plus determines whether we convert '+' to space. - @param size_out if size_out is not NULL, *size_out is set to the size of the - returned string - @return a newly allocated unencoded URI or NULL on failure - */ -EVENT2_EXPORT_SYMBOL -char *evhttp_uridecode(const char *uri, int decode_plus, - size_t *size_out); - -/** - Helper function to parse out arguments in a query. - - Parsing a URI like - - http://foo.com/?q=test&s=some+thing - - will result in two entries in the key value queue. - - The first entry is: key="q", value="test" - The second entry is: key="s", value="some thing" - - @deprecated This function is deprecated as of Libevent 2.0.9. Use - evhttp_uri_parse and evhttp_parse_query_str instead. - - @param uri the request URI - @param headers the head of the evkeyval queue - @return 0 on success, -1 on failure - */ -EVENT2_EXPORT_SYMBOL -int evhttp_parse_query(const char *uri, struct evkeyvalq *headers); - -/** - Helper function to parse out arguments from the query portion of an - HTTP URI. - - Parsing a query string like - - q=test&s=some+thing - - will result in two entries in the key value queue. - - The first entry is: key="q", value="test" - The second entry is: key="s", value="some thing" - - @param query_parse the query portion of the URI - @param headers the head of the evkeyval queue - @return 0 on success, -1 on failure - */ -EVENT2_EXPORT_SYMBOL -int evhttp_parse_query_str(const char *uri, struct evkeyvalq *headers); - -/** - * Escape HTML character entities in a string. - * - * Replaces <, >, ", ' and & with <, >, ", - * ' and & correspondingly. - * - * The returned string needs to be freed by the caller. - * - * @param html an unescaped HTML string - * @return an escaped HTML string or NULL on error - */ -EVENT2_EXPORT_SYMBOL -char *evhttp_htmlescape(const char *html); - -/** - * Return a new empty evhttp_uri with no fields set. - */ -EVENT2_EXPORT_SYMBOL -struct evhttp_uri *evhttp_uri_new(void); - -/** - * Changes the flags set on a given URI. See EVHTTP_URI_* for - * a list of flags. - **/ -EVENT2_EXPORT_SYMBOL -void evhttp_uri_set_flags(struct evhttp_uri *uri, unsigned flags); - -/** Return the scheme of an evhttp_uri, or NULL if there is no scheme has - * been set and the evhttp_uri contains a Relative-Ref. */ -EVENT2_EXPORT_SYMBOL -const char *evhttp_uri_get_scheme(const struct evhttp_uri *uri); -/** - * Return the userinfo part of an evhttp_uri, or NULL if it has no userinfo - * set. - */ -EVENT2_EXPORT_SYMBOL -const char *evhttp_uri_get_userinfo(const struct evhttp_uri *uri); -/** - * Return the host part of an evhttp_uri, or NULL if it has no host set. - * The host may either be a regular hostname (conforming to the RFC 3986 - * "regname" production), or an IPv4 address, or the empty string, or a - * bracketed IPv6 address, or a bracketed 'IP-Future' address. - * - * Note that having a NULL host means that the URI has no authority - * section, but having an empty-string host means that the URI has an - * authority section with no host part. For example, - * "mailto:user@example.com" has a host of NULL, but "file:///etc/motd" - * has a host of "". - */ -EVENT2_EXPORT_SYMBOL -const char *evhttp_uri_get_host(const struct evhttp_uri *uri); -/** Return the port part of an evhttp_uri, or -1 if there is no port set. */ -EVENT2_EXPORT_SYMBOL -int evhttp_uri_get_port(const struct evhttp_uri *uri); -/** Return the path part of an evhttp_uri, or NULL if it has no path set */ -EVENT2_EXPORT_SYMBOL -const char *evhttp_uri_get_path(const struct evhttp_uri *uri); -/** Return the query part of an evhttp_uri (excluding the leading "?"), or - * NULL if it has no query set */ -EVENT2_EXPORT_SYMBOL -const char *evhttp_uri_get_query(const struct evhttp_uri *uri); -/** Return the fragment part of an evhttp_uri (excluding the leading "#"), - * or NULL if it has no fragment set */ -EVENT2_EXPORT_SYMBOL -const char *evhttp_uri_get_fragment(const struct evhttp_uri *uri); - -/** Set the scheme of an evhttp_uri, or clear the scheme if scheme==NULL. - * Returns 0 on success, -1 if scheme is not well-formed. */ -EVENT2_EXPORT_SYMBOL -int evhttp_uri_set_scheme(struct evhttp_uri *uri, const char *scheme); -/** Set the userinfo of an evhttp_uri, or clear the userinfo if userinfo==NULL. - * Returns 0 on success, -1 if userinfo is not well-formed. */ -EVENT2_EXPORT_SYMBOL -int evhttp_uri_set_userinfo(struct evhttp_uri *uri, const char *userinfo); -/** Set the host of an evhttp_uri, or clear the host if host==NULL. - * Returns 0 on success, -1 if host is not well-formed. */ -EVENT2_EXPORT_SYMBOL -int evhttp_uri_set_host(struct evhttp_uri *uri, const char *host); -/** Set the port of an evhttp_uri, or clear the port if port==-1. - * Returns 0 on success, -1 if port is not well-formed. */ -EVENT2_EXPORT_SYMBOL -int evhttp_uri_set_port(struct evhttp_uri *uri, int port); -/** Set the path of an evhttp_uri, or clear the path if path==NULL. - * Returns 0 on success, -1 if path is not well-formed. */ -EVENT2_EXPORT_SYMBOL -int evhttp_uri_set_path(struct evhttp_uri *uri, const char *path); -/** Set the query of an evhttp_uri, or clear the query if query==NULL. - * The query should not include a leading "?". - * Returns 0 on success, -1 if query is not well-formed. */ -EVENT2_EXPORT_SYMBOL -int evhttp_uri_set_query(struct evhttp_uri *uri, const char *query); -/** Set the fragment of an evhttp_uri, or clear the fragment if fragment==NULL. - * The fragment should not include a leading "#". - * Returns 0 on success, -1 if fragment is not well-formed. */ -EVENT2_EXPORT_SYMBOL -int evhttp_uri_set_fragment(struct evhttp_uri *uri, const char *fragment); - -/** - * Helper function to parse a URI-Reference as specified by RFC3986. - * - * This function matches the URI-Reference production from RFC3986, - * which includes both URIs like - * - * scheme://[[userinfo]@]foo.com[:port]]/[path][?query][#fragment] - * - * and relative-refs like - * - * [path][?query][#fragment] - * - * Any optional elements portions not present in the original URI are - * left set to NULL in the resulting evhttp_uri. If no port is - * specified, the port is set to -1. - * - * Note that no decoding is performed on percent-escaped characters in - * the string; if you want to parse them, use evhttp_uridecode or - * evhttp_parse_query_str as appropriate. - * - * Note also that most URI schemes will have additional constraints that - * this function does not know about, and cannot check. For example, - * mailto://www.example.com/cgi-bin/fortune.pl is not a reasonable - * mailto url, http://www.example.com:99999/ is not a reasonable HTTP - * URL, and ftp:username@example.com is not a reasonable FTP URL. - * Nevertheless, all of these URLs conform to RFC3986, and this function - * accepts all of them as valid. - * - * @param source_uri the request URI - * @param flags Zero or more EVHTTP_URI_* flags to affect the behavior - * of the parser. - * @return uri container to hold parsed data, or NULL if there is error - * @see evhttp_uri_free() - */ -EVENT2_EXPORT_SYMBOL -struct evhttp_uri *evhttp_uri_parse_with_flags(const char *source_uri, - unsigned flags); - -/** Tolerate URIs that do not conform to RFC3986. - * - * Unfortunately, some HTTP clients generate URIs that, according to RFC3986, - * are not conformant URIs. If you need to support these URIs, you can - * do so by passing this flag to evhttp_uri_parse_with_flags. - * - * Currently, these changes are: - *
    - *
  • Nonconformant URIs are allowed to contain otherwise unreasonable - * characters in their path, query, and fragment components. - *
- */ -#define EVHTTP_URI_NONCONFORMANT 0x01 - -/** Alias for evhttp_uri_parse_with_flags(source_uri, 0) */ -EVENT2_EXPORT_SYMBOL -struct evhttp_uri *evhttp_uri_parse(const char *source_uri); - -/** - * Free all memory allocated for a parsed uri. Only use this for URIs - * generated by evhttp_uri_parse. - * - * @param uri container with parsed data - * @see evhttp_uri_parse() - */ -EVENT2_EXPORT_SYMBOL -void evhttp_uri_free(struct evhttp_uri *uri); - -/** - * Join together the uri parts from parsed data to form a URI-Reference. - * - * Note that no escaping of reserved characters is done on the members - * of the evhttp_uri, so the generated string might not be a valid URI - * unless the members of evhttp_uri are themselves valid. - * - * @param uri container with parsed data - * @param buf destination buffer - * @param limit destination buffer size - * @return an joined uri as string or NULL on error - * @see evhttp_uri_parse() - */ -EVENT2_EXPORT_SYMBOL -char *evhttp_uri_join(struct evhttp_uri *uri, char *buf, size_t limit); - -#ifdef __cplusplus -} -#endif - -#endif /* EVENT2_HTTP_H_INCLUDED_ */ diff --git a/cache/include/libevent2/event2/http_compat.h b/cache/include/libevent2/event2/http_compat.h deleted file mode 100644 index 43c2c43..0000000 --- a/cache/include/libevent2/event2/http_compat.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (c) 2000-2007 Niels Provos - * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef EVENT2_HTTP_COMPAT_H_INCLUDED_ -#define EVENT2_HTTP_COMPAT_H_INCLUDED_ - -/** @file event2/http_compat.h - - Potentially non-threadsafe versions of the functions in http.h: provided - only for backwards compatibility. - - */ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#ifdef EVENT__HAVE_SYS_TYPES_H -#include -#endif -#ifdef EVENT__HAVE_SYS_TIME_H -#include -#endif - -/* For int types. */ -#include - -/** - * Start an HTTP server on the specified address and port - * - * @deprecated It does not allow an event base to be specified - * - * @param address the address to which the HTTP server should be bound - * @param port the port number on which the HTTP server should listen - * @return an struct evhttp object - */ -struct evhttp *evhttp_start(const char *address, ev_uint16_t port); - -/** - * A connection object that can be used to for making HTTP requests. The - * connection object tries to establish the connection when it is given an - * http request object. - * - * @deprecated It does not allow an event base to be specified - */ -struct evhttp_connection *evhttp_connection_new( - const char *address, ev_uint16_t port); - -/** - * Associates an event base with the connection - can only be called - * on a freshly created connection object that has not been used yet. - * - * @deprecated XXXX Why? - */ -void evhttp_connection_set_base(struct evhttp_connection *evcon, - struct event_base *base); - - -/** Returns the request URI */ -#define evhttp_request_uri evhttp_request_get_uri - -#ifdef __cplusplus -} -#endif - -#endif /* EVENT2_EVENT_COMPAT_H_INCLUDED_ */ diff --git a/cache/include/libevent2/event2/http_struct.h b/cache/include/libevent2/event2/http_struct.h deleted file mode 100644 index 4bf5b1f..0000000 --- a/cache/include/libevent2/event2/http_struct.h +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Copyright (c) 2000-2007 Niels Provos - * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef EVENT2_HTTP_STRUCT_H_INCLUDED_ -#define EVENT2_HTTP_STRUCT_H_INCLUDED_ - -/** @file event2/http_struct.h - - Data structures for http. Using these structures may hurt forward - compatibility with later versions of Libevent: be careful! - - */ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#ifdef EVENT__HAVE_SYS_TYPES_H -#include -#endif -#ifdef EVENT__HAVE_SYS_TIME_H -#include -#endif - -/* For int types. */ -#include - -/** - * the request structure that a server receives. - * WARNING: expect this structure to change. I will try to provide - * reasonable accessors. - */ -struct evhttp_request { -#if defined(TAILQ_ENTRY) - TAILQ_ENTRY(evhttp_request) next; -#else -struct { - struct evhttp_request *tqe_next; - struct evhttp_request **tqe_prev; -} next; -#endif - - /* the connection object that this request belongs to */ - struct evhttp_connection *evcon; - int flags; -/** The request obj owns the evhttp connection and needs to free it */ -#define EVHTTP_REQ_OWN_CONNECTION 0x0001 -/** Request was made via a proxy */ -#define EVHTTP_PROXY_REQUEST 0x0002 -/** The request object is owned by the user; the user must free it */ -#define EVHTTP_USER_OWNED 0x0004 -/** The request will be used again upstack; freeing must be deferred */ -#define EVHTTP_REQ_DEFER_FREE 0x0008 -/** The request should be freed upstack */ -#define EVHTTP_REQ_NEEDS_FREE 0x0010 - - struct evkeyvalq *input_headers; - struct evkeyvalq *output_headers; - - /* address of the remote host and the port connection came from */ - char *remote_host; - ev_uint16_t remote_port; - - /* cache of the hostname for evhttp_request_get_host */ - char *host_cache; - - enum evhttp_request_kind kind; - enum evhttp_cmd_type type; - - size_t headers_size; - size_t body_size; - - char *uri; /* uri after HTTP request was parsed */ - struct evhttp_uri *uri_elems; /* uri elements */ - - char major; /* HTTP Major number */ - char minor; /* HTTP Minor number */ - - int response_code; /* HTTP Response code */ - char *response_code_line; /* Readable response */ - - struct evbuffer *input_buffer; /* read data */ - ev_int64_t ntoread; - unsigned chunked:1, /* a chunked request */ - userdone:1; /* the user has sent all data */ - - struct evbuffer *output_buffer; /* outgoing post or data */ - - /* Callback */ - void (*cb)(struct evhttp_request *, void *); - void *cb_arg; - - /* - * Chunked data callback - call for each completed chunk if - * specified. If not specified, all the data is delivered via - * the regular callback. - */ - void (*chunk_cb)(struct evhttp_request *, void *); - - /* - * Callback added for forked-daapd so they can collect ICY - * (shoutcast) metadata from the http header. If return - * int is negative the connection will be closed. - */ - int (*header_cb)(struct evhttp_request *, void *); - - /* - * Error callback - called when error is occured. - * @see evhttp_request_error for error types. - * - * @see evhttp_request_set_error_cb() - */ - void (*error_cb)(enum evhttp_request_error, void *); - - /* - * Send complete callback - called when the request is actually - * sent and completed. - */ - void (*on_complete_cb)(struct evhttp_request *, void *); - void *on_complete_cb_arg; -}; - -#ifdef __cplusplus -} -#endif - -#endif /* EVENT2_HTTP_STRUCT_H_INCLUDED_ */ - diff --git a/cache/include/libevent2/event2/keyvalq_struct.h b/cache/include/libevent2/event2/keyvalq_struct.h deleted file mode 100644 index bffa54b..0000000 --- a/cache/include/libevent2/event2/keyvalq_struct.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) 2000-2007 Niels Provos - * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef EVENT2_KEYVALQ_STRUCT_H_INCLUDED_ -#define EVENT2_KEYVALQ_STRUCT_H_INCLUDED_ - -#ifdef __cplusplus -extern "C" { -#endif - -/* Fix so that people don't have to run with */ -/* XXXX This code is duplicated with event_struct.h */ -#ifndef TAILQ_ENTRY -#define EVENT_DEFINED_TQENTRY_ -#define TAILQ_ENTRY(type) \ -struct { \ - struct type *tqe_next; /* next element */ \ - struct type **tqe_prev; /* address of previous next element */ \ -} -#endif /* !TAILQ_ENTRY */ - -#ifndef TAILQ_HEAD -#define EVENT_DEFINED_TQHEAD_ -#define TAILQ_HEAD(name, type) \ -struct name { \ - struct type *tqh_first; \ - struct type **tqh_last; \ -} -#endif - -/* - * Key-Value pairs. Can be used for HTTP headers but also for - * query argument parsing. - */ -struct evkeyval { - TAILQ_ENTRY(evkeyval) next; - - char *key; - char *value; -}; - -TAILQ_HEAD (evkeyvalq, evkeyval); - -/* XXXX This code is duplicated with event_struct.h */ -#ifdef EVENT_DEFINED_TQENTRY_ -#undef TAILQ_ENTRY -#endif - -#ifdef EVENT_DEFINED_TQHEAD_ -#undef TAILQ_HEAD -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/cache/include/libevent2/event2/listener.h b/cache/include/libevent2/event2/listener.h deleted file mode 100644 index 84b4da0..0000000 --- a/cache/include/libevent2/event2/listener.h +++ /dev/null @@ -1,180 +0,0 @@ -/* - * Copyright (c) 2000-2007 Niels Provos - * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef EVENT2_LISTENER_H_INCLUDED_ -#define EVENT2_LISTENER_H_INCLUDED_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -struct sockaddr; -struct evconnlistener; - -/** - A callback that we invoke when a listener has a new connection. - - @param listener The evconnlistener - @param fd The new file descriptor - @param addr The source address of the connection - @param socklen The length of addr - @param user_arg the pointer passed to evconnlistener_new() - */ -typedef void (*evconnlistener_cb)(struct evconnlistener *, evutil_socket_t, struct sockaddr *, int socklen, void *); - -/** - A callback that we invoke when a listener encounters a non-retriable error. - - @param listener The evconnlistener - @param user_arg the pointer passed to evconnlistener_new() - */ -typedef void (*evconnlistener_errorcb)(struct evconnlistener *, void *); - -/** Flag: Indicates that we should not make incoming sockets nonblocking - * before passing them to the callback. */ -#define LEV_OPT_LEAVE_SOCKETS_BLOCKING (1u<<0) -/** Flag: Indicates that freeing the listener should close the underlying - * socket. */ -#define LEV_OPT_CLOSE_ON_FREE (1u<<1) -/** Flag: Indicates that we should set the close-on-exec flag, if possible */ -#define LEV_OPT_CLOSE_ON_EXEC (1u<<2) -/** Flag: Indicates that we should disable the timeout (if any) between when - * this socket is closed and when we can listen again on the same port. */ -#define LEV_OPT_REUSEABLE (1u<<3) -/** Flag: Indicates that the listener should be locked so it's safe to use - * from multiple threadcs at once. */ -#define LEV_OPT_THREADSAFE (1u<<4) -/** Flag: Indicates that the listener should be created in disabled - * state. Use evconnlistener_enable() to enable it later. */ -#define LEV_OPT_DISABLED (1u<<5) -/** Flag: Indicates that the listener should defer accept() until data is - * available, if possible. Ignored on platforms that do not support this. - * - * This option can help performance for protocols where the client transmits - * immediately after connecting. Do not use this option if your protocol - * _doesn't_ start out with the client transmitting data, since in that case - * this option will sometimes cause the kernel to never tell you about the - * connection. - * - * This option is only supported by evconnlistener_new_bind(): it can't - * work with evconnlistener_new_fd(), since the listener needs to be told - * to use the option before it is actually bound. - */ -#define LEV_OPT_DEFERRED_ACCEPT (1u<<6) -/** Flag: Indicates that we ask to allow multiple servers (processes or - * threads) to bind to the same port if they each set the option. - * - * SO_REUSEPORT is what most people would expect SO_REUSEADDR to be, however - * SO_REUSEPORT does not imply SO_REUSEADDR. - * - * This is only available on Linux and kernel 3.9+ - */ -#define LEV_OPT_REUSEABLE_PORT (1u<<7) - -/** - Allocate a new evconnlistener object to listen for incoming TCP connections - on a given file descriptor. - - @param base The event base to associate the listener with. - @param cb A callback to be invoked when a new connection arrives. If the - callback is NULL, the listener will be treated as disabled until the - callback is set. - @param ptr A user-supplied pointer to give to the callback. - @param flags Any number of LEV_OPT_* flags - @param backlog Passed to the listen() call to determine the length of the - acceptable connection backlog. Set to -1 for a reasonable default. - Set to 0 if the socket is already listening. - @param fd The file descriptor to listen on. It must be a nonblocking - file descriptor, and it should already be bound to an appropriate - port and address. -*/ -EVENT2_EXPORT_SYMBOL -struct evconnlistener *evconnlistener_new(struct event_base *base, - evconnlistener_cb cb, void *ptr, unsigned flags, int backlog, - evutil_socket_t fd); -/** - Allocate a new evconnlistener object to listen for incoming TCP connections - on a given address. - - @param base The event base to associate the listener with. - @param cb A callback to be invoked when a new connection arrives. If the - callback is NULL, the listener will be treated as disabled until the - callback is set. - @param ptr A user-supplied pointer to give to the callback. - @param flags Any number of LEV_OPT_* flags - @param backlog Passed to the listen() call to determine the length of the - acceptable connection backlog. Set to -1 for a reasonable default. - @param addr The address to listen for connections on. - @param socklen The length of the address. - */ -EVENT2_EXPORT_SYMBOL -struct evconnlistener *evconnlistener_new_bind(struct event_base *base, - evconnlistener_cb cb, void *ptr, unsigned flags, int backlog, - const struct sockaddr *sa, int socklen); -/** - Disable and deallocate an evconnlistener. - */ -EVENT2_EXPORT_SYMBOL -void evconnlistener_free(struct evconnlistener *lev); -/** - Re-enable an evconnlistener that has been disabled. - */ -EVENT2_EXPORT_SYMBOL -int evconnlistener_enable(struct evconnlistener *lev); -/** - Stop listening for connections on an evconnlistener. - */ -EVENT2_EXPORT_SYMBOL -int evconnlistener_disable(struct evconnlistener *lev); - -/** Return an evconnlistener's associated event_base. */ -EVENT2_EXPORT_SYMBOL -struct event_base *evconnlistener_get_base(struct evconnlistener *lev); - -/** Return the socket that an evconnlistner is listening on. */ -EVENT2_EXPORT_SYMBOL -evutil_socket_t evconnlistener_get_fd(struct evconnlistener *lev); - -/** Change the callback on the listener to cb and its user_data to arg. - */ -EVENT2_EXPORT_SYMBOL -void evconnlistener_set_cb(struct evconnlistener *lev, - evconnlistener_cb cb, void *arg); - -/** Set an evconnlistener's error callback. */ -EVENT2_EXPORT_SYMBOL -void evconnlistener_set_error_cb(struct evconnlistener *lev, - evconnlistener_errorcb errorcb); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/cache/include/libevent2/event2/rpc.h b/cache/include/libevent2/event2/rpc.h deleted file mode 100644 index dd43df2..0000000 --- a/cache/include/libevent2/event2/rpc.h +++ /dev/null @@ -1,596 +0,0 @@ -/* - * Copyright (c) 2006-2007 Niels Provos - * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef EVENT2_RPC_H_INCLUDED_ -#define EVENT2_RPC_H_INCLUDED_ - -#ifdef __cplusplus -extern "C" { -#endif - -/** @file rpc.h - * - * This header files provides basic support for an RPC server and client. - * - * To support RPCs in a server, every supported RPC command needs to be - * defined and registered. - * - * EVRPC_HEADER(SendCommand, Request, Reply); - * - * SendCommand is the name of the RPC command. - * Request is the name of a structure generated by event_rpcgen.py. - * It contains all parameters relating to the SendCommand RPC. The - * server needs to fill in the Reply structure. - * Reply is the name of a structure generated by event_rpcgen.py. It - * contains the answer to the RPC. - * - * To register an RPC with an HTTP server, you need to first create an RPC - * base with: - * - * struct evrpc_base *base = evrpc_init(http); - * - * A specific RPC can then be registered with - * - * EVRPC_REGISTER(base, SendCommand, Request, Reply, FunctionCB, arg); - * - * when the server receives an appropriately formatted RPC, the user callback - * is invoked. The callback needs to fill in the reply structure. - * - * void FunctionCB(EVRPC_STRUCT(SendCommand)* rpc, void *arg); - * - * To send the reply, call EVRPC_REQUEST_DONE(rpc); - * - * See the regression test for an example. - */ - -/** - Determines if the member has been set in the message - - @param msg the message to inspect - @param member the member variable to test for presences - @return 1 if it's present or 0 otherwise. -*/ -#define EVTAG_HAS(msg, member) \ - ((msg)->member##_set == 1) - -#ifndef EVENT2_RPC_COMPAT_H_INCLUDED_ - -/** - Assigns a value to the member in the message. - - @param msg the message to which to assign a value - @param member the name of the member variable - @param value the value to assign -*/ -#define EVTAG_ASSIGN(msg, member, value) \ - (*(msg)->base->member##_assign)((msg), (value)) -/** - Assigns a value to the member in the message. - - @param msg the message to which to assign a value - @param member the name of the member variable - @param value the value to assign - @param len the length of the value -*/ -#define EVTAG_ASSIGN_WITH_LEN(msg, member, value, len) \ - (*(msg)->base->member##_assign)((msg), (value), (len)) -/** - Returns the value for a member. - - @param msg the message from which to get the value - @param member the name of the member variable - @param pvalue a pointer to the variable to hold the value - @return 0 on success, -1 otherwise. -*/ -#define EVTAG_GET(msg, member, pvalue) \ - (*(msg)->base->member##_get)((msg), (pvalue)) -/** - Returns the value for a member. - - @param msg the message from which to get the value - @param member the name of the member variable - @param pvalue a pointer to the variable to hold the value - @param plen a pointer to the length of the value - @return 0 on success, -1 otherwise. -*/ -#define EVTAG_GET_WITH_LEN(msg, member, pvalue, plen) \ - (*(msg)->base->member##_get)((msg), (pvalue), (plen)) - -#endif /* EVENT2_RPC_COMPAT_H_INCLUDED_ */ - -/** - Adds a value to an array. -*/ -#define EVTAG_ARRAY_ADD_VALUE(msg, member, value) \ - (*(msg)->base->member##_add)((msg), (value)) -/** - Allocates a new entry in the array and returns it. -*/ -#define EVTAG_ARRAY_ADD(msg, member) \ - (*(msg)->base->member##_add)(msg) -/** - Gets a variable at the specified offset from the array. -*/ -#define EVTAG_ARRAY_GET(msg, member, offset, pvalue) \ - (*(msg)->base->member##_get)((msg), (offset), (pvalue)) -/** - Returns the number of entries in the array. -*/ -#define EVTAG_ARRAY_LEN(msg, member) ((msg)->member##_length) - - -struct evbuffer; -struct event_base; -struct evrpc_req_generic; -struct evrpc_request_wrapper; -struct evrpc; - -/** The type of a specific RPC Message - * - * @param rpcname the name of the RPC message - */ -#define EVRPC_STRUCT(rpcname) struct evrpc_req__##rpcname - -struct evhttp_request; -struct evrpc_status; -struct evrpc_hook_meta; - -/** Creates the definitions and prototypes for an RPC - * - * You need to use EVRPC_HEADER to create structures and function prototypes - * needed by the server and client implementation. The structures have to be - * defined in an .rpc file and converted to source code via event_rpcgen.py - * - * @param rpcname the name of the RPC - * @param reqstruct the name of the RPC request structure - * @param replystruct the name of the RPC reply structure - * @see EVRPC_GENERATE() - */ -#define EVRPC_HEADER(rpcname, reqstruct, rplystruct) \ -EVRPC_STRUCT(rpcname) { \ - struct evrpc_hook_meta *hook_meta; \ - struct reqstruct* request; \ - struct rplystruct* reply; \ - struct evrpc* rpc; \ - struct evhttp_request* http_req; \ - struct evbuffer* rpc_data; \ -}; \ -int evrpc_send_request_##rpcname(struct evrpc_pool *, \ - struct reqstruct *, struct rplystruct *, \ - void (*)(struct evrpc_status *, \ - struct reqstruct *, struct rplystruct *, void *cbarg), \ - void *); - -struct evrpc_pool; - -/** use EVRPC_GENERATE instead */ -struct evrpc_request_wrapper *evrpc_make_request_ctx( - struct evrpc_pool *pool, void *request, void *reply, - const char *rpcname, - void (*req_marshal)(struct evbuffer*, void *), - void (*rpl_clear)(void *), - int (*rpl_unmarshal)(void *, struct evbuffer *), - void (*cb)(struct evrpc_status *, void *, void *, void *), - void *cbarg); - -/** Creates a context structure that contains rpc specific information. - * - * EVRPC_MAKE_CTX is used to populate a RPC specific context that - * contains information about marshaling the RPC data types. - * - * @param rpcname the name of the RPC - * @param reqstruct the name of the RPC request structure - * @param replystruct the name of the RPC reply structure - * @param pool the evrpc_pool over which to make the request - * @param request a pointer to the RPC request structure object - * @param reply a pointer to the RPC reply structure object - * @param cb the callback function to call when the RPC has completed - * @param cbarg the argument to supply to the callback - */ -#define EVRPC_MAKE_CTX(rpcname, reqstruct, rplystruct, \ - pool, request, reply, cb, cbarg) \ - evrpc_make_request_ctx(pool, request, reply, \ - #rpcname, \ - (void (*)(struct evbuffer *, void *))reqstruct##_marshal, \ - (void (*)(void *))rplystruct##_clear, \ - (int (*)(void *, struct evbuffer *))rplystruct##_unmarshal, \ - (void (*)(struct evrpc_status *, void *, void *, void *))cb, \ - cbarg) - -/** Generates the code for receiving and sending an RPC message - * - * EVRPC_GENERATE is used to create the code corresponding to sending - * and receiving a particular RPC message - * - * @param rpcname the name of the RPC - * @param reqstruct the name of the RPC request structure - * @param replystruct the name of the RPC reply structure - * @see EVRPC_HEADER() - */ -#define EVRPC_GENERATE(rpcname, reqstruct, rplystruct) \ - int evrpc_send_request_##rpcname(struct evrpc_pool *pool, \ - struct reqstruct *request, struct rplystruct *reply, \ - void (*cb)(struct evrpc_status *, \ - struct reqstruct *, struct rplystruct *, void *cbarg), \ - void *cbarg) { \ - return evrpc_send_request_generic(pool, request, reply, \ - (void (*)(struct evrpc_status *, void *, void *, void *))cb, \ - cbarg, \ - #rpcname, \ - (void (*)(struct evbuffer *, void *))reqstruct##_marshal, \ - (void (*)(void *))rplystruct##_clear, \ - (int (*)(void *, struct evbuffer *))rplystruct##_unmarshal); \ -} - -/** Provides access to the HTTP request object underlying an RPC - * - * Access to the underlying http object; can be used to look at headers or - * for getting the remote ip address - * - * @param rpc_req the rpc request structure provided to the server callback - * @return an struct evhttp_request object that can be inspected for - * HTTP headers or sender information. - */ -#define EVRPC_REQUEST_HTTP(rpc_req) (rpc_req)->http_req - -/** completes the server response to an rpc request */ -void evrpc_request_done(struct evrpc_req_generic *req); - -/** accessors for request and reply */ -void *evrpc_get_request(struct evrpc_req_generic *req); -void *evrpc_get_reply(struct evrpc_req_generic *req); - -/** Creates the reply to an RPC request - * - * EVRPC_REQUEST_DONE is used to answer a request; the reply is expected - * to have been filled in. The request and reply pointers become invalid - * after this call has finished. - * - * @param rpc_req the rpc request structure provided to the server callback - */ -#define EVRPC_REQUEST_DONE(rpc_req) do { \ - struct evrpc_req_generic *req_ = (struct evrpc_req_generic *)(rpc_req); \ - evrpc_request_done(req_); \ -} while (0) - - -struct evrpc_base; -struct evhttp; - -/* functions to start up the rpc system */ - -/** Creates a new rpc base from which RPC requests can be received - * - * @param server a pointer to an existing HTTP server - * @return a newly allocated evrpc_base struct - * @see evrpc_free() - */ -struct evrpc_base *evrpc_init(struct evhttp *server); - -/** - * Frees the evrpc base - * - * For now, you are responsible for making sure that no rpcs are ongoing. - * - * @param base the evrpc_base object to be freed - * @see evrpc_init - */ -void evrpc_free(struct evrpc_base *base); - -/** register RPCs with the HTTP Server - * - * registers a new RPC with the HTTP server, each RPC needs to have - * a unique name under which it can be identified. - * - * @param base the evrpc_base structure in which the RPC should be - * registered. - * @param name the name of the RPC - * @param request the name of the RPC request structure - * @param reply the name of the RPC reply structure - * @param callback the callback that should be invoked when the RPC - * is received. The callback has the following prototype - * void (*callback)(EVRPC_STRUCT(Message)* rpc, void *arg) - * @param cbarg an additional parameter that can be passed to the callback. - * The parameter can be used to carry around state. - */ -#define EVRPC_REGISTER(base, name, request, reply, callback, cbarg) \ - evrpc_register_generic(base, #name, \ - (void (*)(struct evrpc_req_generic *, void *))callback, cbarg, \ - (void *(*)(void *))request##_new, NULL, \ - (void (*)(void *))request##_free, \ - (int (*)(void *, struct evbuffer *))request##_unmarshal, \ - (void *(*)(void *))reply##_new, NULL, \ - (void (*)(void *))reply##_free, \ - (int (*)(void *))reply##_complete, \ - (void (*)(struct evbuffer *, void *))reply##_marshal) - -/** - Low level function for registering an RPC with a server. - - Use EVRPC_REGISTER() instead. - - @see EVRPC_REGISTER() -*/ -int evrpc_register_rpc(struct evrpc_base *, struct evrpc *, - void (*)(struct evrpc_req_generic*, void *), void *); - -/** - * Unregisters an already registered RPC - * - * @param base the evrpc_base object from which to unregister an RPC - * @param name the name of the rpc to unregister - * @return -1 on error or 0 when successful. - * @see EVRPC_REGISTER() - */ -#define EVRPC_UNREGISTER(base, name) evrpc_unregister_rpc((base), #name) - -int evrpc_unregister_rpc(struct evrpc_base *base, const char *name); - -/* - * Client-side RPC support - */ - -struct evhttp_connection; -struct evrpc_status; - -/** launches an RPC and sends it to the server - * - * EVRPC_MAKE_REQUEST() is used by the client to send an RPC to the server. - * - * @param name the name of the RPC - * @param pool the evrpc_pool that contains the connection objects over which - * the request should be sent. - * @param request a pointer to the RPC request structure - it contains the - * data to be sent to the server. - * @param reply a pointer to the RPC reply structure. It is going to be filled - * if the request was answered successfully - * @param cb the callback to invoke when the RPC request has been answered - * @param cbarg an additional argument to be passed to the client - * @return 0 on success, -1 on failure - */ -#define EVRPC_MAKE_REQUEST(name, pool, request, reply, cb, cbarg) \ - evrpc_send_request_##name((pool), (request), (reply), (cb), (cbarg)) - -/** - Makes an RPC request based on the provided context. - - This is a low-level function and should not be used directly - unless a custom context object is provided. Use EVRPC_MAKE_REQUEST() - instead. - - @param ctx a context from EVRPC_MAKE_CTX() - @returns 0 on success, -1 otherwise. - @see EVRPC_MAKE_REQUEST(), EVRPC_MAKE_CTX() -*/ -int evrpc_make_request(struct evrpc_request_wrapper *ctx); - -/** creates an rpc connection pool - * - * a pool has a number of connections associated with it. - * rpc requests are always made via a pool. - * - * @param base a pointer to an struct event_based object; can be left NULL - * in singled-threaded applications - * @return a newly allocated struct evrpc_pool object - * @see evrpc_pool_free() - */ -struct evrpc_pool *evrpc_pool_new(struct event_base *base); -/** frees an rpc connection pool - * - * @param pool a pointer to an evrpc_pool allocated via evrpc_pool_new() - * @see evrpc_pool_new() - */ -void evrpc_pool_free(struct evrpc_pool *pool); - -/** - * Adds a connection over which rpc can be dispatched to the pool. - * - * The connection object must have been newly created. - * - * @param pool the pool to which to add the connection - * @param evcon the connection to add to the pool. - */ -void evrpc_pool_add_connection(struct evrpc_pool *pool, - struct evhttp_connection *evcon); - -/** - * Removes a connection from the pool. - * - * The connection object must have been newly created. - * - * @param pool the pool from which to remove the connection - * @param evcon the connection to remove from the pool. - */ -void evrpc_pool_remove_connection(struct evrpc_pool *pool, - struct evhttp_connection *evcon); - -/** - * Sets the timeout in secs after which a request has to complete. The - * RPC is completely aborted if it does not complete by then. Setting - * the timeout to 0 means that it never timeouts and can be used to - * implement callback type RPCs. - * - * Any connection already in the pool will be updated with the new - * timeout. Connections added to the pool after set_timeout has be - * called receive the pool timeout only if no timeout has been set - * for the connection itself. - * - * @param pool a pointer to a struct evrpc_pool object - * @param timeout_in_secs the number of seconds after which a request should - * timeout and a failure be returned to the callback. - */ -void evrpc_pool_set_timeout(struct evrpc_pool *pool, int timeout_in_secs); - -/** - * Hooks for changing the input and output of RPCs; this can be used to - * implement compression, authentication, encryption, ... - */ - -enum EVRPC_HOOK_TYPE { - EVRPC_INPUT, /**< apply the function to an input hook */ - EVRPC_OUTPUT /**< apply the function to an output hook */ -}; - -#ifndef _WIN32 -/** Deprecated alias for EVRPC_INPUT. Not available on windows, where it - * conflicts with platform headers. */ -#define INPUT EVRPC_INPUT -/** Deprecated alias for EVRPC_OUTPUT. Not available on windows, where it - * conflicts with platform headers. */ -#define OUTPUT EVRPC_OUTPUT -#endif - -/** - * Return value from hook processing functions - */ - -enum EVRPC_HOOK_RESULT { - EVRPC_TERMINATE = -1, /**< indicates the rpc should be terminated */ - EVRPC_CONTINUE = 0, /**< continue processing the rpc */ - EVRPC_PAUSE = 1 /**< pause processing request until resumed */ -}; - -/** adds a processing hook to either an rpc base or rpc pool - * - * If a hook returns TERMINATE, the processing is aborted. On CONTINUE, - * the request is immediately processed after the hook returns. If the - * hook returns PAUSE, request processing stops until evrpc_resume_request() - * has been called. - * - * The add functions return handles that can be used for removing hooks. - * - * @param vbase a pointer to either struct evrpc_base or struct evrpc_pool - * @param hook_type either INPUT or OUTPUT - * @param cb the callback to call when the hook is activated - * @param cb_arg an additional argument for the callback - * @return a handle to the hook so it can be removed later - * @see evrpc_remove_hook() - */ -void *evrpc_add_hook(void *vbase, - enum EVRPC_HOOK_TYPE hook_type, - int (*cb)(void *, struct evhttp_request *, struct evbuffer *, void *), - void *cb_arg); - -/** removes a previously added hook - * - * @param vbase a pointer to either struct evrpc_base or struct evrpc_pool - * @param hook_type either INPUT or OUTPUT - * @param handle a handle returned by evrpc_add_hook() - * @return 1 on success or 0 on failure - * @see evrpc_add_hook() - */ -int evrpc_remove_hook(void *vbase, - enum EVRPC_HOOK_TYPE hook_type, - void *handle); - -/** resume a paused request - * - * @param vbase a pointer to either struct evrpc_base or struct evrpc_pool - * @param ctx the context pointer provided to the original hook call - */ -int -evrpc_resume_request(void *vbase, void *ctx, enum EVRPC_HOOK_RESULT res); - -/** adds meta data to request - * - * evrpc_hook_add_meta() allows hooks to add meta data to a request. for - * a client request, the meta data can be inserted by an outgoing request hook - * and retrieved by the incoming request hook. - * - * @param ctx the context provided to the hook call - * @param key a NUL-terminated c-string - * @param data the data to be associated with the key - * @param data_size the size of the data - */ -void evrpc_hook_add_meta(void *ctx, const char *key, - const void *data, size_t data_size); - -/** retrieves meta data previously associated - * - * evrpc_hook_find_meta() can be used to retrieve meta data associated to a - * request by a previous hook. - * @param ctx the context provided to the hook call - * @param key a NUL-terminated c-string - * @param data pointer to a data pointer that will contain the retrieved data - * @param data_size pointer to the size of the data - * @return 0 on success or -1 on failure - */ -int evrpc_hook_find_meta(void *ctx, const char *key, - void **data, size_t *data_size); - -/** - * returns the connection object associated with the request - * - * @param ctx the context provided to the hook call - * @return a pointer to the evhttp_connection object - */ -struct evhttp_connection *evrpc_hook_get_connection(void *ctx); - -/** - Function for sending a generic RPC request. - - Do not call this function directly, use EVRPC_MAKE_REQUEST() instead. - - @see EVRPC_MAKE_REQUEST() - */ -int evrpc_send_request_generic(struct evrpc_pool *pool, - void *request, void *reply, - void (*cb)(struct evrpc_status *, void *, void *, void *), - void *cb_arg, - const char *rpcname, - void (*req_marshal)(struct evbuffer *, void *), - void (*rpl_clear)(void *), - int (*rpl_unmarshal)(void *, struct evbuffer *)); - -/** - Function for registering a generic RPC with the RPC base. - - Do not call this function directly, use EVRPC_REGISTER() instead. - - @see EVRPC_REGISTER() - */ -int -evrpc_register_generic(struct evrpc_base *base, const char *name, - void (*callback)(struct evrpc_req_generic *, void *), void *cbarg, - void *(*req_new)(void *), void *req_new_arg, void (*req_free)(void *), - int (*req_unmarshal)(void *, struct evbuffer *), - void *(*rpl_new)(void *), void *rpl_new_arg, void (*rpl_free)(void *), - int (*rpl_complete)(void *), - void (*rpl_marshal)(struct evbuffer *, void *)); - -/** accessors for obscure and undocumented functionality */ -struct evrpc_pool* evrpc_request_get_pool(struct evrpc_request_wrapper *ctx); -void evrpc_request_set_pool(struct evrpc_request_wrapper *ctx, - struct evrpc_pool *pool); -void evrpc_request_set_cb(struct evrpc_request_wrapper *ctx, - void (*cb)(struct evrpc_status*, void *request, void *reply, void *arg), - void *cb_arg); - -#ifdef __cplusplus -} -#endif - -#endif /* EVENT2_RPC_H_INCLUDED_ */ diff --git a/cache/include/libevent2/event2/rpc_compat.h b/cache/include/libevent2/event2/rpc_compat.h deleted file mode 100644 index 8d8334d..0000000 --- a/cache/include/libevent2/event2/rpc_compat.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2006-2007 Niels Provos - * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef EVENT2_RPC_COMPAT_H_INCLUDED_ -#define EVENT2_RPC_COMPAT_H_INCLUDED_ - -/** @file event2/rpc_compat.h - - Deprecated versions of the functions in rpc.h: provided only for - backwards compatibility. - - */ - -#ifdef __cplusplus -extern "C" { -#endif - -/** backwards compatible accessors that work only with gcc */ -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) - -#undef EVTAG_ASSIGN -#undef EVTAG_GET -#undef EVTAG_ADD - -#define EVTAG_ASSIGN(msg, member, args...) \ - (*(msg)->base->member##_assign)(msg, ## args) -#define EVTAG_GET(msg, member, args...) \ - (*(msg)->base->member##_get)(msg, ## args) -#define EVTAG_ADD(msg, member, args...) \ - (*(msg)->base->member##_add)(msg, ## args) -#endif -#define EVTAG_LEN(msg, member) ((msg)->member##_length) - -#ifdef __cplusplus -} -#endif - -#endif /* EVENT2_EVENT_COMPAT_H_INCLUDED_ */ diff --git a/cache/include/libevent2/event2/rpc_struct.h b/cache/include/libevent2/event2/rpc_struct.h deleted file mode 100644 index 8f691f4..0000000 --- a/cache/include/libevent2/event2/rpc_struct.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright (c) 2006-2007 Niels Provos - * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef EVENT2_RPC_STRUCT_H_INCLUDED_ -#define EVENT2_RPC_STRUCT_H_INCLUDED_ - -#ifdef __cplusplus -extern "C" { -#endif - -/** @file event2/rpc_struct.h - - Structures used by rpc.h. Using these structures directly may harm - forward compatibility: be careful! - - */ - -/** - * provides information about the completed RPC request. - */ -struct evrpc_status { -#define EVRPC_STATUS_ERR_NONE 0 -#define EVRPC_STATUS_ERR_TIMEOUT 1 -#define EVRPC_STATUS_ERR_BADPAYLOAD 2 -#define EVRPC_STATUS_ERR_UNSTARTED 3 -#define EVRPC_STATUS_ERR_HOOKABORTED 4 - int error; - - /* for looking at headers or other information */ - struct evhttp_request *http_req; -}; - -/* the structure below needs to be synchronized with evrpc_req_generic */ - -/* Encapsulates a request */ -struct evrpc { - TAILQ_ENTRY(evrpc) next; - - /* the URI at which the request handler lives */ - const char* uri; - - /* creates a new request structure */ - void *(*request_new)(void *); - void *request_new_arg; - - /* frees the request structure */ - void (*request_free)(void *); - - /* unmarshals the buffer into the proper request structure */ - int (*request_unmarshal)(void *, struct evbuffer *); - - /* creates a new reply structure */ - void *(*reply_new)(void *); - void *reply_new_arg; - - /* frees the reply structure */ - void (*reply_free)(void *); - - /* verifies that the reply is valid */ - int (*reply_complete)(void *); - - /* marshals the reply into a buffer */ - void (*reply_marshal)(struct evbuffer*, void *); - - /* the callback invoked for each received rpc */ - void (*cb)(struct evrpc_req_generic *, void *); - void *cb_arg; - - /* reference for further configuration */ - struct evrpc_base *base; -}; - -#ifdef __cplusplus -} -#endif - -#endif /* EVENT2_RPC_STRUCT_H_INCLUDED_ */ diff --git a/cache/include/libevent2/event2/tag.h b/cache/include/libevent2/event2/tag.h deleted file mode 100644 index 2f73bfc..0000000 --- a/cache/include/libevent2/event2/tag.h +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright (c) 2000-2007 Niels Provos - * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef EVENT2_TAG_H_INCLUDED_ -#define EVENT2_TAG_H_INCLUDED_ - -/** @file event2/tag.h - - Helper functions for reading and writing tagged data onto buffers. - - */ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#ifdef EVENT__HAVE_SYS_TYPES_H -#include -#endif -#ifdef EVENT__HAVE_SYS_TIME_H -#include -#endif - -/* For int types. */ -#include - -struct evbuffer; - -/* - * Marshaling tagged data - We assume that all tags are inserted in their - * numeric order - so that unknown tags will always be higher than the - * known ones - and we can just ignore the end of an event buffer. - */ - -EVENT2_EXPORT_SYMBOL -void evtag_init(void); - -/** - Unmarshals the header and returns the length of the payload - - @param evbuf the buffer from which to unmarshal data - @param ptag a pointer in which the tag id is being stored - @returns -1 on failure or the number of bytes in the remaining payload. -*/ -EVENT2_EXPORT_SYMBOL -int evtag_unmarshal_header(struct evbuffer *evbuf, ev_uint32_t *ptag); - -EVENT2_EXPORT_SYMBOL -void evtag_marshal(struct evbuffer *evbuf, ev_uint32_t tag, const void *data, - ev_uint32_t len); -EVENT2_EXPORT_SYMBOL -void evtag_marshal_buffer(struct evbuffer *evbuf, ev_uint32_t tag, - struct evbuffer *data); - -/** - Encode an integer and store it in an evbuffer. - - We encode integers by nybbles; the first nibble contains the number - of significant nibbles - 1; this allows us to encode up to 64-bit - integers. This function is byte-order independent. - - @param evbuf evbuffer to store the encoded number - @param number a 32-bit integer - */ -EVENT2_EXPORT_SYMBOL -void evtag_encode_int(struct evbuffer *evbuf, ev_uint32_t number); -EVENT2_EXPORT_SYMBOL -void evtag_encode_int64(struct evbuffer *evbuf, ev_uint64_t number); - -EVENT2_EXPORT_SYMBOL -void evtag_marshal_int(struct evbuffer *evbuf, ev_uint32_t tag, - ev_uint32_t integer); -EVENT2_EXPORT_SYMBOL -void evtag_marshal_int64(struct evbuffer *evbuf, ev_uint32_t tag, - ev_uint64_t integer); - -EVENT2_EXPORT_SYMBOL -void evtag_marshal_string(struct evbuffer *buf, ev_uint32_t tag, - const char *string); - -EVENT2_EXPORT_SYMBOL -void evtag_marshal_timeval(struct evbuffer *evbuf, ev_uint32_t tag, - struct timeval *tv); - -EVENT2_EXPORT_SYMBOL -int evtag_unmarshal(struct evbuffer *src, ev_uint32_t *ptag, - struct evbuffer *dst); -EVENT2_EXPORT_SYMBOL -int evtag_peek(struct evbuffer *evbuf, ev_uint32_t *ptag); -EVENT2_EXPORT_SYMBOL -int evtag_peek_length(struct evbuffer *evbuf, ev_uint32_t *plength); -EVENT2_EXPORT_SYMBOL -int evtag_payload_length(struct evbuffer *evbuf, ev_uint32_t *plength); -EVENT2_EXPORT_SYMBOL -int evtag_consume(struct evbuffer *evbuf); - -EVENT2_EXPORT_SYMBOL -int evtag_unmarshal_int(struct evbuffer *evbuf, ev_uint32_t need_tag, - ev_uint32_t *pinteger); -EVENT2_EXPORT_SYMBOL -int evtag_unmarshal_int64(struct evbuffer *evbuf, ev_uint32_t need_tag, - ev_uint64_t *pinteger); - -EVENT2_EXPORT_SYMBOL -int evtag_unmarshal_fixed(struct evbuffer *src, ev_uint32_t need_tag, - void *data, size_t len); - -EVENT2_EXPORT_SYMBOL -int evtag_unmarshal_string(struct evbuffer *evbuf, ev_uint32_t need_tag, - char **pstring); - -EVENT2_EXPORT_SYMBOL -int evtag_unmarshal_timeval(struct evbuffer *evbuf, ev_uint32_t need_tag, - struct timeval *ptv); - -#ifdef __cplusplus -} -#endif - -#endif /* EVENT2_TAG_H_INCLUDED_ */ diff --git a/cache/include/libevent2/event2/tag_compat.h b/cache/include/libevent2/event2/tag_compat.h deleted file mode 100644 index a276c0d..0000000 --- a/cache/include/libevent2/event2/tag_compat.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2000-2007 Niels Provos - * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef EVENT2_TAG_COMPAT_H_INCLUDED_ -#define EVENT2_TAG_COMPAT_H_INCLUDED_ - -/** @file event2/tag_compat.h - - Obsolete/deprecated functions from tag.h; provided only for backwards - compatibility. - */ - -/** - @name Misnamed functions - - @deprecated These macros are deprecated because their names don't follow - Libevent's naming conventions. Use evtag_encode_int and - evtag_encode_int64 instead. - - @{ -*/ -#define encode_int(evbuf, number) evtag_encode_int((evbuf), (number)) -#define encode_int64(evbuf, number) evtag_encode_int64((evbuf), (number)) -/**@}*/ - -#endif /* EVENT2_TAG_H_INCLUDED_ */ diff --git a/cache/include/libevent2/event2/thread.h b/cache/include/libevent2/event2/thread.h deleted file mode 100644 index b519986..0000000 --- a/cache/include/libevent2/event2/thread.h +++ /dev/null @@ -1,253 +0,0 @@ -/* - * Copyright (c) 2008-2012 Niels Provos and Nick Mathewson - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef EVENT2_THREAD_H_INCLUDED_ -#define EVENT2_THREAD_H_INCLUDED_ - -/** @file event2/thread.h - - Functions for multi-threaded applications using Libevent. - - When using a multi-threaded application in which multiple threads - add and delete events from a single event base, Libevent needs to - lock its data structures. - - Like the memory-management function hooks, all of the threading functions - _must_ be set up before an event_base is created if you want the base to - use them. - - Most programs will either be using Windows threads or Posix threads. You - can configure Libevent to use one of these event_use_windows_threads() or - event_use_pthreads() respectively. If you're using another threading - library, you'll need to configure threading functions manually using - evthread_set_lock_callbacks() and evthread_set_condition_callbacks(). - - */ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -/** - @name Flags passed to lock functions - - @{ -*/ -/** A flag passed to a locking callback when the lock was allocated as a - * read-write lock, and we want to acquire or release the lock for writing. */ -#define EVTHREAD_WRITE 0x04 -/** A flag passed to a locking callback when the lock was allocated as a - * read-write lock, and we want to acquire or release the lock for reading. */ -#define EVTHREAD_READ 0x08 -/** A flag passed to a locking callback when we don't want to block waiting - * for the lock; if we can't get the lock immediately, we will instead - * return nonzero from the locking callback. */ -#define EVTHREAD_TRY 0x10 -/**@}*/ - -#if !defined(EVENT__DISABLE_THREAD_SUPPORT) || defined(EVENT_IN_DOXYGEN_) - -#define EVTHREAD_LOCK_API_VERSION 1 - -/** - @name Types of locks - - @{*/ -/** A recursive lock is one that can be acquired multiple times at once by the - * same thread. No other process can allocate the lock until the thread that - * has been holding it has unlocked it as many times as it locked it. */ -#define EVTHREAD_LOCKTYPE_RECURSIVE 1 -/* A read-write lock is one that allows multiple simultaneous readers, but - * where any one writer excludes all other writers and readers. */ -#define EVTHREAD_LOCKTYPE_READWRITE 2 -/**@}*/ - -/** This structure describes the interface a threading library uses for - * locking. It's used to tell evthread_set_lock_callbacks() how to use - * locking on this platform. - */ -struct evthread_lock_callbacks { - /** The current version of the locking API. Set this to - * EVTHREAD_LOCK_API_VERSION */ - int lock_api_version; - /** Which kinds of locks does this version of the locking API - * support? A bitfield of EVTHREAD_LOCKTYPE_RECURSIVE and - * EVTHREAD_LOCKTYPE_READWRITE. - * - * (Note that RECURSIVE locks are currently mandatory, and - * READWRITE locks are not currently used.) - **/ - unsigned supported_locktypes; - /** Function to allocate and initialize new lock of type 'locktype'. - * Returns NULL on failure. */ - void *(*alloc)(unsigned locktype); - /** Funtion to release all storage held in 'lock', which was created - * with type 'locktype'. */ - void (*free)(void *lock, unsigned locktype); - /** Acquire an already-allocated lock at 'lock' with mode 'mode'. - * Returns 0 on success, and nonzero on failure. */ - int (*lock)(unsigned mode, void *lock); - /** Release a lock at 'lock' using mode 'mode'. Returns 0 on success, - * and nonzero on failure. */ - int (*unlock)(unsigned mode, void *lock); -}; - -/** Sets a group of functions that Libevent should use for locking. - * For full information on the required callback API, see the - * documentation for the individual members of evthread_lock_callbacks. - * - * Note that if you're using Windows or the Pthreads threading library, you - * probably shouldn't call this function; instead, use - * evthread_use_windows_threads() or evthread_use_posix_threads() if you can. - */ -EVENT2_EXPORT_SYMBOL -int evthread_set_lock_callbacks(const struct evthread_lock_callbacks *); - -#define EVTHREAD_CONDITION_API_VERSION 1 - -struct timeval; - -/** This structure describes the interface a threading library uses for - * condition variables. It's used to tell evthread_set_condition_callbacks - * how to use locking on this platform. - */ -struct evthread_condition_callbacks { - /** The current version of the conditions API. Set this to - * EVTHREAD_CONDITION_API_VERSION */ - int condition_api_version; - /** Function to allocate and initialize a new condition variable. - * Returns the condition variable on success, and NULL on failure. - * The 'condtype' argument will be 0 with this API version. - */ - void *(*alloc_condition)(unsigned condtype); - /** Function to free a condition variable. */ - void (*free_condition)(void *cond); - /** Function to signal a condition variable. If 'broadcast' is 1, all - * threads waiting on 'cond' should be woken; otherwise, only on one - * thread is worken. Should return 0 on success, -1 on failure. - * This function will only be called while holding the associated - * lock for the condition. - */ - int (*signal_condition)(void *cond, int broadcast); - /** Function to wait for a condition variable. The lock 'lock' - * will be held when this function is called; should be released - * while waiting for the condition to be come signalled, and - * should be held again when this function returns. - * If timeout is provided, it is interval of seconds to wait for - * the event to become signalled; if it is NULL, the function - * should wait indefinitely. - * - * The function should return -1 on error; 0 if the condition - * was signalled, or 1 on a timeout. */ - int (*wait_condition)(void *cond, void *lock, - const struct timeval *timeout); -}; - -/** Sets a group of functions that Libevent should use for condition variables. - * For full information on the required callback API, see the - * documentation for the individual members of evthread_condition_callbacks. - * - * Note that if you're using Windows or the Pthreads threading library, you - * probably shouldn't call this function; instead, use - * evthread_use_windows_threads() or evthread_use_pthreads() if you can. - */ -EVENT2_EXPORT_SYMBOL -int evthread_set_condition_callbacks( - const struct evthread_condition_callbacks *); - -/** - Sets the function for determining the thread id. - - @param base the event base for which to set the id function - @param id_fn the identify function Libevent should invoke to - determine the identity of a thread. -*/ -EVENT2_EXPORT_SYMBOL -void evthread_set_id_callback( - unsigned long (*id_fn)(void)); - -#if (defined(_WIN32) && !defined(EVENT__DISABLE_THREAD_SUPPORT)) || defined(EVENT_IN_DOXYGEN_) -/** Sets up Libevent for use with Windows builtin locking and thread ID - functions. Unavailable if Libevent is not built for Windows. - - @return 0 on success, -1 on failure. */ -EVENT2_EXPORT_SYMBOL -int evthread_use_windows_threads(void); -/** - Defined if Libevent was built with support for evthread_use_windows_threads() -*/ -#define EVTHREAD_USE_WINDOWS_THREADS_IMPLEMENTED 1 -#endif - -#if defined(EVENT__HAVE_PTHREADS) || defined(EVENT_IN_DOXYGEN_) -/** Sets up Libevent for use with Pthreads locking and thread ID functions. - Unavailable if Libevent is not build for use with pthreads. Requires - libraries to link against Libevent_pthreads as well as Libevent. - - @return 0 on success, -1 on failure. */ -EVENT2_EXPORT_SYMBOL -int evthread_use_pthreads(void); -/** Defined if Libevent was built with support for evthread_use_pthreads() */ -#define EVTHREAD_USE_PTHREADS_IMPLEMENTED 1 - -#endif - -/** Enable debugging wrappers around the current lock callbacks. If Libevent - * makes one of several common locking errors, exit with an assertion failure. - * - * If you're going to call this function, you must do so before any locks are - * allocated. - **/ -EVENT2_EXPORT_SYMBOL -void evthread_enable_lock_debugging(void); - -/* Old (misspelled) version: This is deprecated; use - * evthread_enable_log_debugging instead. */ -EVENT2_EXPORT_SYMBOL -void evthread_enable_lock_debuging(void); - -#endif /* EVENT__DISABLE_THREAD_SUPPORT */ - -struct event_base; -/** Make sure it's safe to tell an event base to wake up from another thread - or a signal handler. - - You shouldn't need to call this by hand; configuring the base with thread - support should be necessary and sufficient. - - @return 0 on success, -1 on failure. - */ -EVENT2_EXPORT_SYMBOL -int evthread_make_base_notifiable(struct event_base *base); - -#ifdef __cplusplus -} -#endif - -#endif /* EVENT2_THREAD_H_INCLUDED_ */ diff --git a/cache/include/libevent2/event2/util.h b/cache/include/libevent2/event2/util.h deleted file mode 100644 index dd4bbb6..0000000 --- a/cache/include/libevent2/event2/util.h +++ /dev/null @@ -1,866 +0,0 @@ -/* - * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef EVENT2_UTIL_H_INCLUDED_ -#define EVENT2_UTIL_H_INCLUDED_ - -/** @file event2/util.h - - Common convenience functions for cross-platform portability and - related socket manipulations. - - */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#ifdef EVENT__HAVE_SYS_TIME_H -#include -#endif -#ifdef EVENT__HAVE_STDINT_H -#include -#elif defined(EVENT__HAVE_INTTYPES_H) -#include -#endif -#ifdef EVENT__HAVE_SYS_TYPES_H -#include -#endif -#ifdef EVENT__HAVE_STDDEF_H -#include -#endif -#ifdef _MSC_VER -#include -#endif -#include -#ifdef EVENT__HAVE_NETDB_H -#if !defined(_GNU_SOURCE) -#define _GNU_SOURCE -#endif -#include -#endif - -#ifdef _WIN32 -#include -#ifdef EVENT__HAVE_GETADDRINFO -/* for EAI_* definitions. */ -#include -#endif -#else -#ifdef EVENT__HAVE_ERRNO_H -#include -#endif -#include -#endif - -#include - -/* Some openbsd autoconf versions get the name of this macro wrong. */ -#if defined(EVENT__SIZEOF_VOID__) && !defined(EVENT__SIZEOF_VOID_P) -#define EVENT__SIZEOF_VOID_P EVENT__SIZEOF_VOID__ -#endif - -/** - * @name Standard integer types. - * - * Integer type definitions for types that are supposed to be defined in the - * C99-specified stdint.h. Shamefully, some platforms do not include - * stdint.h, so we need to replace it. (If you are on a platform like this, - * your C headers are now over 10 years out of date. You should bug them to - * do something about this.) - * - * We define: - * - *
- *
ev_uint64_t, ev_uint32_t, ev_uint16_t, ev_uint8_t
- *
unsigned integer types of exactly 64, 32, 16, and 8 bits - * respectively.
- *
ev_int64_t, ev_int32_t, ev_int16_t, ev_int8_t
- *
signed integer types of exactly 64, 32, 16, and 8 bits - * respectively.
- *
ev_uintptr_t, ev_intptr_t
- *
unsigned/signed integers large enough - * to hold a pointer without loss of bits.
- *
ev_ssize_t
- *
A signed type of the same size as size_t
- *
ev_off_t
- *
A signed type typically used to represent offsets within a - * (potentially large) file
- * - * @{ - */ -#ifdef EVENT__HAVE_UINT64_T -#define ev_uint64_t uint64_t -#define ev_int64_t int64_t -#elif defined(_WIN32) -#define ev_uint64_t unsigned __int64 -#define ev_int64_t signed __int64 -#elif EVENT__SIZEOF_LONG_LONG == 8 -#define ev_uint64_t unsigned long long -#define ev_int64_t long long -#elif EVENT__SIZEOF_LONG == 8 -#define ev_uint64_t unsigned long -#define ev_int64_t long -#elif defined(EVENT_IN_DOXYGEN_) -#define ev_uint64_t ... -#define ev_int64_t ... -#else -#error "No way to define ev_uint64_t" -#endif - -#ifdef EVENT__HAVE_UINT32_T -#define ev_uint32_t uint32_t -#define ev_int32_t int32_t -#elif defined(_WIN32) -#define ev_uint32_t unsigned int -#define ev_int32_t signed int -#elif EVENT__SIZEOF_LONG == 4 -#define ev_uint32_t unsigned long -#define ev_int32_t signed long -#elif EVENT__SIZEOF_INT == 4 -#define ev_uint32_t unsigned int -#define ev_int32_t signed int -#elif defined(EVENT_IN_DOXYGEN_) -#define ev_uint32_t ... -#define ev_int32_t ... -#else -#error "No way to define ev_uint32_t" -#endif - -#ifdef EVENT__HAVE_UINT16_T -#define ev_uint16_t uint16_t -#define ev_int16_t int16_t -#elif defined(_WIN32) -#define ev_uint16_t unsigned short -#define ev_int16_t signed short -#elif EVENT__SIZEOF_INT == 2 -#define ev_uint16_t unsigned int -#define ev_int16_t signed int -#elif EVENT__SIZEOF_SHORT == 2 -#define ev_uint16_t unsigned short -#define ev_int16_t signed short -#elif defined(EVENT_IN_DOXYGEN_) -#define ev_uint16_t ... -#define ev_int16_t ... -#else -#error "No way to define ev_uint16_t" -#endif - -#ifdef EVENT__HAVE_UINT8_T -#define ev_uint8_t uint8_t -#define ev_int8_t int8_t -#elif defined(EVENT_IN_DOXYGEN_) -#define ev_uint8_t ... -#define ev_int8_t ... -#else -#define ev_uint8_t unsigned char -#define ev_int8_t signed char -#endif - -#ifdef EVENT__HAVE_UINTPTR_T -#define ev_uintptr_t uintptr_t -#define ev_intptr_t intptr_t -#elif EVENT__SIZEOF_VOID_P <= 4 -#define ev_uintptr_t ev_uint32_t -#define ev_intptr_t ev_int32_t -#elif EVENT__SIZEOF_VOID_P <= 8 -#define ev_uintptr_t ev_uint64_t -#define ev_intptr_t ev_int64_t -#elif defined(EVENT_IN_DOXYGEN_) -#define ev_uintptr_t ... -#define ev_intptr_t ... -#else -#error "No way to define ev_uintptr_t" -#endif - -#ifdef EVENT__ssize_t -#define ev_ssize_t EVENT__ssize_t -#else -#define ev_ssize_t ssize_t -#endif - -/* Note that we define ev_off_t based on the compile-time size of off_t that - * we used to build Libevent, and not based on the current size of off_t. - * (For example, we don't define ev_off_t to off_t.). We do this because - * some systems let you build your software with different off_t sizes - * at runtime, and so putting in any dependency on off_t would risk API - * mismatch. - */ -#ifdef _WIN32 -#define ev_off_t ev_int64_t -#elif EVENT__SIZEOF_OFF_T == 8 -#define ev_off_t ev_int64_t -#elif EVENT__SIZEOF_OFF_T == 4 -#define ev_off_t ev_int32_t -#elif defined(EVENT_IN_DOXYGEN_) -#define ev_off_t ... -#else -#define ev_off_t off_t -#endif -/**@}*/ - -/* Limits for integer types. - - We're making two assumptions here: - - The compiler does constant folding properly. - - The platform does signed arithmetic in two's complement. -*/ - -/** - @name Limits for integer types - - These macros hold the largest or smallest values possible for the - ev_[u]int*_t types. - - @{ -*/ -#ifndef EVENT__HAVE_STDINT_H -#define EV_UINT64_MAX ((((ev_uint64_t)0xffffffffUL) << 32) | 0xffffffffUL) -#define EV_INT64_MAX ((((ev_int64_t) 0x7fffffffL) << 32) | 0xffffffffL) -#define EV_INT64_MIN ((-EV_INT64_MAX) - 1) -#define EV_UINT32_MAX ((ev_uint32_t)0xffffffffUL) -#define EV_INT32_MAX ((ev_int32_t) 0x7fffffffL) -#define EV_INT32_MIN ((-EV_INT32_MAX) - 1) -#define EV_UINT16_MAX ((ev_uint16_t)0xffffUL) -#define EV_INT16_MAX ((ev_int16_t) 0x7fffL) -#define EV_INT16_MIN ((-EV_INT16_MAX) - 1) -#define EV_UINT8_MAX 255 -#define EV_INT8_MAX 127 -#define EV_INT8_MIN ((-EV_INT8_MAX) - 1) -#else -#define EV_UINT64_MAX UINT64_MAX -#define EV_INT64_MAX INT64_MAX -#define EV_INT64_MIN INT64_MIN -#define EV_UINT32_MAX UINT32_MAX -#define EV_INT32_MAX INT32_MAX -#define EV_INT32_MIN INT32_MIN -#define EV_UINT16_MAX UINT16_MAX -#define EV_INT16_MAX INT16_MAX -#define EV_UINT8_MAX UINT8_MAX -#define EV_INT8_MAX INT8_MAX -#define EV_INT8_MIN INT8_MIN -/** @} */ -#endif - - -/** - @name Limits for SIZE_T and SSIZE_T - - @{ -*/ -#if EVENT__SIZEOF_SIZE_T == 8 -#define EV_SIZE_MAX EV_UINT64_MAX -#define EV_SSIZE_MAX EV_INT64_MAX -#elif EVENT__SIZEOF_SIZE_T == 4 -#define EV_SIZE_MAX EV_UINT32_MAX -#define EV_SSIZE_MAX EV_INT32_MAX -#elif defined(EVENT_IN_DOXYGEN_) -#define EV_SIZE_MAX ... -#define EV_SSIZE_MAX ... -#else -#error "No way to define SIZE_MAX" -#endif - -#define EV_SSIZE_MIN ((-EV_SSIZE_MAX) - 1) -/**@}*/ - -#ifdef _WIN32 -#define ev_socklen_t int -#elif defined(EVENT__socklen_t) -#define ev_socklen_t EVENT__socklen_t -#else -#define ev_socklen_t socklen_t -#endif - -#ifdef EVENT__HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY -#if !defined(EVENT__HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY) \ - && !defined(ss_family) -#define ss_family __ss_family -#endif -#endif - -/** - * A type wide enough to hold the output of "socket()" or "accept()". On - * Windows, this is an intptr_t; elsewhere, it is an int. */ -#ifdef _WIN32 -#define evutil_socket_t intptr_t -#else -#define evutil_socket_t int -#endif - -/** - * Structure to hold information about a monotonic timer - * - * Use this with evutil_configure_monotonic_time() and - * evutil_gettime_monotonic(). - * - * This is an opaque structure; you can allocate one using - * evutil_monotonic_timer_new(). - * - * @see evutil_monotonic_timer_new(), evutil_monotonic_timer_free(), - * evutil_configure_monotonic_time(), evutil_gettime_monotonic() - */ -struct evutil_monotonic_timer -#ifdef EVENT_IN_DOXYGEN_ -{/*Empty body so that doxygen will generate documentation here.*/} -#endif -; - -#define EV_MONOT_PRECISE 1 -#define EV_MONOT_FALLBACK 2 - -/** Format a date string using RFC 1123 format (used in HTTP). - * If `tm` is NULL, current system's time will be used. - * The number of characters written will be returned. - * One should check if the return value is smaller than `datelen` to check if - * the result is truncated or not. - */ -EVENT2_EXPORT_SYMBOL int -evutil_date_rfc1123(char *date, const size_t datelen, const struct tm *tm); - -/** Allocate a new struct evutil_monotonic_timer for use with the - * evutil_configure_monotonic_time() and evutil_gettime_monotonic() - * functions. You must configure the timer with - * evutil_configure_monotonic_time() before using it. - */ -EVENT2_EXPORT_SYMBOL -struct evutil_monotonic_timer * evutil_monotonic_timer_new(void); - -/** Free a struct evutil_monotonic_timer that was allocated using - * evutil_monotonic_timer_new(). - */ -EVENT2_EXPORT_SYMBOL -void evutil_monotonic_timer_free(struct evutil_monotonic_timer *timer); - -/** Set up a struct evutil_monotonic_timer; flags can include - * EV_MONOT_PRECISE and EV_MONOT_FALLBACK. - */ -EVENT2_EXPORT_SYMBOL -int evutil_configure_monotonic_time(struct evutil_monotonic_timer *timer, - int flags); - -/** Query the current monotonic time from a struct evutil_monotonic_timer - * previously configured with evutil_configure_monotonic_time(). Monotonic - * time is guaranteed never to run in reverse, but is not necessarily epoch- - * based, or relative to any other definite point. Use it to make reliable - * measurements of elapsed time between events even when the system time - * may be changed. - * - * It is not safe to use this funtion on the same timer from multiple - * threads. - */ -EVENT2_EXPORT_SYMBOL -int evutil_gettime_monotonic(struct evutil_monotonic_timer *timer, - struct timeval *tp); - -/** Create two new sockets that are connected to each other. - - On Unix, this simply calls socketpair(). On Windows, it uses the - loopback network interface on 127.0.0.1, and only - AF_INET,SOCK_STREAM are supported. - - (This may fail on some Windows hosts where firewall software has cleverly - decided to keep 127.0.0.1 from talking to itself.) - - Parameters and return values are as for socketpair() -*/ -EVENT2_EXPORT_SYMBOL -int evutil_socketpair(int d, int type, int protocol, evutil_socket_t sv[2]); -/** Do platform-specific operations as needed to make a socket nonblocking. - - @param sock The socket to make nonblocking - @return 0 on success, -1 on failure - */ -EVENT2_EXPORT_SYMBOL -int evutil_make_socket_nonblocking(evutil_socket_t sock); - -/** Do platform-specific operations to make a listener socket reusable. - - Specifically, we want to make sure that another program will be able - to bind this address right after we've closed the listener. - - This differs from Windows's interpretation of "reusable", which - allows multiple listeners to bind the same address at the same time. - - @param sock The socket to make reusable - @return 0 on success, -1 on failure - */ -EVENT2_EXPORT_SYMBOL -int evutil_make_listen_socket_reuseable(evutil_socket_t sock); - -/** Do platform-specific operations to make a listener port reusable. - - Specifically, we want to make sure that multiple programs which also - set the same socket option will be able to bind, listen at the same time. - - This is a feature available only to Linux 3.9+ - - @param sock The socket to make reusable - @return 0 on success, -1 on failure - */ -EVENT2_EXPORT_SYMBOL -int evutil_make_listen_socket_reuseable_port(evutil_socket_t sock); - -/** Do platform-specific operations as needed to close a socket upon a - successful execution of one of the exec*() functions. - - @param sock The socket to be closed - @return 0 on success, -1 on failure - */ -EVENT2_EXPORT_SYMBOL -int evutil_make_socket_closeonexec(evutil_socket_t sock); - -/** Do the platform-specific call needed to close a socket returned from - socket() or accept(). - - @param sock The socket to be closed - @return 0 on success, -1 on failure - */ -EVENT2_EXPORT_SYMBOL -int evutil_closesocket(evutil_socket_t sock); -#define EVUTIL_CLOSESOCKET(s) evutil_closesocket(s) - -/** Do platform-specific operations, if possible, to make a tcp listener - * socket defer accept()s until there is data to read. - * - * Not all platforms support this. You don't want to do this for every - * listener socket: only the ones that implement a protocol where the - * client transmits before the server needs to respond. - * - * @param sock The listening socket to to make deferred - * @return 0 on success (whether the operation is supported or not), - * -1 on failure -*/ -EVENT2_EXPORT_SYMBOL -int evutil_make_tcp_listen_socket_deferred(evutil_socket_t sock); - -#ifdef _WIN32 -/** Return the most recent socket error. Not idempotent on all platforms. */ -#define EVUTIL_SOCKET_ERROR() WSAGetLastError() -/** Replace the most recent socket error with errcode */ -#define EVUTIL_SET_SOCKET_ERROR(errcode) \ - do { WSASetLastError(errcode); } while (0) -/** Return the most recent socket error to occur on sock. */ -EVENT2_EXPORT_SYMBOL -int evutil_socket_geterror(evutil_socket_t sock); -/** Convert a socket error to a string. */ -EVENT2_EXPORT_SYMBOL -const char *evutil_socket_error_to_string(int errcode); -#elif defined(EVENT_IN_DOXYGEN_) -/** - @name Socket error functions - - These functions are needed for making programs compatible between - Windows and Unix-like platforms. - - You see, Winsock handles socket errors differently from the rest of - the world. Elsewhere, a socket error is like any other error and is - stored in errno. But winsock functions require you to retrieve the - error with a special function, and don't let you use strerror for - the error codes. And handling EWOULDBLOCK is ... different. - - @{ -*/ -/** Return the most recent socket error. Not idempotent on all platforms. */ -#define EVUTIL_SOCKET_ERROR() ... -/** Replace the most recent socket error with errcode */ -#define EVUTIL_SET_SOCKET_ERROR(errcode) ... -/** Return the most recent socket error to occur on sock. */ -#define evutil_socket_geterror(sock) ... -/** Convert a socket error to a string. */ -#define evutil_socket_error_to_string(errcode) ... -/**@}*/ -#else -#define EVUTIL_SOCKET_ERROR() (errno) -#define EVUTIL_SET_SOCKET_ERROR(errcode) \ - do { errno = (errcode); } while (0) -#define evutil_socket_geterror(sock) (errno) -#define evutil_socket_error_to_string(errcode) (strerror(errcode)) -#endif - - -/** - * @name Manipulation macros for struct timeval. - * - * We define replacements - * for timeradd, timersub, timerclear, timercmp, and timerisset. - * - * @{ - */ -#ifdef EVENT__HAVE_TIMERADD -#define evutil_timeradd(tvp, uvp, vvp) timeradd((tvp), (uvp), (vvp)) -#define evutil_timersub(tvp, uvp, vvp) timersub((tvp), (uvp), (vvp)) -#else -#define evutil_timeradd(tvp, uvp, vvp) \ - do { \ - (vvp)->tv_sec = (tvp)->tv_sec + (uvp)->tv_sec; \ - (vvp)->tv_usec = (tvp)->tv_usec + (uvp)->tv_usec; \ - if ((vvp)->tv_usec >= 1000000) { \ - (vvp)->tv_sec++; \ - (vvp)->tv_usec -= 1000000; \ - } \ - } while (0) -#define evutil_timersub(tvp, uvp, vvp) \ - do { \ - (vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \ - (vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec; \ - if ((vvp)->tv_usec < 0) { \ - (vvp)->tv_sec--; \ - (vvp)->tv_usec += 1000000; \ - } \ - } while (0) -#endif /* !EVENT__HAVE_TIMERADD */ - -#ifdef EVENT__HAVE_TIMERCLEAR -#define evutil_timerclear(tvp) timerclear(tvp) -#else -#define evutil_timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0 -#endif -/**@}*/ - -/** Return true iff the tvp is related to uvp according to the relational - * operator cmp. Recognized values for cmp are ==, <=, <, >=, and >. */ -#define evutil_timercmp(tvp, uvp, cmp) \ - (((tvp)->tv_sec == (uvp)->tv_sec) ? \ - ((tvp)->tv_usec cmp (uvp)->tv_usec) : \ - ((tvp)->tv_sec cmp (uvp)->tv_sec)) - -#ifdef EVENT__HAVE_TIMERISSET -#define evutil_timerisset(tvp) timerisset(tvp) -#else -#define evutil_timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec) -#endif - -/** Replacement for offsetof on platforms that don't define it. */ -#ifdef offsetof -#define evutil_offsetof(type, field) offsetof(type, field) -#else -#define evutil_offsetof(type, field) ((off_t)(&((type *)0)->field)) -#endif - -/* big-int related functions */ -/** Parse a 64-bit value from a string. Arguments are as for strtol. */ -EVENT2_EXPORT_SYMBOL -ev_int64_t evutil_strtoll(const char *s, char **endptr, int base); - -/** Replacement for gettimeofday on platforms that lack it. */ -#ifdef EVENT__HAVE_GETTIMEOFDAY -#define evutil_gettimeofday(tv, tz) gettimeofday((tv), (tz)) -#else -struct timezone; -EVENT2_EXPORT_SYMBOL -int evutil_gettimeofday(struct timeval *tv, struct timezone *tz); -#endif - -/** Replacement for snprintf to get consistent behavior on platforms for - which the return value of snprintf does not conform to C99. - */ -EVENT2_EXPORT_SYMBOL -int evutil_snprintf(char *buf, size_t buflen, const char *format, ...) -#ifdef __GNUC__ - __attribute__((format(printf, 3, 4))) -#endif -; -/** Replacement for vsnprintf to get consistent behavior on platforms for - which the return value of snprintf does not conform to C99. - */ -EVENT2_EXPORT_SYMBOL -int evutil_vsnprintf(char *buf, size_t buflen, const char *format, va_list ap) -#ifdef __GNUC__ - __attribute__((format(printf, 3, 0))) -#endif -; - -/** Replacement for inet_ntop for platforms which lack it. */ -EVENT2_EXPORT_SYMBOL -const char *evutil_inet_ntop(int af, const void *src, char *dst, size_t len); -/** Replacement for inet_pton for platforms which lack it. */ -EVENT2_EXPORT_SYMBOL -int evutil_inet_pton(int af, const char *src, void *dst); -struct sockaddr; - -/** Parse an IPv4 or IPv6 address, with optional port, from a string. - - Recognized formats are: - - [IPv6Address]:port - - [IPv6Address] - - IPv6Address - - IPv4Address:port - - IPv4Address - - If no port is specified, the port in the output is set to 0. - - @param str The string to parse. - @param out A struct sockaddr to hold the result. This should probably be - a struct sockaddr_storage. - @param outlen A pointer to the number of bytes that that 'out' can safely - hold. Set to the number of bytes used in 'out' on success. - @return -1 if the address is not well-formed, if the port is out of range, - or if out is not large enough to hold the result. Otherwise returns - 0 on success. -*/ -EVENT2_EXPORT_SYMBOL -int evutil_parse_sockaddr_port(const char *str, struct sockaddr *out, int *outlen); - -/** Compare two sockaddrs; return 0 if they are equal, or less than 0 if sa1 - * preceeds sa2, or greater than 0 if sa1 follows sa2. If include_port is - * true, consider the port as well as the address. Only implemented for - * AF_INET and AF_INET6 addresses. The ordering is not guaranteed to remain - * the same between Libevent versions. */ -EVENT2_EXPORT_SYMBOL -int evutil_sockaddr_cmp(const struct sockaddr *sa1, const struct sockaddr *sa2, - int include_port); - -/** As strcasecmp, but always compares the characters in locale-independent - ASCII. That's useful if you're handling data in ASCII-based protocols. - */ -EVENT2_EXPORT_SYMBOL -int evutil_ascii_strcasecmp(const char *str1, const char *str2); -/** As strncasecmp, but always compares the characters in locale-independent - ASCII. That's useful if you're handling data in ASCII-based protocols. - */ -EVENT2_EXPORT_SYMBOL -int evutil_ascii_strncasecmp(const char *str1, const char *str2, size_t n); - -/* Here we define evutil_addrinfo to the native addrinfo type, or redefine it - * if this system has no getaddrinfo(). */ -#ifdef EVENT__HAVE_STRUCT_ADDRINFO -#define evutil_addrinfo addrinfo -#else -/** A definition of struct addrinfo for systems that lack it. - - (This is just an alias for struct addrinfo if the system defines - struct addrinfo.) -*/ -struct evutil_addrinfo { - int ai_flags; /* AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST */ - int ai_family; /* PF_xxx */ - int ai_socktype; /* SOCK_xxx */ - int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */ - size_t ai_addrlen; /* length of ai_addr */ - char *ai_canonname; /* canonical name for nodename */ - struct sockaddr *ai_addr; /* binary address */ - struct evutil_addrinfo *ai_next; /* next structure in linked list */ -}; -#endif -/** @name evutil_getaddrinfo() error codes - - These values are possible error codes for evutil_getaddrinfo() and - related functions. - - @{ -*/ -#if defined(EAI_ADDRFAMILY) && defined(EVENT__HAVE_GETADDRINFO) -#define EVUTIL_EAI_ADDRFAMILY EAI_ADDRFAMILY -#else -#define EVUTIL_EAI_ADDRFAMILY -901 -#endif -#if defined(EAI_AGAIN) && defined(EVENT__HAVE_GETADDRINFO) -#define EVUTIL_EAI_AGAIN EAI_AGAIN -#else -#define EVUTIL_EAI_AGAIN -902 -#endif -#if defined(EAI_BADFLAGS) && defined(EVENT__HAVE_GETADDRINFO) -#define EVUTIL_EAI_BADFLAGS EAI_BADFLAGS -#else -#define EVUTIL_EAI_BADFLAGS -903 -#endif -#if defined(EAI_FAIL) && defined(EVENT__HAVE_GETADDRINFO) -#define EVUTIL_EAI_FAIL EAI_FAIL -#else -#define EVUTIL_EAI_FAIL -904 -#endif -#if defined(EAI_FAMILY) && defined(EVENT__HAVE_GETADDRINFO) -#define EVUTIL_EAI_FAMILY EAI_FAMILY -#else -#define EVUTIL_EAI_FAMILY -905 -#endif -#if defined(EAI_MEMORY) && defined(EVENT__HAVE_GETADDRINFO) -#define EVUTIL_EAI_MEMORY EAI_MEMORY -#else -#define EVUTIL_EAI_MEMORY -906 -#endif -/* This test is a bit complicated, since some MS SDKs decide to - * remove NODATA or redefine it to be the same as NONAME, in a - * fun interpretation of RFC 2553 and RFC 3493. */ -#if defined(EAI_NODATA) && defined(EVENT__HAVE_GETADDRINFO) && (!defined(EAI_NONAME) || EAI_NODATA != EAI_NONAME) -#define EVUTIL_EAI_NODATA EAI_NODATA -#else -#define EVUTIL_EAI_NODATA -907 -#endif -#if defined(EAI_NONAME) && defined(EVENT__HAVE_GETADDRINFO) -#define EVUTIL_EAI_NONAME EAI_NONAME -#else -#define EVUTIL_EAI_NONAME -908 -#endif -#if defined(EAI_SERVICE) && defined(EVENT__HAVE_GETADDRINFO) -#define EVUTIL_EAI_SERVICE EAI_SERVICE -#else -#define EVUTIL_EAI_SERVICE -909 -#endif -#if defined(EAI_SOCKTYPE) && defined(EVENT__HAVE_GETADDRINFO) -#define EVUTIL_EAI_SOCKTYPE EAI_SOCKTYPE -#else -#define EVUTIL_EAI_SOCKTYPE -910 -#endif -#if defined(EAI_SYSTEM) && defined(EVENT__HAVE_GETADDRINFO) -#define EVUTIL_EAI_SYSTEM EAI_SYSTEM -#else -#define EVUTIL_EAI_SYSTEM -911 -#endif - -#define EVUTIL_EAI_CANCEL -90001 - -#if defined(AI_PASSIVE) && defined(EVENT__HAVE_GETADDRINFO) -#define EVUTIL_AI_PASSIVE AI_PASSIVE -#else -#define EVUTIL_AI_PASSIVE 0x1000 -#endif -#if defined(AI_CANONNAME) && defined(EVENT__HAVE_GETADDRINFO) -#define EVUTIL_AI_CANONNAME AI_CANONNAME -#else -#define EVUTIL_AI_CANONNAME 0x2000 -#endif -#if defined(AI_NUMERICHOST) && defined(EVENT__HAVE_GETADDRINFO) -#define EVUTIL_AI_NUMERICHOST AI_NUMERICHOST -#else -#define EVUTIL_AI_NUMERICHOST 0x4000 -#endif -#if defined(AI_NUMERICSERV) && defined(EVENT__HAVE_GETADDRINFO) -#define EVUTIL_AI_NUMERICSERV AI_NUMERICSERV -#else -#define EVUTIL_AI_NUMERICSERV 0x8000 -#endif -#if defined(AI_V4MAPPED) && defined(EVENT__HAVE_GETADDRINFO) -#define EVUTIL_AI_V4MAPPED AI_V4MAPPED -#else -#define EVUTIL_AI_V4MAPPED 0x10000 -#endif -#if defined(AI_ALL) && defined(EVENT__HAVE_GETADDRINFO) -#define EVUTIL_AI_ALL AI_ALL -#else -#define EVUTIL_AI_ALL 0x20000 -#endif -#if defined(AI_ADDRCONFIG) && defined(EVENT__HAVE_GETADDRINFO) -#define EVUTIL_AI_ADDRCONFIG AI_ADDRCONFIG -#else -#define EVUTIL_AI_ADDRCONFIG 0x40000 -#endif -/**@}*/ - -struct evutil_addrinfo; -/** - * This function clones getaddrinfo for systems that don't have it. For full - * details, see RFC 3493, section 6.1. - * - * Limitations: - * - When the system has no getaddrinfo, we fall back to gethostbyname_r or - * gethostbyname, with their attendant issues. - * - The AI_V4MAPPED and AI_ALL flags are not currently implemented. - * - * For a nonblocking variant, see evdns_getaddrinfo. - */ -EVENT2_EXPORT_SYMBOL -int evutil_getaddrinfo(const char *nodename, const char *servname, - const struct evutil_addrinfo *hints_in, struct evutil_addrinfo **res); - -/** Release storage allocated by evutil_getaddrinfo or evdns_getaddrinfo. */ -EVENT2_EXPORT_SYMBOL -void evutil_freeaddrinfo(struct evutil_addrinfo *ai); - -EVENT2_EXPORT_SYMBOL -const char *evutil_gai_strerror(int err); - -/** Generate n bytes of secure pseudorandom data, and store them in buf. - * - * Current versions of Libevent use an ARC4-based random number generator, - * seeded using the platform's entropy source (/dev/urandom on Unix-like - * systems; CryptGenRandom on Windows). This is not actually as secure as it - * should be: ARC4 is a pretty lousy cipher, and the current implementation - * provides only rudimentary prediction- and backtracking-resistance. Don't - * use this for serious cryptographic applications. - */ -EVENT2_EXPORT_SYMBOL -void evutil_secure_rng_get_bytes(void *buf, size_t n); - -/** - * Seed the secure random number generator if needed, and return 0 on - * success or -1 on failure. - * - * It is okay to call this function more than once; it will still return - * 0 if the RNG has been successfully seeded and -1 if it can't be - * seeded. - * - * Ordinarily you don't need to call this function from your own code; - * Libevent will seed the RNG itself the first time it needs good random - * numbers. You only need to call it if (a) you want to double-check - * that one of the seeding methods did succeed, or (b) you plan to drop - * the capability to seed (by chrooting, or dropping capabilities, or - * whatever), and you want to make sure that seeding happens before your - * program loses the ability to do it. - */ -EVENT2_EXPORT_SYMBOL -int evutil_secure_rng_init(void); - -/** - * Set a filename to use in place of /dev/urandom for seeding the secure - * PRNG. Return 0 on success, -1 on failure. - * - * Call this function BEFORE calling any other initialization or RNG - * functions. - * - * (This string will _NOT_ be copied internally. Do not free it while any - * user of the secure RNG might be running. Don't pass anything other than a - * real /dev/...random device file here, or you might lose security.) - * - * This API is unstable, and might change in a future libevent version. - */ -EVENT2_EXPORT_SYMBOL -int evutil_secure_rng_set_urandom_device_file(char *fname); - -/** Seed the random number generator with extra random bytes. - - You should almost never need to call this function; it should be - sufficient to invoke evutil_secure_rng_init(), or let Libevent take - care of calling evutil_secure_rng_init() on its own. - - If you call this function as a _replacement_ for the regular - entropy sources, then you need to be sure that your input - contains a fairly large amount of strong entropy. Doing so is - notoriously hard: most people who try get it wrong. Watch out! - - @param dat a buffer full of a strong source of random numbers - @param datlen the number of bytes to read from datlen - */ -EVENT2_EXPORT_SYMBOL -void evutil_secure_rng_add_bytes(const char *dat, size_t datlen); - -#ifdef __cplusplus -} -#endif - -#endif /* EVENT1_EVUTIL_H_INCLUDED_ */ diff --git a/cache/include/libevent2/event2/visibility.h b/cache/include/libevent2/event2/visibility.h deleted file mode 100644 index fb16dbe..0000000 --- a/cache/include/libevent2/event2/visibility.h +++ /dev/null @@ -1,50 +0,0 @@ -/* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */ -/* - * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef EVENT2_VISIBILITY_H_INCLUDED_ -#define EVENT2_VISIBILITY_H_INCLUDED_ - -#include - -#if defined(event_EXPORTS) || defined(event_extra_EXPORTS) || defined(event_core_EXPORTS) -# if defined (__SUNPRO_C) && (__SUNPRO_C >= 0x550) -# define EVENT2_EXPORT_SYMBOL __global -# elif defined __GNUC__ -# define EVENT2_EXPORT_SYMBOL __attribute__ ((visibility("default"))) -# elif defined(_MSC_VER) -# define EVENT2_EXPORT_SYMBOL extern __declspec(dllexport) -# else -# define EVENT2_EXPORT_SYMBOL /* unknown compiler */ -# endif -#else -# if defined(EVENT__NEED_DLLIMPORT) && defined(_MSC_VER) && !defined(EVENT_BUILDING_REGRESS_TEST) -# define EVENT2_EXPORT_SYMBOL extern __declspec(dllimport) -# else -# define EVENT2_EXPORT_SYMBOL -# endif -#endif - -#endif /* EVENT2_VISIBILITY_H_INCLUDED_ */ diff --git a/cache/include/libevent2/evhttp.h b/cache/include/libevent2/evhttp.h deleted file mode 100644 index 549bc9b..0000000 --- a/cache/include/libevent2/evhttp.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2000-2007 Niels Provos - * Copyright 2007-2012 Niels Provos and Nick Mathewson - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef EVENT1_EVHTTP_H_INCLUDED_ -#define EVENT1_EVHTTP_H_INCLUDED_ - -/** @file evhttp.h - - An http implementation subsystem for Libevent. - - The header is deprecated in Libevent 2.0 and later; please - use instead. Depending on what functionality you - need, you may also want to include more of the other - headers. - */ - -#include -#include -#include -#include - -#endif /* EVENT1_EVHTTP_H_INCLUDED_ */ diff --git a/cache/include/libevent2/evrpc.h b/cache/include/libevent2/evrpc.h deleted file mode 100644 index 7e986f7..0000000 --- a/cache/include/libevent2/evrpc.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2000-2007 Niels Provos - * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef EVENT1_EVRPC_H_INCLUDED_ -#define EVENT1_EVRPC_H_INCLUDED_ - -/** @file evrpc.h - - An RPC system for Libevent. - - The header is deprecated in Libevent 2.0 and later; please - use instead. Depending on what functionality you - need, you may also want to include more of the other - headers. - */ - -#include -#include -#include -#include - -#endif /* EVENT1_EVRPC_H_INCLUDED_ */ diff --git a/cache/include/libevent2/evutil.h b/cache/include/libevent2/evutil.h deleted file mode 100644 index 12c137d..0000000 --- a/cache/include/libevent2/evutil.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef EVENT1_EVUTIL_H_INCLUDED_ -#define EVENT1_EVUTIL_H_INCLUDED_ - -/** @file evutil.h - - Utility and compatibility functions for Libevent. - - The header is deprecated in Libevent 2.0 and later; please - use instead. -*/ - -#include - -#endif /* EVENT1_EVUTIL_H_INCLUDED_ */ diff --git a/cache/include/libxml/DOCBparser.h b/cache/include/libxml/DOCBparser.h deleted file mode 100644 index 9394fa7..0000000 --- a/cache/include/libxml/DOCBparser.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Summary: old DocBook SGML parser - * Description: interface for a DocBook SGML non-verifying parser - * This code is DEPRECATED, and should not be used anymore. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __DOCB_PARSER_H__ -#define __DOCB_PARSER_H__ -#include - -#ifdef LIBXML_DOCB_ENABLED - -#include -#include - -#ifndef IN_LIBXML -#ifdef __GNUC__ -#warning "The DOCBparser module has been deprecated in libxml2-2.6.0" -#endif -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Most of the back-end structures from XML and SGML are shared. - */ -typedef xmlParserCtxt docbParserCtxt; -typedef xmlParserCtxtPtr docbParserCtxtPtr; -typedef xmlSAXHandler docbSAXHandler; -typedef xmlSAXHandlerPtr docbSAXHandlerPtr; -typedef xmlParserInput docbParserInput; -typedef xmlParserInputPtr docbParserInputPtr; -typedef xmlDocPtr docbDocPtr; - -/* - * There is only few public functions. - */ -XMLPUBFUN int XMLCALL - docbEncodeEntities(unsigned char *out, - int *outlen, - const unsigned char *in, - int *inlen, int quoteChar); - -XMLPUBFUN docbDocPtr XMLCALL - docbSAXParseDoc (xmlChar *cur, - const char *encoding, - docbSAXHandlerPtr sax, - void *userData); -XMLPUBFUN docbDocPtr XMLCALL - docbParseDoc (xmlChar *cur, - const char *encoding); -XMLPUBFUN docbDocPtr XMLCALL - docbSAXParseFile (const char *filename, - const char *encoding, - docbSAXHandlerPtr sax, - void *userData); -XMLPUBFUN docbDocPtr XMLCALL - docbParseFile (const char *filename, - const char *encoding); - -/** - * Interfaces for the Push mode. - */ -XMLPUBFUN void XMLCALL - docbFreeParserCtxt (docbParserCtxtPtr ctxt); -XMLPUBFUN docbParserCtxtPtr XMLCALL - docbCreatePushParserCtxt(docbSAXHandlerPtr sax, - void *user_data, - const char *chunk, - int size, - const char *filename, - xmlCharEncoding enc); -XMLPUBFUN int XMLCALL - docbParseChunk (docbParserCtxtPtr ctxt, - const char *chunk, - int size, - int terminate); -XMLPUBFUN docbParserCtxtPtr XMLCALL - docbCreateFileParserCtxt(const char *filename, - const char *encoding); -XMLPUBFUN int XMLCALL - docbParseDocument (docbParserCtxtPtr ctxt); - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_DOCB_ENABLED */ - -#endif /* __DOCB_PARSER_H__ */ diff --git a/cache/include/libxml/HTMLparser.h b/cache/include/libxml/HTMLparser.h deleted file mode 100644 index 551186c..0000000 --- a/cache/include/libxml/HTMLparser.h +++ /dev/null @@ -1,306 +0,0 @@ -/* - * Summary: interface for an HTML 4.0 non-verifying parser - * Description: this module implements an HTML 4.0 non-verifying parser - * with API compatible with the XML parser ones. It should - * be able to parse "real world" HTML, even if severely - * broken from a specification point of view. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __HTML_PARSER_H__ -#define __HTML_PARSER_H__ -#include -#include - -#ifdef LIBXML_HTML_ENABLED - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Most of the back-end structures from XML and HTML are shared. - */ -typedef xmlParserCtxt htmlParserCtxt; -typedef xmlParserCtxtPtr htmlParserCtxtPtr; -typedef xmlParserNodeInfo htmlParserNodeInfo; -typedef xmlSAXHandler htmlSAXHandler; -typedef xmlSAXHandlerPtr htmlSAXHandlerPtr; -typedef xmlParserInput htmlParserInput; -typedef xmlParserInputPtr htmlParserInputPtr; -typedef xmlDocPtr htmlDocPtr; -typedef xmlNodePtr htmlNodePtr; - -/* - * Internal description of an HTML element, representing HTML 4.01 - * and XHTML 1.0 (which share the same structure). - */ -typedef struct _htmlElemDesc htmlElemDesc; -typedef htmlElemDesc *htmlElemDescPtr; -struct _htmlElemDesc { - const char *name; /* The tag name */ - char startTag; /* Whether the start tag can be implied */ - char endTag; /* Whether the end tag can be implied */ - char saveEndTag; /* Whether the end tag should be saved */ - char empty; /* Is this an empty element ? */ - char depr; /* Is this a deprecated element ? */ - char dtd; /* 1: only in Loose DTD, 2: only Frameset one */ - char isinline; /* is this a block 0 or inline 1 element */ - const char *desc; /* the description */ - -/* NRK Jan.2003 - * New fields encapsulating HTML structure - * - * Bugs: - * This is a very limited representation. It fails to tell us when - * an element *requires* subelements (we only have whether they're - * allowed or not), and it doesn't tell us where CDATA and PCDATA - * are allowed. Some element relationships are not fully represented: - * these are flagged with the word MODIFIER - */ - const char** subelts; /* allowed sub-elements of this element */ - const char* defaultsubelt; /* subelement for suggested auto-repair - if necessary or NULL */ - const char** attrs_opt; /* Optional Attributes */ - const char** attrs_depr; /* Additional deprecated attributes */ - const char** attrs_req; /* Required attributes */ -}; - -/* - * Internal description of an HTML entity. - */ -typedef struct _htmlEntityDesc htmlEntityDesc; -typedef htmlEntityDesc *htmlEntityDescPtr; -struct _htmlEntityDesc { - unsigned int value; /* the UNICODE value for the character */ - const char *name; /* The entity name */ - const char *desc; /* the description */ -}; - -/* - * There is only few public functions. - */ -XMLPUBFUN const htmlElemDesc * XMLCALL - htmlTagLookup (const xmlChar *tag); -XMLPUBFUN const htmlEntityDesc * XMLCALL - htmlEntityLookup(const xmlChar *name); -XMLPUBFUN const htmlEntityDesc * XMLCALL - htmlEntityValueLookup(unsigned int value); - -XMLPUBFUN int XMLCALL - htmlIsAutoClosed(htmlDocPtr doc, - htmlNodePtr elem); -XMLPUBFUN int XMLCALL - htmlAutoCloseTag(htmlDocPtr doc, - const xmlChar *name, - htmlNodePtr elem); -XMLPUBFUN const htmlEntityDesc * XMLCALL - htmlParseEntityRef(htmlParserCtxtPtr ctxt, - const xmlChar **str); -XMLPUBFUN int XMLCALL - htmlParseCharRef(htmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - htmlParseElement(htmlParserCtxtPtr ctxt); - -XMLPUBFUN htmlParserCtxtPtr XMLCALL - htmlNewParserCtxt(void); - -XMLPUBFUN htmlParserCtxtPtr XMLCALL - htmlCreateMemoryParserCtxt(const char *buffer, - int size); - -XMLPUBFUN int XMLCALL - htmlParseDocument(htmlParserCtxtPtr ctxt); -XMLPUBFUN htmlDocPtr XMLCALL - htmlSAXParseDoc (xmlChar *cur, - const char *encoding, - htmlSAXHandlerPtr sax, - void *userData); -XMLPUBFUN htmlDocPtr XMLCALL - htmlParseDoc (xmlChar *cur, - const char *encoding); -XMLPUBFUN htmlDocPtr XMLCALL - htmlSAXParseFile(const char *filename, - const char *encoding, - htmlSAXHandlerPtr sax, - void *userData); -XMLPUBFUN htmlDocPtr XMLCALL - htmlParseFile (const char *filename, - const char *encoding); -XMLPUBFUN int XMLCALL - UTF8ToHtml (unsigned char *out, - int *outlen, - const unsigned char *in, - int *inlen); -XMLPUBFUN int XMLCALL - htmlEncodeEntities(unsigned char *out, - int *outlen, - const unsigned char *in, - int *inlen, int quoteChar); -XMLPUBFUN int XMLCALL - htmlIsScriptAttribute(const xmlChar *name); -XMLPUBFUN int XMLCALL - htmlHandleOmittedElem(int val); - -#ifdef LIBXML_PUSH_ENABLED -/** - * Interfaces for the Push mode. - */ -XMLPUBFUN htmlParserCtxtPtr XMLCALL - htmlCreatePushParserCtxt(htmlSAXHandlerPtr sax, - void *user_data, - const char *chunk, - int size, - const char *filename, - xmlCharEncoding enc); -XMLPUBFUN int XMLCALL - htmlParseChunk (htmlParserCtxtPtr ctxt, - const char *chunk, - int size, - int terminate); -#endif /* LIBXML_PUSH_ENABLED */ - -XMLPUBFUN void XMLCALL - htmlFreeParserCtxt (htmlParserCtxtPtr ctxt); - -/* - * New set of simpler/more flexible APIs - */ -/** - * xmlParserOption: - * - * This is the set of XML parser options that can be passed down - * to the xmlReadDoc() and similar calls. - */ -typedef enum { - HTML_PARSE_RECOVER = 1<<0, /* Relaxed parsing */ - HTML_PARSE_NODEFDTD = 1<<2, /* do not default a doctype if not found */ - HTML_PARSE_NOERROR = 1<<5, /* suppress error reports */ - HTML_PARSE_NOWARNING= 1<<6, /* suppress warning reports */ - HTML_PARSE_PEDANTIC = 1<<7, /* pedantic error reporting */ - HTML_PARSE_NOBLANKS = 1<<8, /* remove blank nodes */ - HTML_PARSE_NONET = 1<<11,/* Forbid network access */ - HTML_PARSE_NOIMPLIED= 1<<13,/* Do not add implied html/body... elements */ - HTML_PARSE_COMPACT = 1<<16,/* compact small text nodes */ - HTML_PARSE_IGNORE_ENC=1<<21 /* ignore internal document encoding hint */ -} htmlParserOption; - -XMLPUBFUN void XMLCALL - htmlCtxtReset (htmlParserCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - htmlCtxtUseOptions (htmlParserCtxtPtr ctxt, - int options); -XMLPUBFUN htmlDocPtr XMLCALL - htmlReadDoc (const xmlChar *cur, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN htmlDocPtr XMLCALL - htmlReadFile (const char *URL, - const char *encoding, - int options); -XMLPUBFUN htmlDocPtr XMLCALL - htmlReadMemory (const char *buffer, - int size, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN htmlDocPtr XMLCALL - htmlReadFd (int fd, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN htmlDocPtr XMLCALL - htmlReadIO (xmlInputReadCallback ioread, - xmlInputCloseCallback ioclose, - void *ioctx, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN htmlDocPtr XMLCALL - htmlCtxtReadDoc (xmlParserCtxtPtr ctxt, - const xmlChar *cur, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN htmlDocPtr XMLCALL - htmlCtxtReadFile (xmlParserCtxtPtr ctxt, - const char *filename, - const char *encoding, - int options); -XMLPUBFUN htmlDocPtr XMLCALL - htmlCtxtReadMemory (xmlParserCtxtPtr ctxt, - const char *buffer, - int size, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN htmlDocPtr XMLCALL - htmlCtxtReadFd (xmlParserCtxtPtr ctxt, - int fd, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN htmlDocPtr XMLCALL - htmlCtxtReadIO (xmlParserCtxtPtr ctxt, - xmlInputReadCallback ioread, - xmlInputCloseCallback ioclose, - void *ioctx, - const char *URL, - const char *encoding, - int options); - -/* NRK/Jan2003: further knowledge of HTML structure - */ -typedef enum { - HTML_NA = 0 , /* something we don't check at all */ - HTML_INVALID = 0x1 , - HTML_DEPRECATED = 0x2 , - HTML_VALID = 0x4 , - HTML_REQUIRED = 0xc /* VALID bit set so ( & HTML_VALID ) is TRUE */ -} htmlStatus ; - -/* Using htmlElemDesc rather than name here, to emphasise the fact - that otherwise there's a lookup overhead -*/ -XMLPUBFUN htmlStatus XMLCALL htmlAttrAllowed(const htmlElemDesc*, const xmlChar*, int) ; -XMLPUBFUN int XMLCALL htmlElementAllowedHere(const htmlElemDesc*, const xmlChar*) ; -XMLPUBFUN htmlStatus XMLCALL htmlElementStatusHere(const htmlElemDesc*, const htmlElemDesc*) ; -XMLPUBFUN htmlStatus XMLCALL htmlNodeStatus(const htmlNodePtr, int) ; -/** - * htmlDefaultSubelement: - * @elt: HTML element - * - * Returns the default subelement for this element - */ -#define htmlDefaultSubelement(elt) elt->defaultsubelt -/** - * htmlElementAllowedHereDesc: - * @parent: HTML parent element - * @elt: HTML element - * - * Checks whether an HTML element description may be a - * direct child of the specified element. - * - * Returns 1 if allowed; 0 otherwise. - */ -#define htmlElementAllowedHereDesc(parent,elt) \ - htmlElementAllowedHere((parent), (elt)->name) -/** - * htmlRequiredAttrs: - * @elt: HTML element - * - * Returns the attributes required for the specified element. - */ -#define htmlRequiredAttrs(elt) (elt)->attrs_req - - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_HTML_ENABLED */ -#endif /* __HTML_PARSER_H__ */ diff --git a/cache/include/libxml/HTMLtree.h b/cache/include/libxml/HTMLtree.h deleted file mode 100644 index c0e1103..0000000 --- a/cache/include/libxml/HTMLtree.h +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Summary: specific APIs to process HTML tree, especially serialization - * Description: this module implements a few function needed to process - * tree in an HTML specific way. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __HTML_TREE_H__ -#define __HTML_TREE_H__ - -#include -#include -#include -#include - -#ifdef LIBXML_HTML_ENABLED - -#ifdef __cplusplus -extern "C" { -#endif - - -/** - * HTML_TEXT_NODE: - * - * Macro. A text node in a HTML document is really implemented - * the same way as a text node in an XML document. - */ -#define HTML_TEXT_NODE XML_TEXT_NODE -/** - * HTML_ENTITY_REF_NODE: - * - * Macro. An entity reference in a HTML document is really implemented - * the same way as an entity reference in an XML document. - */ -#define HTML_ENTITY_REF_NODE XML_ENTITY_REF_NODE -/** - * HTML_COMMENT_NODE: - * - * Macro. A comment in a HTML document is really implemented - * the same way as a comment in an XML document. - */ -#define HTML_COMMENT_NODE XML_COMMENT_NODE -/** - * HTML_PRESERVE_NODE: - * - * Macro. A preserved node in a HTML document is really implemented - * the same way as a CDATA section in an XML document. - */ -#define HTML_PRESERVE_NODE XML_CDATA_SECTION_NODE -/** - * HTML_PI_NODE: - * - * Macro. A processing instruction in a HTML document is really implemented - * the same way as a processing instruction in an XML document. - */ -#define HTML_PI_NODE XML_PI_NODE - -XMLPUBFUN htmlDocPtr XMLCALL - htmlNewDoc (const xmlChar *URI, - const xmlChar *ExternalID); -XMLPUBFUN htmlDocPtr XMLCALL - htmlNewDocNoDtD (const xmlChar *URI, - const xmlChar *ExternalID); -XMLPUBFUN const xmlChar * XMLCALL - htmlGetMetaEncoding (htmlDocPtr doc); -XMLPUBFUN int XMLCALL - htmlSetMetaEncoding (htmlDocPtr doc, - const xmlChar *encoding); -#ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL - htmlDocDumpMemory (xmlDocPtr cur, - xmlChar **mem, - int *size); -XMLPUBFUN void XMLCALL - htmlDocDumpMemoryFormat (xmlDocPtr cur, - xmlChar **mem, - int *size, - int format); -XMLPUBFUN int XMLCALL - htmlDocDump (FILE *f, - xmlDocPtr cur); -XMLPUBFUN int XMLCALL - htmlSaveFile (const char *filename, - xmlDocPtr cur); -XMLPUBFUN int XMLCALL - htmlNodeDump (xmlBufferPtr buf, - xmlDocPtr doc, - xmlNodePtr cur); -XMLPUBFUN void XMLCALL - htmlNodeDumpFile (FILE *out, - xmlDocPtr doc, - xmlNodePtr cur); -XMLPUBFUN int XMLCALL - htmlNodeDumpFileFormat (FILE *out, - xmlDocPtr doc, - xmlNodePtr cur, - const char *encoding, - int format); -XMLPUBFUN int XMLCALL - htmlSaveFileEnc (const char *filename, - xmlDocPtr cur, - const char *encoding); -XMLPUBFUN int XMLCALL - htmlSaveFileFormat (const char *filename, - xmlDocPtr cur, - const char *encoding, - int format); - -XMLPUBFUN void XMLCALL - htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, - xmlDocPtr doc, - xmlNodePtr cur, - const char *encoding, - int format); -XMLPUBFUN void XMLCALL - htmlDocContentDumpOutput(xmlOutputBufferPtr buf, - xmlDocPtr cur, - const char *encoding); -XMLPUBFUN void XMLCALL - htmlDocContentDumpFormatOutput(xmlOutputBufferPtr buf, - xmlDocPtr cur, - const char *encoding, - int format); -XMLPUBFUN void XMLCALL - htmlNodeDumpOutput (xmlOutputBufferPtr buf, - xmlDocPtr doc, - xmlNodePtr cur, - const char *encoding); - -#endif /* LIBXML_OUTPUT_ENABLED */ - -XMLPUBFUN int XMLCALL - htmlIsBooleanAttr (const xmlChar *name); - - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_HTML_ENABLED */ - -#endif /* __HTML_TREE_H__ */ - diff --git a/cache/include/libxml/SAX.h b/cache/include/libxml/SAX.h deleted file mode 100644 index 20093ce..0000000 --- a/cache/include/libxml/SAX.h +++ /dev/null @@ -1,173 +0,0 @@ -/* - * Summary: Old SAX version 1 handler, deprecated - * Description: DEPRECATED set of SAX version 1 interfaces used to - * build the DOM tree. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - - -#ifndef __XML_SAX_H__ -#define __XML_SAX_H__ - -#include -#include -#include -#include -#include - -#ifdef LIBXML_LEGACY_ENABLED - -#ifdef __cplusplus -extern "C" { -#endif -XMLPUBFUN const xmlChar * XMLCALL - getPublicId (void *ctx); -XMLPUBFUN const xmlChar * XMLCALL - getSystemId (void *ctx); -XMLPUBFUN void XMLCALL - setDocumentLocator (void *ctx, - xmlSAXLocatorPtr loc); - -XMLPUBFUN int XMLCALL - getLineNumber (void *ctx); -XMLPUBFUN int XMLCALL - getColumnNumber (void *ctx); - -XMLPUBFUN int XMLCALL - isStandalone (void *ctx); -XMLPUBFUN int XMLCALL - hasInternalSubset (void *ctx); -XMLPUBFUN int XMLCALL - hasExternalSubset (void *ctx); - -XMLPUBFUN void XMLCALL - internalSubset (void *ctx, - const xmlChar *name, - const xmlChar *ExternalID, - const xmlChar *SystemID); -XMLPUBFUN void XMLCALL - externalSubset (void *ctx, - const xmlChar *name, - const xmlChar *ExternalID, - const xmlChar *SystemID); -XMLPUBFUN xmlEntityPtr XMLCALL - getEntity (void *ctx, - const xmlChar *name); -XMLPUBFUN xmlEntityPtr XMLCALL - getParameterEntity (void *ctx, - const xmlChar *name); -XMLPUBFUN xmlParserInputPtr XMLCALL - resolveEntity (void *ctx, - const xmlChar *publicId, - const xmlChar *systemId); - -XMLPUBFUN void XMLCALL - entityDecl (void *ctx, - const xmlChar *name, - int type, - const xmlChar *publicId, - const xmlChar *systemId, - xmlChar *content); -XMLPUBFUN void XMLCALL - attributeDecl (void *ctx, - const xmlChar *elem, - const xmlChar *fullname, - int type, - int def, - const xmlChar *defaultValue, - xmlEnumerationPtr tree); -XMLPUBFUN void XMLCALL - elementDecl (void *ctx, - const xmlChar *name, - int type, - xmlElementContentPtr content); -XMLPUBFUN void XMLCALL - notationDecl (void *ctx, - const xmlChar *name, - const xmlChar *publicId, - const xmlChar *systemId); -XMLPUBFUN void XMLCALL - unparsedEntityDecl (void *ctx, - const xmlChar *name, - const xmlChar *publicId, - const xmlChar *systemId, - const xmlChar *notationName); - -XMLPUBFUN void XMLCALL - startDocument (void *ctx); -XMLPUBFUN void XMLCALL - endDocument (void *ctx); -XMLPUBFUN void XMLCALL - attribute (void *ctx, - const xmlChar *fullname, - const xmlChar *value); -XMLPUBFUN void XMLCALL - startElement (void *ctx, - const xmlChar *fullname, - const xmlChar **atts); -XMLPUBFUN void XMLCALL - endElement (void *ctx, - const xmlChar *name); -XMLPUBFUN void XMLCALL - reference (void *ctx, - const xmlChar *name); -XMLPUBFUN void XMLCALL - characters (void *ctx, - const xmlChar *ch, - int len); -XMLPUBFUN void XMLCALL - ignorableWhitespace (void *ctx, - const xmlChar *ch, - int len); -XMLPUBFUN void XMLCALL - processingInstruction (void *ctx, - const xmlChar *target, - const xmlChar *data); -XMLPUBFUN void XMLCALL - globalNamespace (void *ctx, - const xmlChar *href, - const xmlChar *prefix); -XMLPUBFUN void XMLCALL - setNamespace (void *ctx, - const xmlChar *name); -XMLPUBFUN xmlNsPtr XMLCALL - getNamespace (void *ctx); -XMLPUBFUN int XMLCALL - checkNamespace (void *ctx, - xmlChar *nameSpace); -XMLPUBFUN void XMLCALL - namespaceDecl (void *ctx, - const xmlChar *href, - const xmlChar *prefix); -XMLPUBFUN void XMLCALL - comment (void *ctx, - const xmlChar *value); -XMLPUBFUN void XMLCALL - cdataBlock (void *ctx, - const xmlChar *value, - int len); - -#ifdef LIBXML_SAX1_ENABLED -XMLPUBFUN void XMLCALL - initxmlDefaultSAXHandler (xmlSAXHandlerV1 *hdlr, - int warning); -#ifdef LIBXML_HTML_ENABLED -XMLPUBFUN void XMLCALL - inithtmlDefaultSAXHandler (xmlSAXHandlerV1 *hdlr); -#endif -#ifdef LIBXML_DOCB_ENABLED -XMLPUBFUN void XMLCALL - initdocbDefaultSAXHandler (xmlSAXHandlerV1 *hdlr); -#endif -#endif /* LIBXML_SAX1_ENABLED */ - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_LEGACY_ENABLED */ - -#endif /* __XML_SAX_H__ */ diff --git a/cache/include/libxml/SAX2.h b/cache/include/libxml/SAX2.h deleted file mode 100644 index a55212e..0000000 --- a/cache/include/libxml/SAX2.h +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Summary: SAX2 parser interface used to build the DOM tree - * Description: those are the default SAX2 interfaces used by - * the library when building DOM tree. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - - -#ifndef __XML_SAX2_H__ -#define __XML_SAX2_H__ - -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif -XMLPUBFUN const xmlChar * XMLCALL - xmlSAX2GetPublicId (void *ctx); -XMLPUBFUN const xmlChar * XMLCALL - xmlSAX2GetSystemId (void *ctx); -XMLPUBFUN void XMLCALL - xmlSAX2SetDocumentLocator (void *ctx, - xmlSAXLocatorPtr loc); - -XMLPUBFUN int XMLCALL - xmlSAX2GetLineNumber (void *ctx); -XMLPUBFUN int XMLCALL - xmlSAX2GetColumnNumber (void *ctx); - -XMLPUBFUN int XMLCALL - xmlSAX2IsStandalone (void *ctx); -XMLPUBFUN int XMLCALL - xmlSAX2HasInternalSubset (void *ctx); -XMLPUBFUN int XMLCALL - xmlSAX2HasExternalSubset (void *ctx); - -XMLPUBFUN void XMLCALL - xmlSAX2InternalSubset (void *ctx, - const xmlChar *name, - const xmlChar *ExternalID, - const xmlChar *SystemID); -XMLPUBFUN void XMLCALL - xmlSAX2ExternalSubset (void *ctx, - const xmlChar *name, - const xmlChar *ExternalID, - const xmlChar *SystemID); -XMLPUBFUN xmlEntityPtr XMLCALL - xmlSAX2GetEntity (void *ctx, - const xmlChar *name); -XMLPUBFUN xmlEntityPtr XMLCALL - xmlSAX2GetParameterEntity (void *ctx, - const xmlChar *name); -XMLPUBFUN xmlParserInputPtr XMLCALL - xmlSAX2ResolveEntity (void *ctx, - const xmlChar *publicId, - const xmlChar *systemId); - -XMLPUBFUN void XMLCALL - xmlSAX2EntityDecl (void *ctx, - const xmlChar *name, - int type, - const xmlChar *publicId, - const xmlChar *systemId, - xmlChar *content); -XMLPUBFUN void XMLCALL - xmlSAX2AttributeDecl (void *ctx, - const xmlChar *elem, - const xmlChar *fullname, - int type, - int def, - const xmlChar *defaultValue, - xmlEnumerationPtr tree); -XMLPUBFUN void XMLCALL - xmlSAX2ElementDecl (void *ctx, - const xmlChar *name, - int type, - xmlElementContentPtr content); -XMLPUBFUN void XMLCALL - xmlSAX2NotationDecl (void *ctx, - const xmlChar *name, - const xmlChar *publicId, - const xmlChar *systemId); -XMLPUBFUN void XMLCALL - xmlSAX2UnparsedEntityDecl (void *ctx, - const xmlChar *name, - const xmlChar *publicId, - const xmlChar *systemId, - const xmlChar *notationName); - -XMLPUBFUN void XMLCALL - xmlSAX2StartDocument (void *ctx); -XMLPUBFUN void XMLCALL - xmlSAX2EndDocument (void *ctx); -#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || \ - defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) || \ - defined(LIBXML_LEGACY_ENABLED) -XMLPUBFUN void XMLCALL - xmlSAX2StartElement (void *ctx, - const xmlChar *fullname, - const xmlChar **atts); -XMLPUBFUN void XMLCALL - xmlSAX2EndElement (void *ctx, - const xmlChar *name); -#endif /* LIBXML_SAX1_ENABLED or LIBXML_HTML_ENABLED or LIBXML_LEGACY_ENABLED */ -XMLPUBFUN void XMLCALL - xmlSAX2StartElementNs (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); -XMLPUBFUN void XMLCALL - xmlSAX2EndElementNs (void *ctx, - const xmlChar *localname, - const xmlChar *prefix, - const xmlChar *URI); -XMLPUBFUN void XMLCALL - xmlSAX2Reference (void *ctx, - const xmlChar *name); -XMLPUBFUN void XMLCALL - xmlSAX2Characters (void *ctx, - const xmlChar *ch, - int len); -XMLPUBFUN void XMLCALL - xmlSAX2IgnorableWhitespace (void *ctx, - const xmlChar *ch, - int len); -XMLPUBFUN void XMLCALL - xmlSAX2ProcessingInstruction (void *ctx, - const xmlChar *target, - const xmlChar *data); -XMLPUBFUN void XMLCALL - xmlSAX2Comment (void *ctx, - const xmlChar *value); -XMLPUBFUN void XMLCALL - xmlSAX2CDataBlock (void *ctx, - const xmlChar *value, - int len); - -#ifdef LIBXML_SAX1_ENABLED -XMLPUBFUN int XMLCALL - xmlSAXDefaultVersion (int version); -#endif /* LIBXML_SAX1_ENABLED */ - -XMLPUBFUN int XMLCALL - xmlSAXVersion (xmlSAXHandler *hdlr, - int version); -XMLPUBFUN void XMLCALL - xmlSAX2InitDefaultSAXHandler (xmlSAXHandler *hdlr, - int warning); -#ifdef LIBXML_HTML_ENABLED -XMLPUBFUN void XMLCALL - xmlSAX2InitHtmlDefaultSAXHandler(xmlSAXHandler *hdlr); -XMLPUBFUN void XMLCALL - htmlDefaultSAXHandlerInit (void); -#endif -#ifdef LIBXML_DOCB_ENABLED -XMLPUBFUN void XMLCALL - xmlSAX2InitDocbDefaultSAXHandler(xmlSAXHandler *hdlr); -XMLPUBFUN void XMLCALL - docbDefaultSAXHandlerInit (void); -#endif -XMLPUBFUN void XMLCALL - xmlDefaultSAXHandlerInit (void); -#ifdef __cplusplus -} -#endif -#endif /* __XML_SAX2_H__ */ diff --git a/cache/include/libxml/c14n.h b/cache/include/libxml/c14n.h deleted file mode 100644 index b8971d9..0000000 --- a/cache/include/libxml/c14n.h +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Summary: Provide Canonical XML and Exclusive XML Canonicalization - * Description: the c14n modules provides a - * - * "Canonical XML" implementation - * http://www.w3.org/TR/xml-c14n - * - * and an - * - * "Exclusive XML Canonicalization" implementation - * http://www.w3.org/TR/xml-exc-c14n - - * Copy: See Copyright for the status of this software. - * - * Author: Aleksey Sanin - */ -#ifndef __XML_C14N_H__ -#define __XML_C14N_H__ -#ifdef LIBXML_C14N_ENABLED -#ifdef LIBXML_OUTPUT_ENABLED - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#include -#include -#include - -/* - * XML Canonicazation - * http://www.w3.org/TR/xml-c14n - * - * Exclusive XML Canonicazation - * http://www.w3.org/TR/xml-exc-c14n - * - * Canonical form of an XML document could be created if and only if - * a) default attributes (if any) are added to all nodes - * b) all character and parsed entity references are resolved - * In order to achive this in libxml2 the document MUST be loaded with - * following global setings: - * - * xmlLoadExtDtdDefaultValue = XML_DETECT_IDS | XML_COMPLETE_ATTRS; - * xmlSubstituteEntitiesDefault(1); - * - * or corresponding parser context setting: - * xmlParserCtxtPtr ctxt; - * - * ... - * ctxt->loadsubset = XML_DETECT_IDS | XML_COMPLETE_ATTRS; - * ctxt->replaceEntities = 1; - * ... - */ - -/* - * xmlC14NMode: - * - * Predefined values for C14N modes - * - */ -typedef enum { - XML_C14N_1_0 = 0, /* Origianal C14N 1.0 spec */ - XML_C14N_EXCLUSIVE_1_0 = 1, /* Exclusive C14N 1.0 spec */ - XML_C14N_1_1 = 2 /* C14N 1.1 spec */ -} xmlC14NMode; - -XMLPUBFUN int XMLCALL - xmlC14NDocSaveTo (xmlDocPtr doc, - xmlNodeSetPtr nodes, - int mode, /* a xmlC14NMode */ - xmlChar **inclusive_ns_prefixes, - int with_comments, - xmlOutputBufferPtr buf); - -XMLPUBFUN int XMLCALL - xmlC14NDocDumpMemory (xmlDocPtr doc, - xmlNodeSetPtr nodes, - int mode, /* a xmlC14NMode */ - xmlChar **inclusive_ns_prefixes, - int with_comments, - xmlChar **doc_txt_ptr); - -XMLPUBFUN int XMLCALL - xmlC14NDocSave (xmlDocPtr doc, - xmlNodeSetPtr nodes, - int mode, /* a xmlC14NMode */ - xmlChar **inclusive_ns_prefixes, - int with_comments, - const char* filename, - int compression); - - -/** - * This is the core C14N function - */ -/** - * xmlC14NIsVisibleCallback: - * @user_data: user data - * @node: the curent node - * @parent: the parent node - * - * Signature for a C14N callback on visible nodes - * - * Returns 1 if the node should be included - */ -typedef int (*xmlC14NIsVisibleCallback) (void* user_data, - xmlNodePtr node, - xmlNodePtr parent); - -XMLPUBFUN int XMLCALL - xmlC14NExecute (xmlDocPtr doc, - xmlC14NIsVisibleCallback is_visible_callback, - void* user_data, - int mode, /* a xmlC14NMode */ - xmlChar **inclusive_ns_prefixes, - int with_comments, - xmlOutputBufferPtr buf); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* LIBXML_OUTPUT_ENABLED */ -#endif /* LIBXML_C14N_ENABLED */ -#endif /* __XML_C14N_H__ */ - diff --git a/cache/include/libxml/catalog.h b/cache/include/libxml/catalog.h deleted file mode 100644 index 5a13f51..0000000 --- a/cache/include/libxml/catalog.h +++ /dev/null @@ -1,182 +0,0 @@ -/** - * Summary: interfaces to the Catalog handling system - * Description: the catalog module implements the support for - * XML Catalogs and SGML catalogs - * - * SGML Open Technical Resolution TR9401:1997. - * http://www.jclark.com/sp/catalog.htm - * - * XML Catalogs Working Draft 06 August 2001 - * http://www.oasis-open.org/committees/entity/spec-2001-08-06.html - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_CATALOG_H__ -#define __XML_CATALOG_H__ - -#include - -#include -#include -#include - -#ifdef LIBXML_CATALOG_ENABLED - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * XML_CATALOGS_NAMESPACE: - * - * The namespace for the XML Catalogs elements. - */ -#define XML_CATALOGS_NAMESPACE \ - (const xmlChar *) "urn:oasis:names:tc:entity:xmlns:xml:catalog" -/** - * XML_CATALOG_PI: - * - * The specific XML Catalog Processing Instuction name. - */ -#define XML_CATALOG_PI \ - (const xmlChar *) "oasis-xml-catalog" - -/* - * The API is voluntarily limited to general cataloging. - */ -typedef enum { - XML_CATA_PREFER_NONE = 0, - XML_CATA_PREFER_PUBLIC = 1, - XML_CATA_PREFER_SYSTEM -} xmlCatalogPrefer; - -typedef enum { - XML_CATA_ALLOW_NONE = 0, - XML_CATA_ALLOW_GLOBAL = 1, - XML_CATA_ALLOW_DOCUMENT = 2, - XML_CATA_ALLOW_ALL = 3 -} xmlCatalogAllow; - -typedef struct _xmlCatalog xmlCatalog; -typedef xmlCatalog *xmlCatalogPtr; - -/* - * Operations on a given catalog. - */ -XMLPUBFUN xmlCatalogPtr XMLCALL - xmlNewCatalog (int sgml); -XMLPUBFUN xmlCatalogPtr XMLCALL - xmlLoadACatalog (const char *filename); -XMLPUBFUN xmlCatalogPtr XMLCALL - xmlLoadSGMLSuperCatalog (const char *filename); -XMLPUBFUN int XMLCALL - xmlConvertSGMLCatalog (xmlCatalogPtr catal); -XMLPUBFUN int XMLCALL - xmlACatalogAdd (xmlCatalogPtr catal, - const xmlChar *type, - const xmlChar *orig, - const xmlChar *replace); -XMLPUBFUN int XMLCALL - xmlACatalogRemove (xmlCatalogPtr catal, - const xmlChar *value); -XMLPUBFUN xmlChar * XMLCALL - xmlACatalogResolve (xmlCatalogPtr catal, - const xmlChar *pubID, - const xmlChar *sysID); -XMLPUBFUN xmlChar * XMLCALL - xmlACatalogResolveSystem(xmlCatalogPtr catal, - const xmlChar *sysID); -XMLPUBFUN xmlChar * XMLCALL - xmlACatalogResolvePublic(xmlCatalogPtr catal, - const xmlChar *pubID); -XMLPUBFUN xmlChar * XMLCALL - xmlACatalogResolveURI (xmlCatalogPtr catal, - const xmlChar *URI); -#ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL - xmlACatalogDump (xmlCatalogPtr catal, - FILE *out); -#endif /* LIBXML_OUTPUT_ENABLED */ -XMLPUBFUN void XMLCALL - xmlFreeCatalog (xmlCatalogPtr catal); -XMLPUBFUN int XMLCALL - xmlCatalogIsEmpty (xmlCatalogPtr catal); - -/* - * Global operations. - */ -XMLPUBFUN void XMLCALL - xmlInitializeCatalog (void); -XMLPUBFUN int XMLCALL - xmlLoadCatalog (const char *filename); -XMLPUBFUN void XMLCALL - xmlLoadCatalogs (const char *paths); -XMLPUBFUN void XMLCALL - xmlCatalogCleanup (void); -#ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL - xmlCatalogDump (FILE *out); -#endif /* LIBXML_OUTPUT_ENABLED */ -XMLPUBFUN xmlChar * XMLCALL - xmlCatalogResolve (const xmlChar *pubID, - const xmlChar *sysID); -XMLPUBFUN xmlChar * XMLCALL - xmlCatalogResolveSystem (const xmlChar *sysID); -XMLPUBFUN xmlChar * XMLCALL - xmlCatalogResolvePublic (const xmlChar *pubID); -XMLPUBFUN xmlChar * XMLCALL - xmlCatalogResolveURI (const xmlChar *URI); -XMLPUBFUN int XMLCALL - xmlCatalogAdd (const xmlChar *type, - const xmlChar *orig, - const xmlChar *replace); -XMLPUBFUN int XMLCALL - xmlCatalogRemove (const xmlChar *value); -XMLPUBFUN xmlDocPtr XMLCALL - xmlParseCatalogFile (const char *filename); -XMLPUBFUN int XMLCALL - xmlCatalogConvert (void); - -/* - * Strictly minimal interfaces for per-document catalogs used - * by the parser. - */ -XMLPUBFUN void XMLCALL - xmlCatalogFreeLocal (void *catalogs); -XMLPUBFUN void * XMLCALL - xmlCatalogAddLocal (void *catalogs, - const xmlChar *URL); -XMLPUBFUN xmlChar * XMLCALL - xmlCatalogLocalResolve (void *catalogs, - const xmlChar *pubID, - const xmlChar *sysID); -XMLPUBFUN xmlChar * XMLCALL - xmlCatalogLocalResolveURI(void *catalogs, - const xmlChar *URI); -/* - * Preference settings. - */ -XMLPUBFUN int XMLCALL - xmlCatalogSetDebug (int level); -XMLPUBFUN xmlCatalogPrefer XMLCALL - xmlCatalogSetDefaultPrefer(xmlCatalogPrefer prefer); -XMLPUBFUN void XMLCALL - xmlCatalogSetDefaults (xmlCatalogAllow allow); -XMLPUBFUN xmlCatalogAllow XMLCALL - xmlCatalogGetDefaults (void); - - -/* DEPRECATED interfaces */ -XMLPUBFUN const xmlChar * XMLCALL - xmlCatalogGetSystem (const xmlChar *sysID); -XMLPUBFUN const xmlChar * XMLCALL - xmlCatalogGetPublic (const xmlChar *pubID); - -#ifdef __cplusplus -} -#endif -#endif /* LIBXML_CATALOG_ENABLED */ -#endif /* __XML_CATALOG_H__ */ diff --git a/cache/include/libxml/chvalid.h b/cache/include/libxml/chvalid.h deleted file mode 100644 index fb43016..0000000 --- a/cache/include/libxml/chvalid.h +++ /dev/null @@ -1,230 +0,0 @@ -/* - * Summary: Unicode character range checking - * Description: this module exports interfaces for the character - * range validation APIs - * - * This file is automatically generated from the cvs source - * definition files using the genChRanges.py Python script - * - * Generation date: Mon Mar 27 11:09:48 2006 - * Sources: chvalid.def - * Author: William Brack - */ - -#ifndef __XML_CHVALID_H__ -#define __XML_CHVALID_H__ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Define our typedefs and structures - * - */ -typedef struct _xmlChSRange xmlChSRange; -typedef xmlChSRange *xmlChSRangePtr; -struct _xmlChSRange { - unsigned short low; - unsigned short high; -}; - -typedef struct _xmlChLRange xmlChLRange; -typedef xmlChLRange *xmlChLRangePtr; -struct _xmlChLRange { - unsigned int low; - unsigned int high; -}; - -typedef struct _xmlChRangeGroup xmlChRangeGroup; -typedef xmlChRangeGroup *xmlChRangeGroupPtr; -struct _xmlChRangeGroup { - int nbShortRange; - int nbLongRange; - const xmlChSRange *shortRange; /* points to an array of ranges */ - const xmlChLRange *longRange; -}; - -/** - * Range checking routine - */ -XMLPUBFUN int XMLCALL - xmlCharInRange(unsigned int val, const xmlChRangeGroup *group); - - -/** - * xmlIsBaseChar_ch: - * @c: char to validate - * - * Automatically generated by genChRanges.py - */ -#define xmlIsBaseChar_ch(c) (((0x41 <= (c)) && ((c) <= 0x5a)) || \ - ((0x61 <= (c)) && ((c) <= 0x7a)) || \ - ((0xc0 <= (c)) && ((c) <= 0xd6)) || \ - ((0xd8 <= (c)) && ((c) <= 0xf6)) || \ - (0xf8 <= (c))) - -/** - * xmlIsBaseCharQ: - * @c: char to validate - * - * Automatically generated by genChRanges.py - */ -#define xmlIsBaseCharQ(c) (((c) < 0x100) ? \ - xmlIsBaseChar_ch((c)) : \ - xmlCharInRange((c), &xmlIsBaseCharGroup)) - -XMLPUBVAR const xmlChRangeGroup xmlIsBaseCharGroup; - -/** - * xmlIsBlank_ch: - * @c: char to validate - * - * Automatically generated by genChRanges.py - */ -#define xmlIsBlank_ch(c) (((c) == 0x20) || \ - ((0x9 <= (c)) && ((c) <= 0xa)) || \ - ((c) == 0xd)) - -/** - * xmlIsBlankQ: - * @c: char to validate - * - * Automatically generated by genChRanges.py - */ -#define xmlIsBlankQ(c) (((c) < 0x100) ? \ - xmlIsBlank_ch((c)) : 0) - - -/** - * xmlIsChar_ch: - * @c: char to validate - * - * Automatically generated by genChRanges.py - */ -#define xmlIsChar_ch(c) (((0x9 <= (c)) && ((c) <= 0xa)) || \ - ((c) == 0xd) || \ - (0x20 <= (c))) - -/** - * xmlIsCharQ: - * @c: char to validate - * - * Automatically generated by genChRanges.py - */ -#define xmlIsCharQ(c) (((c) < 0x100) ? \ - xmlIsChar_ch((c)) :\ - (((0x100 <= (c)) && ((c) <= 0xd7ff)) || \ - ((0xe000 <= (c)) && ((c) <= 0xfffd)) || \ - ((0x10000 <= (c)) && ((c) <= 0x10ffff)))) - -XMLPUBVAR const xmlChRangeGroup xmlIsCharGroup; - -/** - * xmlIsCombiningQ: - * @c: char to validate - * - * Automatically generated by genChRanges.py - */ -#define xmlIsCombiningQ(c) (((c) < 0x100) ? \ - 0 : \ - xmlCharInRange((c), &xmlIsCombiningGroup)) - -XMLPUBVAR const xmlChRangeGroup xmlIsCombiningGroup; - -/** - * xmlIsDigit_ch: - * @c: char to validate - * - * Automatically generated by genChRanges.py - */ -#define xmlIsDigit_ch(c) (((0x30 <= (c)) && ((c) <= 0x39))) - -/** - * xmlIsDigitQ: - * @c: char to validate - * - * Automatically generated by genChRanges.py - */ -#define xmlIsDigitQ(c) (((c) < 0x100) ? \ - xmlIsDigit_ch((c)) : \ - xmlCharInRange((c), &xmlIsDigitGroup)) - -XMLPUBVAR const xmlChRangeGroup xmlIsDigitGroup; - -/** - * xmlIsExtender_ch: - * @c: char to validate - * - * Automatically generated by genChRanges.py - */ -#define xmlIsExtender_ch(c) (((c) == 0xb7)) - -/** - * xmlIsExtenderQ: - * @c: char to validate - * - * Automatically generated by genChRanges.py - */ -#define xmlIsExtenderQ(c) (((c) < 0x100) ? \ - xmlIsExtender_ch((c)) : \ - xmlCharInRange((c), &xmlIsExtenderGroup)) - -XMLPUBVAR const xmlChRangeGroup xmlIsExtenderGroup; - -/** - * xmlIsIdeographicQ: - * @c: char to validate - * - * Automatically generated by genChRanges.py - */ -#define xmlIsIdeographicQ(c) (((c) < 0x100) ? \ - 0 :\ - (((0x4e00 <= (c)) && ((c) <= 0x9fa5)) || \ - ((c) == 0x3007) || \ - ((0x3021 <= (c)) && ((c) <= 0x3029)))) - -XMLPUBVAR const xmlChRangeGroup xmlIsIdeographicGroup; -XMLPUBVAR const unsigned char xmlIsPubidChar_tab[256]; - -/** - * xmlIsPubidChar_ch: - * @c: char to validate - * - * Automatically generated by genChRanges.py - */ -#define xmlIsPubidChar_ch(c) (xmlIsPubidChar_tab[(c)]) - -/** - * xmlIsPubidCharQ: - * @c: char to validate - * - * Automatically generated by genChRanges.py - */ -#define xmlIsPubidCharQ(c) (((c) < 0x100) ? \ - xmlIsPubidChar_ch((c)) : 0) - -XMLPUBFUN int XMLCALL - xmlIsBaseChar(unsigned int ch); -XMLPUBFUN int XMLCALL - xmlIsBlank(unsigned int ch); -XMLPUBFUN int XMLCALL - xmlIsChar(unsigned int ch); -XMLPUBFUN int XMLCALL - xmlIsCombining(unsigned int ch); -XMLPUBFUN int XMLCALL - xmlIsDigit(unsigned int ch); -XMLPUBFUN int XMLCALL - xmlIsExtender(unsigned int ch); -XMLPUBFUN int XMLCALL - xmlIsIdeographic(unsigned int ch); -XMLPUBFUN int XMLCALL - xmlIsPubidChar(unsigned int ch); - -#ifdef __cplusplus -} -#endif -#endif /* __XML_CHVALID_H__ */ diff --git a/cache/include/libxml/debugXML.h b/cache/include/libxml/debugXML.h deleted file mode 100644 index 5b3be13..0000000 --- a/cache/include/libxml/debugXML.h +++ /dev/null @@ -1,217 +0,0 @@ -/* - * Summary: Tree debugging APIs - * Description: Interfaces to a set of routines used for debugging the tree - * produced by the XML parser. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __DEBUG_XML__ -#define __DEBUG_XML__ -#include -#include -#include - -#ifdef LIBXML_DEBUG_ENABLED - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * The standard Dump routines. - */ -XMLPUBFUN void XMLCALL - xmlDebugDumpString (FILE *output, - const xmlChar *str); -XMLPUBFUN void XMLCALL - xmlDebugDumpAttr (FILE *output, - xmlAttrPtr attr, - int depth); -XMLPUBFUN void XMLCALL - xmlDebugDumpAttrList (FILE *output, - xmlAttrPtr attr, - int depth); -XMLPUBFUN void XMLCALL - xmlDebugDumpOneNode (FILE *output, - xmlNodePtr node, - int depth); -XMLPUBFUN void XMLCALL - xmlDebugDumpNode (FILE *output, - xmlNodePtr node, - int depth); -XMLPUBFUN void XMLCALL - xmlDebugDumpNodeList (FILE *output, - xmlNodePtr node, - int depth); -XMLPUBFUN void XMLCALL - xmlDebugDumpDocumentHead(FILE *output, - xmlDocPtr doc); -XMLPUBFUN void XMLCALL - xmlDebugDumpDocument (FILE *output, - xmlDocPtr doc); -XMLPUBFUN void XMLCALL - xmlDebugDumpDTD (FILE *output, - xmlDtdPtr dtd); -XMLPUBFUN void XMLCALL - xmlDebugDumpEntities (FILE *output, - xmlDocPtr doc); - -/**************************************************************** - * * - * Checking routines * - * * - ****************************************************************/ - -XMLPUBFUN int XMLCALL - xmlDebugCheckDocument (FILE * output, - xmlDocPtr doc); - -/**************************************************************** - * * - * XML shell helpers * - * * - ****************************************************************/ - -XMLPUBFUN void XMLCALL - xmlLsOneNode (FILE *output, xmlNodePtr node); -XMLPUBFUN int XMLCALL - xmlLsCountNode (xmlNodePtr node); - -XMLPUBFUN const char * XMLCALL - xmlBoolToText (int boolval); - -/**************************************************************** - * * - * The XML shell related structures and functions * - * * - ****************************************************************/ - -#ifdef LIBXML_XPATH_ENABLED -/** - * xmlShellReadlineFunc: - * @prompt: a string prompt - * - * This is a generic signature for the XML shell input function. - * - * Returns a string which will be freed by the Shell. - */ -typedef char * (* xmlShellReadlineFunc)(char *prompt); - -/** - * xmlShellCtxt: - * - * A debugging shell context. - * TODO: add the defined function tables. - */ -typedef struct _xmlShellCtxt xmlShellCtxt; -typedef xmlShellCtxt *xmlShellCtxtPtr; -struct _xmlShellCtxt { - char *filename; - xmlDocPtr doc; - xmlNodePtr node; - xmlXPathContextPtr pctxt; - int loaded; - FILE *output; - xmlShellReadlineFunc input; -}; - -/** - * xmlShellCmd: - * @ctxt: a shell context - * @arg: a string argument - * @node: a first node - * @node2: a second node - * - * This is a generic signature for the XML shell functions. - * - * Returns an int, negative returns indicating errors. - */ -typedef int (* xmlShellCmd) (xmlShellCtxtPtr ctxt, - char *arg, - xmlNodePtr node, - xmlNodePtr node2); - -XMLPUBFUN void XMLCALL - xmlShellPrintXPathError (int errorType, - const char *arg); -XMLPUBFUN void XMLCALL - xmlShellPrintXPathResult(xmlXPathObjectPtr list); -XMLPUBFUN int XMLCALL - xmlShellList (xmlShellCtxtPtr ctxt, - char *arg, - xmlNodePtr node, - xmlNodePtr node2); -XMLPUBFUN int XMLCALL - xmlShellBase (xmlShellCtxtPtr ctxt, - char *arg, - xmlNodePtr node, - xmlNodePtr node2); -XMLPUBFUN int XMLCALL - xmlShellDir (xmlShellCtxtPtr ctxt, - char *arg, - xmlNodePtr node, - xmlNodePtr node2); -XMLPUBFUN int XMLCALL - xmlShellLoad (xmlShellCtxtPtr ctxt, - char *filename, - xmlNodePtr node, - xmlNodePtr node2); -#ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL - xmlShellPrintNode (xmlNodePtr node); -XMLPUBFUN int XMLCALL - xmlShellCat (xmlShellCtxtPtr ctxt, - char *arg, - xmlNodePtr node, - xmlNodePtr node2); -XMLPUBFUN int XMLCALL - xmlShellWrite (xmlShellCtxtPtr ctxt, - char *filename, - xmlNodePtr node, - xmlNodePtr node2); -XMLPUBFUN int XMLCALL - xmlShellSave (xmlShellCtxtPtr ctxt, - char *filename, - xmlNodePtr node, - xmlNodePtr node2); -#endif /* LIBXML_OUTPUT_ENABLED */ -#ifdef LIBXML_VALID_ENABLED -XMLPUBFUN int XMLCALL - xmlShellValidate (xmlShellCtxtPtr ctxt, - char *dtd, - xmlNodePtr node, - xmlNodePtr node2); -#endif /* LIBXML_VALID_ENABLED */ -XMLPUBFUN int XMLCALL - xmlShellDu (xmlShellCtxtPtr ctxt, - char *arg, - xmlNodePtr tree, - xmlNodePtr node2); -XMLPUBFUN int XMLCALL - xmlShellPwd (xmlShellCtxtPtr ctxt, - char *buffer, - xmlNodePtr node, - xmlNodePtr node2); - -/* - * The Shell interface. - */ -XMLPUBFUN void XMLCALL - xmlShell (xmlDocPtr doc, - char *filename, - xmlShellReadlineFunc input, - FILE *output); - -#endif /* LIBXML_XPATH_ENABLED */ - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_DEBUG_ENABLED */ -#endif /* __DEBUG_XML__ */ diff --git a/cache/include/libxml/dict.h b/cache/include/libxml/dict.h deleted file mode 100644 index 7022ec8..0000000 --- a/cache/include/libxml/dict.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Summary: string dictionnary - * Description: dictionary of reusable strings, just used to avoid allocation - * and freeing operations. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_DICT_H__ -#define __XML_DICT_H__ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * The dictionnary. - */ -typedef struct _xmlDict xmlDict; -typedef xmlDict *xmlDictPtr; - -/* - * Initializer - */ -XMLPUBFUN int XMLCALL xmlInitializeDict(void); - -/* - * Constructor and destructor. - */ -XMLPUBFUN xmlDictPtr XMLCALL - xmlDictCreate (void); -XMLPUBFUN size_t XMLCALL - xmlDictSetLimit (xmlDictPtr dict, - size_t limit); -XMLPUBFUN size_t XMLCALL - xmlDictGetUsage (xmlDictPtr dict); -XMLPUBFUN xmlDictPtr XMLCALL - xmlDictCreateSub(xmlDictPtr sub); -XMLPUBFUN int XMLCALL - xmlDictReference(xmlDictPtr dict); -XMLPUBFUN void XMLCALL - xmlDictFree (xmlDictPtr dict); - -/* - * Lookup of entry in the dictionnary. - */ -XMLPUBFUN const xmlChar * XMLCALL - xmlDictLookup (xmlDictPtr dict, - const xmlChar *name, - int len); -XMLPUBFUN const xmlChar * XMLCALL - xmlDictExists (xmlDictPtr dict, - const xmlChar *name, - int len); -XMLPUBFUN const xmlChar * XMLCALL - xmlDictQLookup (xmlDictPtr dict, - const xmlChar *prefix, - const xmlChar *name); -XMLPUBFUN int XMLCALL - xmlDictOwns (xmlDictPtr dict, - const xmlChar *str); -XMLPUBFUN int XMLCALL - xmlDictSize (xmlDictPtr dict); - -/* - * Cleanup function - */ -XMLPUBFUN void XMLCALL - xmlDictCleanup (void); - -#ifdef __cplusplus -} -#endif -#endif /* ! __XML_DICT_H__ */ diff --git a/cache/include/libxml/encoding.h b/cache/include/libxml/encoding.h deleted file mode 100644 index 7967cc6..0000000 --- a/cache/include/libxml/encoding.h +++ /dev/null @@ -1,240 +0,0 @@ -/* - * Summary: interface for the encoding conversion functions - * Description: interface for the encoding conversion functions needed for - * XML basic encoding and iconv() support. - * - * Related specs are - * rfc2044 (UTF-8 and UTF-16) F. Yergeau Alis Technologies - * [ISO-10646] UTF-8 and UTF-16 in Annexes - * [ISO-8859-1] ISO Latin-1 characters codes. - * [UNICODE] The Unicode Consortium, "The Unicode Standard -- - * Worldwide Character Encoding -- Version 1.0", Addison- - * Wesley, Volume 1, 1991, Volume 2, 1992. UTF-8 is - * described in Unicode Technical Report #4. - * [US-ASCII] Coded Character Set--7-bit American Standard Code for - * Information Interchange, ANSI X3.4-1986. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_CHAR_ENCODING_H__ -#define __XML_CHAR_ENCODING_H__ - -#include - -#ifdef LIBXML_ICONV_ENABLED -#include -#endif -#ifdef LIBXML_ICU_ENABLED -#include -#endif -#ifdef __cplusplus -extern "C" { -#endif - -/* - * xmlCharEncoding: - * - * Predefined values for some standard encodings. - * Libxml does not do beforehand translation on UTF8 and ISOLatinX. - * It also supports ASCII, ISO-8859-1, and UTF16 (LE and BE) by default. - * - * Anything else would have to be translated to UTF8 before being - * given to the parser itself. The BOM for UTF16 and the encoding - * declaration are looked at and a converter is looked for at that - * point. If not found the parser stops here as asked by the XML REC. A - * converter can be registered by the user using xmlRegisterCharEncodingHandler - * but the current form doesn't allow stateful transcoding (a serious - * problem agreed !). If iconv has been found it will be used - * automatically and allow stateful transcoding, the simplest is then - * to be sure to enable iconv and to provide iconv libs for the encoding - * support needed. - * - * Note that the generic "UTF-16" is not a predefined value. Instead, only - * the specific UTF-16LE and UTF-16BE are present. - */ -typedef enum { - XML_CHAR_ENCODING_ERROR= -1, /* No char encoding detected */ - XML_CHAR_ENCODING_NONE= 0, /* No char encoding detected */ - XML_CHAR_ENCODING_UTF8= 1, /* UTF-8 */ - XML_CHAR_ENCODING_UTF16LE= 2, /* UTF-16 little endian */ - XML_CHAR_ENCODING_UTF16BE= 3, /* UTF-16 big endian */ - XML_CHAR_ENCODING_UCS4LE= 4, /* UCS-4 little endian */ - XML_CHAR_ENCODING_UCS4BE= 5, /* UCS-4 big endian */ - XML_CHAR_ENCODING_EBCDIC= 6, /* EBCDIC uh! */ - XML_CHAR_ENCODING_UCS4_2143=7, /* UCS-4 unusual ordering */ - XML_CHAR_ENCODING_UCS4_3412=8, /* UCS-4 unusual ordering */ - XML_CHAR_ENCODING_UCS2= 9, /* UCS-2 */ - XML_CHAR_ENCODING_8859_1= 10,/* ISO-8859-1 ISO Latin 1 */ - XML_CHAR_ENCODING_8859_2= 11,/* ISO-8859-2 ISO Latin 2 */ - XML_CHAR_ENCODING_8859_3= 12,/* ISO-8859-3 */ - XML_CHAR_ENCODING_8859_4= 13,/* ISO-8859-4 */ - XML_CHAR_ENCODING_8859_5= 14,/* ISO-8859-5 */ - XML_CHAR_ENCODING_8859_6= 15,/* ISO-8859-6 */ - XML_CHAR_ENCODING_8859_7= 16,/* ISO-8859-7 */ - XML_CHAR_ENCODING_8859_8= 17,/* ISO-8859-8 */ - XML_CHAR_ENCODING_8859_9= 18,/* ISO-8859-9 */ - XML_CHAR_ENCODING_2022_JP= 19,/* ISO-2022-JP */ - XML_CHAR_ENCODING_SHIFT_JIS=20,/* Shift_JIS */ - XML_CHAR_ENCODING_EUC_JP= 21,/* EUC-JP */ - XML_CHAR_ENCODING_ASCII= 22 /* pure ASCII */ -} xmlCharEncoding; - -/** - * xmlCharEncodingInputFunc: - * @out: a pointer to an array of bytes to store the UTF-8 result - * @outlen: the length of @out - * @in: a pointer to an array of chars in the original encoding - * @inlen: the length of @in - * - * Take a block of chars in the original encoding and try to convert - * it to an UTF-8 block of chars out. - * - * Returns the number of bytes written, -1 if lack of space, or -2 - * if the transcoding failed. - * The value of @inlen after return is the number of octets consumed - * if the return value is positive, else unpredictiable. - * The value of @outlen after return is the number of octets consumed. - */ -typedef int (* xmlCharEncodingInputFunc)(unsigned char *out, int *outlen, - const unsigned char *in, int *inlen); - - -/** - * xmlCharEncodingOutputFunc: - * @out: a pointer to an array of bytes to store the result - * @outlen: the length of @out - * @in: a pointer to an array of UTF-8 chars - * @inlen: the length of @in - * - * Take a block of UTF-8 chars in and try to convert it to another - * encoding. - * Note: a first call designed to produce heading info is called with - * in = NULL. If stateful this should also initialize the encoder state. - * - * Returns the number of bytes written, -1 if lack of space, or -2 - * if the transcoding failed. - * The value of @inlen after return is the number of octets consumed - * if the return value is positive, else unpredictiable. - * The value of @outlen after return is the number of octets produced. - */ -typedef int (* xmlCharEncodingOutputFunc)(unsigned char *out, int *outlen, - const unsigned char *in, int *inlen); - - -/* - * Block defining the handlers for non UTF-8 encodings. - * If iconv is supported, there are two extra fields. - */ -#ifdef LIBXML_ICU_ENABLED -struct _uconv_t { - UConverter *uconv; /* for conversion between an encoding and UTF-16 */ - UConverter *utf8; /* for conversion between UTF-8 and UTF-16 */ -}; -typedef struct _uconv_t uconv_t; -#endif - -typedef struct _xmlCharEncodingHandler xmlCharEncodingHandler; -typedef xmlCharEncodingHandler *xmlCharEncodingHandlerPtr; -struct _xmlCharEncodingHandler { - char *name; - xmlCharEncodingInputFunc input; - xmlCharEncodingOutputFunc output; -#ifdef LIBXML_ICONV_ENABLED - iconv_t iconv_in; - iconv_t iconv_out; -#endif /* LIBXML_ICONV_ENABLED */ -#ifdef LIBXML_ICU_ENABLED - uconv_t *uconv_in; - uconv_t *uconv_out; -#endif /* LIBXML_ICU_ENABLED */ -}; - -#ifdef __cplusplus -} -#endif -#include -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Interfaces for encoding handlers. - */ -XMLPUBFUN void XMLCALL - xmlInitCharEncodingHandlers (void); -XMLPUBFUN void XMLCALL - xmlCleanupCharEncodingHandlers (void); -XMLPUBFUN void XMLCALL - xmlRegisterCharEncodingHandler (xmlCharEncodingHandlerPtr handler); -XMLPUBFUN xmlCharEncodingHandlerPtr XMLCALL - xmlGetCharEncodingHandler (xmlCharEncoding enc); -XMLPUBFUN xmlCharEncodingHandlerPtr XMLCALL - xmlFindCharEncodingHandler (const char *name); -XMLPUBFUN xmlCharEncodingHandlerPtr XMLCALL - xmlNewCharEncodingHandler (const char *name, - xmlCharEncodingInputFunc input, - xmlCharEncodingOutputFunc output); - -/* - * Interfaces for encoding names and aliases. - */ -XMLPUBFUN int XMLCALL - xmlAddEncodingAlias (const char *name, - const char *alias); -XMLPUBFUN int XMLCALL - xmlDelEncodingAlias (const char *alias); -XMLPUBFUN const char * XMLCALL - xmlGetEncodingAlias (const char *alias); -XMLPUBFUN void XMLCALL - xmlCleanupEncodingAliases (void); -XMLPUBFUN xmlCharEncoding XMLCALL - xmlParseCharEncoding (const char *name); -XMLPUBFUN const char * XMLCALL - xmlGetCharEncodingName (xmlCharEncoding enc); - -/* - * Interfaces directly used by the parsers. - */ -XMLPUBFUN xmlCharEncoding XMLCALL - xmlDetectCharEncoding (const unsigned char *in, - int len); - -XMLPUBFUN int XMLCALL - xmlCharEncOutFunc (xmlCharEncodingHandler *handler, - xmlBufferPtr out, - xmlBufferPtr in); - -XMLPUBFUN int XMLCALL - xmlCharEncInFunc (xmlCharEncodingHandler *handler, - xmlBufferPtr out, - xmlBufferPtr in); -XMLPUBFUN int XMLCALL - xmlCharEncFirstLine (xmlCharEncodingHandler *handler, - xmlBufferPtr out, - xmlBufferPtr in); -XMLPUBFUN int XMLCALL - xmlCharEncCloseFunc (xmlCharEncodingHandler *handler); - -/* - * Export a few useful functions - */ -#ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN int XMLCALL - UTF8Toisolat1 (unsigned char *out, - int *outlen, - const unsigned char *in, - int *inlen); -#endif /* LIBXML_OUTPUT_ENABLED */ -XMLPUBFUN int XMLCALL - isolat1ToUTF8 (unsigned char *out, - int *outlen, - const unsigned char *in, - int *inlen); -#ifdef __cplusplus -} -#endif - -#endif /* __XML_CHAR_ENCODING_H__ */ diff --git a/cache/include/libxml/entities.h b/cache/include/libxml/entities.h deleted file mode 100644 index 47b4573..0000000 --- a/cache/include/libxml/entities.h +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Summary: interface for the XML entities handling - * Description: this module provides some of the entity API needed - * for the parser and applications. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_ENTITIES_H__ -#define __XML_ENTITIES_H__ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * The different valid entity types. - */ -typedef enum { - XML_INTERNAL_GENERAL_ENTITY = 1, - XML_EXTERNAL_GENERAL_PARSED_ENTITY = 2, - XML_EXTERNAL_GENERAL_UNPARSED_ENTITY = 3, - XML_INTERNAL_PARAMETER_ENTITY = 4, - XML_EXTERNAL_PARAMETER_ENTITY = 5, - XML_INTERNAL_PREDEFINED_ENTITY = 6 -} xmlEntityType; - -/* - * An unit of storage for an entity, contains the string, the value - * and the linkind data needed for the linking in the hash table. - */ - -struct _xmlEntity { - void *_private; /* application data */ - xmlElementType type; /* XML_ENTITY_DECL, must be second ! */ - const xmlChar *name; /* Entity name */ - struct _xmlNode *children; /* First child link */ - struct _xmlNode *last; /* Last child link */ - struct _xmlDtd *parent; /* -> DTD */ - struct _xmlNode *next; /* next sibling link */ - struct _xmlNode *prev; /* previous sibling link */ - struct _xmlDoc *doc; /* the containing document */ - - xmlChar *orig; /* content without ref substitution */ - xmlChar *content; /* content or ndata if unparsed */ - int length; /* the content length */ - xmlEntityType etype; /* The entity type */ - const xmlChar *ExternalID; /* External identifier for PUBLIC */ - const xmlChar *SystemID; /* URI for a SYSTEM or PUBLIC Entity */ - - struct _xmlEntity *nexte; /* unused */ - const xmlChar *URI; /* the full URI as computed */ - int owner; /* does the entity own the childrens */ - int checked; /* was the entity content checked */ - /* this is also used to count entities - * references done from that entity - * and if it contains '<' */ -}; - -/* - * All entities are stored in an hash table. - * There is 2 separate hash tables for global and parameter entities. - */ - -typedef struct _xmlHashTable xmlEntitiesTable; -typedef xmlEntitiesTable *xmlEntitiesTablePtr; - -/* - * External functions: - */ - -#ifdef LIBXML_LEGACY_ENABLED -XMLPUBFUN void XMLCALL - xmlInitializePredefinedEntities (void); -#endif /* LIBXML_LEGACY_ENABLED */ - -XMLPUBFUN xmlEntityPtr XMLCALL - xmlNewEntity (xmlDocPtr doc, - const xmlChar *name, - int type, - const xmlChar *ExternalID, - const xmlChar *SystemID, - const xmlChar *content); -XMLPUBFUN xmlEntityPtr XMLCALL - xmlAddDocEntity (xmlDocPtr doc, - const xmlChar *name, - int type, - const xmlChar *ExternalID, - const xmlChar *SystemID, - const xmlChar *content); -XMLPUBFUN xmlEntityPtr XMLCALL - xmlAddDtdEntity (xmlDocPtr doc, - const xmlChar *name, - int type, - const xmlChar *ExternalID, - const xmlChar *SystemID, - const xmlChar *content); -XMLPUBFUN xmlEntityPtr XMLCALL - xmlGetPredefinedEntity (const xmlChar *name); -XMLPUBFUN xmlEntityPtr XMLCALL - xmlGetDocEntity (const xmlDoc *doc, - const xmlChar *name); -XMLPUBFUN xmlEntityPtr XMLCALL - xmlGetDtdEntity (xmlDocPtr doc, - const xmlChar *name); -XMLPUBFUN xmlEntityPtr XMLCALL - xmlGetParameterEntity (xmlDocPtr doc, - const xmlChar *name); -#ifdef LIBXML_LEGACY_ENABLED -XMLPUBFUN const xmlChar * XMLCALL - xmlEncodeEntities (xmlDocPtr doc, - const xmlChar *input); -#endif /* LIBXML_LEGACY_ENABLED */ -XMLPUBFUN xmlChar * XMLCALL - xmlEncodeEntitiesReentrant(xmlDocPtr doc, - const xmlChar *input); -XMLPUBFUN xmlChar * XMLCALL - xmlEncodeSpecialChars (const xmlDoc *doc, - const xmlChar *input); -XMLPUBFUN xmlEntitiesTablePtr XMLCALL - xmlCreateEntitiesTable (void); -#ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlEntitiesTablePtr XMLCALL - xmlCopyEntitiesTable (xmlEntitiesTablePtr table); -#endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN void XMLCALL - xmlFreeEntitiesTable (xmlEntitiesTablePtr table); -#ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL - xmlDumpEntitiesTable (xmlBufferPtr buf, - xmlEntitiesTablePtr table); -XMLPUBFUN void XMLCALL - xmlDumpEntityDecl (xmlBufferPtr buf, - xmlEntityPtr ent); -#endif /* LIBXML_OUTPUT_ENABLED */ -#ifdef LIBXML_LEGACY_ENABLED -XMLPUBFUN void XMLCALL - xmlCleanupPredefinedEntities(void); -#endif /* LIBXML_LEGACY_ENABLED */ - - -#ifdef __cplusplus -} -#endif - -# endif /* __XML_ENTITIES_H__ */ diff --git a/cache/include/libxml/globals.h b/cache/include/libxml/globals.h deleted file mode 100644 index a9305aa..0000000 --- a/cache/include/libxml/globals.h +++ /dev/null @@ -1,509 +0,0 @@ -/* - * Summary: interface for all global variables of the library - * Description: all the global variables and thread handling for - * those variables is handled by this module. - * - * The bottom of this file is automatically generated by build_glob.py - * based on the description file global.data - * - * Copy: See Copyright for the status of this software. - * - * Author: Gary Pennington , Daniel Veillard - */ - -#ifndef __XML_GLOBALS_H -#define __XML_GLOBALS_H - -#include -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -XMLPUBFUN void XMLCALL xmlInitGlobals(void); -XMLPUBFUN void XMLCALL xmlCleanupGlobals(void); - -/** - * xmlParserInputBufferCreateFilenameFunc: - * @URI: the URI to read from - * @enc: the requested source encoding - * - * Signature for the function doing the lookup for a suitable input method - * corresponding to an URI. - * - * Returns the new xmlParserInputBufferPtr in case of success or NULL if no - * method was found. - */ -typedef xmlParserInputBufferPtr (*xmlParserInputBufferCreateFilenameFunc) (const char *URI, - xmlCharEncoding enc); - - -/** - * xmlOutputBufferCreateFilenameFunc: - * @URI: the URI to write to - * @enc: the requested target encoding - * - * Signature for the function doing the lookup for a suitable output method - * corresponding to an URI. - * - * Returns the new xmlOutputBufferPtr in case of success or NULL if no - * method was found. - */ -typedef xmlOutputBufferPtr (*xmlOutputBufferCreateFilenameFunc) (const char *URI, - xmlCharEncodingHandlerPtr encoder, - int compression); - -XMLPUBFUN xmlParserInputBufferCreateFilenameFunc -XMLCALL xmlParserInputBufferCreateFilenameDefault (xmlParserInputBufferCreateFilenameFunc func); -XMLPUBFUN xmlOutputBufferCreateFilenameFunc -XMLCALL xmlOutputBufferCreateFilenameDefault (xmlOutputBufferCreateFilenameFunc func); - -/* - * Externally global symbols which need to be protected for backwards - * compatibility support. - */ - -#undef docbDefaultSAXHandler -#undef htmlDefaultSAXHandler -#undef oldXMLWDcompatibility -#undef xmlBufferAllocScheme -#undef xmlDefaultBufferSize -#undef xmlDefaultSAXHandler -#undef xmlDefaultSAXLocator -#undef xmlDoValidityCheckingDefaultValue -#undef xmlFree -#undef xmlGenericError -#undef xmlStructuredError -#undef xmlGenericErrorContext -#undef xmlStructuredErrorContext -#undef xmlGetWarningsDefaultValue -#undef xmlIndentTreeOutput -#undef xmlTreeIndentString -#undef xmlKeepBlanksDefaultValue -#undef xmlLineNumbersDefaultValue -#undef xmlLoadExtDtdDefaultValue -#undef xmlMalloc -#undef xmlMallocAtomic -#undef xmlMemStrdup -#undef xmlParserDebugEntities -#undef xmlParserVersion -#undef xmlPedanticParserDefaultValue -#undef xmlRealloc -#undef xmlSaveNoEmptyTags -#undef xmlSubstituteEntitiesDefaultValue -#undef xmlRegisterNodeDefaultValue -#undef xmlDeregisterNodeDefaultValue -#undef xmlLastError -#undef xmlParserInputBufferCreateFilenameValue -#undef xmlOutputBufferCreateFilenameValue - -/** - * xmlRegisterNodeFunc: - * @node: the current node - * - * Signature for the registration callback of a created node - */ -typedef void (*xmlRegisterNodeFunc) (xmlNodePtr node); -/** - * xmlDeregisterNodeFunc: - * @node: the current node - * - * Signature for the deregistration callback of a discarded node - */ -typedef void (*xmlDeregisterNodeFunc) (xmlNodePtr node); - -typedef struct _xmlGlobalState xmlGlobalState; -typedef xmlGlobalState *xmlGlobalStatePtr; -struct _xmlGlobalState -{ - const char *xmlParserVersion; - - xmlSAXLocator xmlDefaultSAXLocator; - xmlSAXHandlerV1 xmlDefaultSAXHandler; - xmlSAXHandlerV1 docbDefaultSAXHandler; - xmlSAXHandlerV1 htmlDefaultSAXHandler; - - xmlFreeFunc xmlFree; - xmlMallocFunc xmlMalloc; - xmlStrdupFunc xmlMemStrdup; - xmlReallocFunc xmlRealloc; - - xmlGenericErrorFunc xmlGenericError; - xmlStructuredErrorFunc xmlStructuredError; - void *xmlGenericErrorContext; - - int oldXMLWDcompatibility; - - xmlBufferAllocationScheme xmlBufferAllocScheme; - int xmlDefaultBufferSize; - - int xmlSubstituteEntitiesDefaultValue; - int xmlDoValidityCheckingDefaultValue; - int xmlGetWarningsDefaultValue; - int xmlKeepBlanksDefaultValue; - int xmlLineNumbersDefaultValue; - int xmlLoadExtDtdDefaultValue; - int xmlParserDebugEntities; - int xmlPedanticParserDefaultValue; - - int xmlSaveNoEmptyTags; - int xmlIndentTreeOutput; - const char *xmlTreeIndentString; - - xmlRegisterNodeFunc xmlRegisterNodeDefaultValue; - xmlDeregisterNodeFunc xmlDeregisterNodeDefaultValue; - - xmlMallocFunc xmlMallocAtomic; - xmlError xmlLastError; - - xmlParserInputBufferCreateFilenameFunc xmlParserInputBufferCreateFilenameValue; - xmlOutputBufferCreateFilenameFunc xmlOutputBufferCreateFilenameValue; - - void *xmlStructuredErrorContext; -}; - -#ifdef __cplusplus -} -#endif -#include -#ifdef __cplusplus -extern "C" { -#endif - -XMLPUBFUN void XMLCALL xmlInitializeGlobalState(xmlGlobalStatePtr gs); - -XMLPUBFUN void XMLCALL xmlThrDefSetGenericErrorFunc(void *ctx, xmlGenericErrorFunc handler); - -XMLPUBFUN void XMLCALL xmlThrDefSetStructuredErrorFunc(void *ctx, xmlStructuredErrorFunc handler); - -XMLPUBFUN xmlRegisterNodeFunc XMLCALL xmlRegisterNodeDefault(xmlRegisterNodeFunc func); -XMLPUBFUN xmlRegisterNodeFunc XMLCALL xmlThrDefRegisterNodeDefault(xmlRegisterNodeFunc func); -XMLPUBFUN xmlDeregisterNodeFunc XMLCALL xmlDeregisterNodeDefault(xmlDeregisterNodeFunc func); -XMLPUBFUN xmlDeregisterNodeFunc XMLCALL xmlThrDefDeregisterNodeDefault(xmlDeregisterNodeFunc func); - -XMLPUBFUN xmlOutputBufferCreateFilenameFunc XMLCALL - xmlThrDefOutputBufferCreateFilenameDefault(xmlOutputBufferCreateFilenameFunc func); -XMLPUBFUN xmlParserInputBufferCreateFilenameFunc XMLCALL - xmlThrDefParserInputBufferCreateFilenameDefault( - xmlParserInputBufferCreateFilenameFunc func); - -/** DOC_DISABLE */ -/* - * In general the memory allocation entry points are not kept - * thread specific but this can be overridden by LIBXML_THREAD_ALLOC_ENABLED - * - xmlMalloc - * - xmlMallocAtomic - * - xmlRealloc - * - xmlMemStrdup - * - xmlFree - */ - -#ifdef LIBXML_THREAD_ALLOC_ENABLED -#ifdef LIBXML_THREAD_ENABLED -XMLPUBFUN xmlMallocFunc * XMLCALL __xmlMalloc(void); -#define xmlMalloc \ -(*(__xmlMalloc())) -#else -XMLPUBVAR xmlMallocFunc xmlMalloc; -#endif - -#ifdef LIBXML_THREAD_ENABLED -XMLPUBFUN xmlMallocFunc * XMLCALL __xmlMallocAtomic(void); -#define xmlMallocAtomic \ -(*(__xmlMallocAtomic())) -#else -XMLPUBVAR xmlMallocFunc xmlMallocAtomic; -#endif - -#ifdef LIBXML_THREAD_ENABLED -XMLPUBFUN xmlReallocFunc * XMLCALL __xmlRealloc(void); -#define xmlRealloc \ -(*(__xmlRealloc())) -#else -XMLPUBVAR xmlReallocFunc xmlRealloc; -#endif - -#ifdef LIBXML_THREAD_ENABLED -XMLPUBFUN xmlFreeFunc * XMLCALL __xmlFree(void); -#define xmlFree \ -(*(__xmlFree())) -#else -XMLPUBVAR xmlFreeFunc xmlFree; -#endif - -#ifdef LIBXML_THREAD_ENABLED -XMLPUBFUN xmlStrdupFunc * XMLCALL __xmlMemStrdup(void); -#define xmlMemStrdup \ -(*(__xmlMemStrdup())) -#else -XMLPUBVAR xmlStrdupFunc xmlMemStrdup; -#endif - -#else /* !LIBXML_THREAD_ALLOC_ENABLED */ -XMLPUBVAR xmlMallocFunc xmlMalloc; -XMLPUBVAR xmlMallocFunc xmlMallocAtomic; -XMLPUBVAR xmlReallocFunc xmlRealloc; -XMLPUBVAR xmlFreeFunc xmlFree; -XMLPUBVAR xmlStrdupFunc xmlMemStrdup; -#endif /* LIBXML_THREAD_ALLOC_ENABLED */ - -#ifdef LIBXML_DOCB_ENABLED -XMLPUBFUN xmlSAXHandlerV1 * XMLCALL __docbDefaultSAXHandler(void); -#ifdef LIBXML_THREAD_ENABLED -#define docbDefaultSAXHandler \ -(*(__docbDefaultSAXHandler())) -#else -XMLPUBVAR xmlSAXHandlerV1 docbDefaultSAXHandler; -#endif -#endif - -#ifdef LIBXML_HTML_ENABLED -XMLPUBFUN xmlSAXHandlerV1 * XMLCALL __htmlDefaultSAXHandler(void); -#ifdef LIBXML_THREAD_ENABLED -#define htmlDefaultSAXHandler \ -(*(__htmlDefaultSAXHandler())) -#else -XMLPUBVAR xmlSAXHandlerV1 htmlDefaultSAXHandler; -#endif -#endif - -XMLPUBFUN xmlError * XMLCALL __xmlLastError(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlLastError \ -(*(__xmlLastError())) -#else -XMLPUBVAR xmlError xmlLastError; -#endif - -/* - * Everything starting from the line below is - * Automatically generated by build_glob.py. - * Do not modify the previous line. - */ - - -XMLPUBFUN int * XMLCALL __oldXMLWDcompatibility(void); -#ifdef LIBXML_THREAD_ENABLED -#define oldXMLWDcompatibility \ -(*(__oldXMLWDcompatibility())) -#else -XMLPUBVAR int oldXMLWDcompatibility; -#endif - -XMLPUBFUN xmlBufferAllocationScheme * XMLCALL __xmlBufferAllocScheme(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlBufferAllocScheme \ -(*(__xmlBufferAllocScheme())) -#else -XMLPUBVAR xmlBufferAllocationScheme xmlBufferAllocScheme; -#endif -XMLPUBFUN xmlBufferAllocationScheme XMLCALL - xmlThrDefBufferAllocScheme(xmlBufferAllocationScheme v); - -XMLPUBFUN int * XMLCALL __xmlDefaultBufferSize(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlDefaultBufferSize \ -(*(__xmlDefaultBufferSize())) -#else -XMLPUBVAR int xmlDefaultBufferSize; -#endif -XMLPUBFUN int XMLCALL xmlThrDefDefaultBufferSize(int v); - -XMLPUBFUN xmlSAXHandlerV1 * XMLCALL __xmlDefaultSAXHandler(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlDefaultSAXHandler \ -(*(__xmlDefaultSAXHandler())) -#else -XMLPUBVAR xmlSAXHandlerV1 xmlDefaultSAXHandler; -#endif - -XMLPUBFUN xmlSAXLocator * XMLCALL __xmlDefaultSAXLocator(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlDefaultSAXLocator \ -(*(__xmlDefaultSAXLocator())) -#else -XMLPUBVAR xmlSAXLocator xmlDefaultSAXLocator; -#endif - -XMLPUBFUN int * XMLCALL __xmlDoValidityCheckingDefaultValue(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlDoValidityCheckingDefaultValue \ -(*(__xmlDoValidityCheckingDefaultValue())) -#else -XMLPUBVAR int xmlDoValidityCheckingDefaultValue; -#endif -XMLPUBFUN int XMLCALL xmlThrDefDoValidityCheckingDefaultValue(int v); - -XMLPUBFUN xmlGenericErrorFunc * XMLCALL __xmlGenericError(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlGenericError \ -(*(__xmlGenericError())) -#else -XMLPUBVAR xmlGenericErrorFunc xmlGenericError; -#endif - -XMLPUBFUN xmlStructuredErrorFunc * XMLCALL __xmlStructuredError(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlStructuredError \ -(*(__xmlStructuredError())) -#else -XMLPUBVAR xmlStructuredErrorFunc xmlStructuredError; -#endif - -XMLPUBFUN void * * XMLCALL __xmlGenericErrorContext(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlGenericErrorContext \ -(*(__xmlGenericErrorContext())) -#else -XMLPUBVAR void * xmlGenericErrorContext; -#endif - -XMLPUBFUN void * * XMLCALL __xmlStructuredErrorContext(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlStructuredErrorContext \ -(*(__xmlStructuredErrorContext())) -#else -XMLPUBVAR void * xmlStructuredErrorContext; -#endif - -XMLPUBFUN int * XMLCALL __xmlGetWarningsDefaultValue(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlGetWarningsDefaultValue \ -(*(__xmlGetWarningsDefaultValue())) -#else -XMLPUBVAR int xmlGetWarningsDefaultValue; -#endif -XMLPUBFUN int XMLCALL xmlThrDefGetWarningsDefaultValue(int v); - -XMLPUBFUN int * XMLCALL __xmlIndentTreeOutput(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlIndentTreeOutput \ -(*(__xmlIndentTreeOutput())) -#else -XMLPUBVAR int xmlIndentTreeOutput; -#endif -XMLPUBFUN int XMLCALL xmlThrDefIndentTreeOutput(int v); - -XMLPUBFUN const char * * XMLCALL __xmlTreeIndentString(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlTreeIndentString \ -(*(__xmlTreeIndentString())) -#else -XMLPUBVAR const char * xmlTreeIndentString; -#endif -XMLPUBFUN const char * XMLCALL xmlThrDefTreeIndentString(const char * v); - -XMLPUBFUN int * XMLCALL __xmlKeepBlanksDefaultValue(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlKeepBlanksDefaultValue \ -(*(__xmlKeepBlanksDefaultValue())) -#else -XMLPUBVAR int xmlKeepBlanksDefaultValue; -#endif -XMLPUBFUN int XMLCALL xmlThrDefKeepBlanksDefaultValue(int v); - -XMLPUBFUN int * XMLCALL __xmlLineNumbersDefaultValue(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlLineNumbersDefaultValue \ -(*(__xmlLineNumbersDefaultValue())) -#else -XMLPUBVAR int xmlLineNumbersDefaultValue; -#endif -XMLPUBFUN int XMLCALL xmlThrDefLineNumbersDefaultValue(int v); - -XMLPUBFUN int * XMLCALL __xmlLoadExtDtdDefaultValue(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlLoadExtDtdDefaultValue \ -(*(__xmlLoadExtDtdDefaultValue())) -#else -XMLPUBVAR int xmlLoadExtDtdDefaultValue; -#endif -XMLPUBFUN int XMLCALL xmlThrDefLoadExtDtdDefaultValue(int v); - -XMLPUBFUN int * XMLCALL __xmlParserDebugEntities(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlParserDebugEntities \ -(*(__xmlParserDebugEntities())) -#else -XMLPUBVAR int xmlParserDebugEntities; -#endif -XMLPUBFUN int XMLCALL xmlThrDefParserDebugEntities(int v); - -XMLPUBFUN const char * * XMLCALL __xmlParserVersion(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlParserVersion \ -(*(__xmlParserVersion())) -#else -XMLPUBVAR const char * xmlParserVersion; -#endif - -XMLPUBFUN int * XMLCALL __xmlPedanticParserDefaultValue(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlPedanticParserDefaultValue \ -(*(__xmlPedanticParserDefaultValue())) -#else -XMLPUBVAR int xmlPedanticParserDefaultValue; -#endif -XMLPUBFUN int XMLCALL xmlThrDefPedanticParserDefaultValue(int v); - -XMLPUBFUN int * XMLCALL __xmlSaveNoEmptyTags(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlSaveNoEmptyTags \ -(*(__xmlSaveNoEmptyTags())) -#else -XMLPUBVAR int xmlSaveNoEmptyTags; -#endif -XMLPUBFUN int XMLCALL xmlThrDefSaveNoEmptyTags(int v); - -XMLPUBFUN int * XMLCALL __xmlSubstituteEntitiesDefaultValue(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlSubstituteEntitiesDefaultValue \ -(*(__xmlSubstituteEntitiesDefaultValue())) -#else -XMLPUBVAR int xmlSubstituteEntitiesDefaultValue; -#endif -XMLPUBFUN int XMLCALL xmlThrDefSubstituteEntitiesDefaultValue(int v); - -XMLPUBFUN xmlRegisterNodeFunc * XMLCALL __xmlRegisterNodeDefaultValue(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlRegisterNodeDefaultValue \ -(*(__xmlRegisterNodeDefaultValue())) -#else -XMLPUBVAR xmlRegisterNodeFunc xmlRegisterNodeDefaultValue; -#endif - -XMLPUBFUN xmlDeregisterNodeFunc * XMLCALL __xmlDeregisterNodeDefaultValue(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlDeregisterNodeDefaultValue \ -(*(__xmlDeregisterNodeDefaultValue())) -#else -XMLPUBVAR xmlDeregisterNodeFunc xmlDeregisterNodeDefaultValue; -#endif - -XMLPUBFUN xmlParserInputBufferCreateFilenameFunc * XMLCALL \ - __xmlParserInputBufferCreateFilenameValue(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlParserInputBufferCreateFilenameValue \ -(*(__xmlParserInputBufferCreateFilenameValue())) -#else -XMLPUBVAR xmlParserInputBufferCreateFilenameFunc xmlParserInputBufferCreateFilenameValue; -#endif - -XMLPUBFUN xmlOutputBufferCreateFilenameFunc * XMLCALL __xmlOutputBufferCreateFilenameValue(void); -#ifdef LIBXML_THREAD_ENABLED -#define xmlOutputBufferCreateFilenameValue \ -(*(__xmlOutputBufferCreateFilenameValue())) -#else -XMLPUBVAR xmlOutputBufferCreateFilenameFunc xmlOutputBufferCreateFilenameValue; -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* __XML_GLOBALS_H */ diff --git a/cache/include/libxml/hash.h b/cache/include/libxml/hash.h deleted file mode 100644 index dc8ab7e..0000000 --- a/cache/include/libxml/hash.h +++ /dev/null @@ -1,233 +0,0 @@ -/* - * Summary: Chained hash tables - * Description: This module implements the hash table support used in - * various places in the library. - * - * Copy: See Copyright for the status of this software. - * - * Author: Bjorn Reese - */ - -#ifndef __XML_HASH_H__ -#define __XML_HASH_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * The hash table. - */ -typedef struct _xmlHashTable xmlHashTable; -typedef xmlHashTable *xmlHashTablePtr; - -#ifdef __cplusplus -} -#endif - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Recent version of gcc produce a warning when a function pointer is assigned - * to an object pointer, or vice versa. The following macro is a dirty hack - * to allow suppression of the warning. If your architecture has function - * pointers which are a different size than a void pointer, there may be some - * serious trouble within the library. - */ -/** - * XML_CAST_FPTR: - * @fptr: pointer to a function - * - * Macro to do a casting from an object pointer to a - * function pointer without encountering a warning from - * gcc - * - * #define XML_CAST_FPTR(fptr) (*(void **)(&fptr)) - * This macro violated ISO C aliasing rules (gcc4 on s390 broke) - * so it is disabled now - */ - -#define XML_CAST_FPTR(fptr) fptr - - -/* - * function types: - */ -/** - * xmlHashDeallocator: - * @payload: the data in the hash - * @name: the name associated - * - * Callback to free data from a hash. - */ -typedef void (*xmlHashDeallocator)(void *payload, xmlChar *name); -/** - * xmlHashCopier: - * @payload: the data in the hash - * @name: the name associated - * - * Callback to copy data from a hash. - * - * Returns a copy of the data or NULL in case of error. - */ -typedef void *(*xmlHashCopier)(void *payload, xmlChar *name); -/** - * xmlHashScanner: - * @payload: the data in the hash - * @data: extra scannner data - * @name: the name associated - * - * Callback when scanning data in a hash with the simple scanner. - */ -typedef void (*xmlHashScanner)(void *payload, void *data, xmlChar *name); -/** - * xmlHashScannerFull: - * @payload: the data in the hash - * @data: extra scannner data - * @name: the name associated - * @name2: the second name associated - * @name3: the third name associated - * - * Callback when scanning data in a hash with the full scanner. - */ -typedef void (*xmlHashScannerFull)(void *payload, void *data, - const xmlChar *name, const xmlChar *name2, - const xmlChar *name3); - -/* - * Constructor and destructor. - */ -XMLPUBFUN xmlHashTablePtr XMLCALL - xmlHashCreate (int size); -XMLPUBFUN xmlHashTablePtr XMLCALL - xmlHashCreateDict(int size, - xmlDictPtr dict); -XMLPUBFUN void XMLCALL - xmlHashFree (xmlHashTablePtr table, - xmlHashDeallocator f); - -/* - * Add a new entry to the hash table. - */ -XMLPUBFUN int XMLCALL - xmlHashAddEntry (xmlHashTablePtr table, - const xmlChar *name, - void *userdata); -XMLPUBFUN int XMLCALL - xmlHashUpdateEntry(xmlHashTablePtr table, - const xmlChar *name, - void *userdata, - xmlHashDeallocator f); -XMLPUBFUN int XMLCALL - xmlHashAddEntry2(xmlHashTablePtr table, - const xmlChar *name, - const xmlChar *name2, - void *userdata); -XMLPUBFUN int XMLCALL - xmlHashUpdateEntry2(xmlHashTablePtr table, - const xmlChar *name, - const xmlChar *name2, - void *userdata, - xmlHashDeallocator f); -XMLPUBFUN int XMLCALL - xmlHashAddEntry3(xmlHashTablePtr table, - const xmlChar *name, - const xmlChar *name2, - const xmlChar *name3, - void *userdata); -XMLPUBFUN int XMLCALL - xmlHashUpdateEntry3(xmlHashTablePtr table, - const xmlChar *name, - const xmlChar *name2, - const xmlChar *name3, - void *userdata, - xmlHashDeallocator f); - -/* - * Remove an entry from the hash table. - */ -XMLPUBFUN int XMLCALL - xmlHashRemoveEntry(xmlHashTablePtr table, const xmlChar *name, - xmlHashDeallocator f); -XMLPUBFUN int XMLCALL - xmlHashRemoveEntry2(xmlHashTablePtr table, const xmlChar *name, - const xmlChar *name2, xmlHashDeallocator f); -XMLPUBFUN int XMLCALL - xmlHashRemoveEntry3(xmlHashTablePtr table, const xmlChar *name, - const xmlChar *name2, const xmlChar *name3, - xmlHashDeallocator f); - -/* - * Retrieve the userdata. - */ -XMLPUBFUN void * XMLCALL - xmlHashLookup (xmlHashTablePtr table, - const xmlChar *name); -XMLPUBFUN void * XMLCALL - xmlHashLookup2 (xmlHashTablePtr table, - const xmlChar *name, - const xmlChar *name2); -XMLPUBFUN void * XMLCALL - xmlHashLookup3 (xmlHashTablePtr table, - const xmlChar *name, - const xmlChar *name2, - const xmlChar *name3); -XMLPUBFUN void * XMLCALL - xmlHashQLookup (xmlHashTablePtr table, - const xmlChar *name, - const xmlChar *prefix); -XMLPUBFUN void * XMLCALL - xmlHashQLookup2 (xmlHashTablePtr table, - const xmlChar *name, - const xmlChar *prefix, - const xmlChar *name2, - const xmlChar *prefix2); -XMLPUBFUN void * XMLCALL - xmlHashQLookup3 (xmlHashTablePtr table, - const xmlChar *name, - const xmlChar *prefix, - const xmlChar *name2, - const xmlChar *prefix2, - const xmlChar *name3, - const xmlChar *prefix3); - -/* - * Helpers. - */ -XMLPUBFUN xmlHashTablePtr XMLCALL - xmlHashCopy (xmlHashTablePtr table, - xmlHashCopier f); -XMLPUBFUN int XMLCALL - xmlHashSize (xmlHashTablePtr table); -XMLPUBFUN void XMLCALL - xmlHashScan (xmlHashTablePtr table, - xmlHashScanner f, - void *data); -XMLPUBFUN void XMLCALL - xmlHashScan3 (xmlHashTablePtr table, - const xmlChar *name, - const xmlChar *name2, - const xmlChar *name3, - xmlHashScanner f, - void *data); -XMLPUBFUN void XMLCALL - xmlHashScanFull (xmlHashTablePtr table, - xmlHashScannerFull f, - void *data); -XMLPUBFUN void XMLCALL - xmlHashScanFull3(xmlHashTablePtr table, - const xmlChar *name, - const xmlChar *name2, - const xmlChar *name3, - xmlHashScannerFull f, - void *data); -#ifdef __cplusplus -} -#endif -#endif /* ! __XML_HASH_H__ */ diff --git a/cache/include/libxml/list.h b/cache/include/libxml/list.h deleted file mode 100644 index 0504e0c..0000000 --- a/cache/include/libxml/list.h +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Summary: lists interfaces - * Description: this module implement the list support used in - * various place in the library. - * - * Copy: See Copyright for the status of this software. - * - * Author: Gary Pennington - */ - -#ifndef __XML_LINK_INCLUDE__ -#define __XML_LINK_INCLUDE__ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct _xmlLink xmlLink; -typedef xmlLink *xmlLinkPtr; - -typedef struct _xmlList xmlList; -typedef xmlList *xmlListPtr; - -/** - * xmlListDeallocator: - * @lk: the data to deallocate - * - * Callback function used to free data from a list. - */ -typedef void (*xmlListDeallocator) (xmlLinkPtr lk); -/** - * xmlListDataCompare: - * @data0: the first data - * @data1: the second data - * - * Callback function used to compare 2 data. - * - * Returns 0 is equality, -1 or 1 otherwise depending on the ordering. - */ -typedef int (*xmlListDataCompare) (const void *data0, const void *data1); -/** - * xmlListWalker: - * @data: the data found in the list - * @user: extra user provided data to the walker - * - * Callback function used when walking a list with xmlListWalk(). - * - * Returns 0 to stop walking the list, 1 otherwise. - */ -typedef int (*xmlListWalker) (const void *data, const void *user); - -/* Creation/Deletion */ -XMLPUBFUN xmlListPtr XMLCALL - xmlListCreate (xmlListDeallocator deallocator, - xmlListDataCompare compare); -XMLPUBFUN void XMLCALL - xmlListDelete (xmlListPtr l); - -/* Basic Operators */ -XMLPUBFUN void * XMLCALL - xmlListSearch (xmlListPtr l, - void *data); -XMLPUBFUN void * XMLCALL - xmlListReverseSearch (xmlListPtr l, - void *data); -XMLPUBFUN int XMLCALL - xmlListInsert (xmlListPtr l, - void *data) ; -XMLPUBFUN int XMLCALL - xmlListAppend (xmlListPtr l, - void *data) ; -XMLPUBFUN int XMLCALL - xmlListRemoveFirst (xmlListPtr l, - void *data); -XMLPUBFUN int XMLCALL - xmlListRemoveLast (xmlListPtr l, - void *data); -XMLPUBFUN int XMLCALL - xmlListRemoveAll (xmlListPtr l, - void *data); -XMLPUBFUN void XMLCALL - xmlListClear (xmlListPtr l); -XMLPUBFUN int XMLCALL - xmlListEmpty (xmlListPtr l); -XMLPUBFUN xmlLinkPtr XMLCALL - xmlListFront (xmlListPtr l); -XMLPUBFUN xmlLinkPtr XMLCALL - xmlListEnd (xmlListPtr l); -XMLPUBFUN int XMLCALL - xmlListSize (xmlListPtr l); - -XMLPUBFUN void XMLCALL - xmlListPopFront (xmlListPtr l); -XMLPUBFUN void XMLCALL - xmlListPopBack (xmlListPtr l); -XMLPUBFUN int XMLCALL - xmlListPushFront (xmlListPtr l, - void *data); -XMLPUBFUN int XMLCALL - xmlListPushBack (xmlListPtr l, - void *data); - -/* Advanced Operators */ -XMLPUBFUN void XMLCALL - xmlListReverse (xmlListPtr l); -XMLPUBFUN void XMLCALL - xmlListSort (xmlListPtr l); -XMLPUBFUN void XMLCALL - xmlListWalk (xmlListPtr l, - xmlListWalker walker, - const void *user); -XMLPUBFUN void XMLCALL - xmlListReverseWalk (xmlListPtr l, - xmlListWalker walker, - const void *user); -XMLPUBFUN void XMLCALL - xmlListMerge (xmlListPtr l1, - xmlListPtr l2); -XMLPUBFUN xmlListPtr XMLCALL - xmlListDup (const xmlListPtr old); -XMLPUBFUN int XMLCALL - xmlListCopy (xmlListPtr cur, - const xmlListPtr old); -/* Link operators */ -XMLPUBFUN void * XMLCALL - xmlLinkGetData (xmlLinkPtr lk); - -/* xmlListUnique() */ -/* xmlListSwap */ - -#ifdef __cplusplus -} -#endif - -#endif /* __XML_LINK_INCLUDE__ */ diff --git a/cache/include/libxml/nanoftp.h b/cache/include/libxml/nanoftp.h deleted file mode 100644 index abb4bf7..0000000 --- a/cache/include/libxml/nanoftp.h +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Summary: minimal FTP implementation - * Description: minimal FTP implementation allowing to fetch resources - * like external subset. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __NANO_FTP_H__ -#define __NANO_FTP_H__ - -#include - -#ifdef LIBXML_FTP_ENABLED - -/* Needed for portability to Windows 64 bits */ -#if defined(__MINGW32__) || defined(_WIN32_WCE) -#include -#else -/** - * SOCKET: - * - * macro used to provide portability of code to windows sockets - */ -#define SOCKET int -/** - * INVALID_SOCKET: - * - * macro used to provide portability of code to windows sockets - * the value to be used when the socket is not valid - */ -#undef INVALID_SOCKET -#define INVALID_SOCKET (-1) -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * ftpListCallback: - * @userData: user provided data for the callback - * @filename: the file name (including "->" when links are shown) - * @attrib: the attribute string - * @owner: the owner string - * @group: the group string - * @size: the file size - * @links: the link count - * @year: the year - * @month: the month - * @day: the day - * @hour: the hour - * @minute: the minute - * - * A callback for the xmlNanoFTPList command. - * Note that only one of year and day:minute are specified. - */ -typedef void (*ftpListCallback) (void *userData, - const char *filename, const char *attrib, - const char *owner, const char *group, - unsigned long size, int links, int year, - const char *month, int day, int hour, - int minute); -/** - * ftpDataCallback: - * @userData: the user provided context - * @data: the data received - * @len: its size in bytes - * - * A callback for the xmlNanoFTPGet command. - */ -typedef void (*ftpDataCallback) (void *userData, - const char *data, - int len); - -/* - * Init - */ -XMLPUBFUN void XMLCALL - xmlNanoFTPInit (void); -XMLPUBFUN void XMLCALL - xmlNanoFTPCleanup (void); - -/* - * Creating/freeing contexts. - */ -XMLPUBFUN void * XMLCALL - xmlNanoFTPNewCtxt (const char *URL); -XMLPUBFUN void XMLCALL - xmlNanoFTPFreeCtxt (void * ctx); -XMLPUBFUN void * XMLCALL - xmlNanoFTPConnectTo (const char *server, - int port); -/* - * Opening/closing session connections. - */ -XMLPUBFUN void * XMLCALL - xmlNanoFTPOpen (const char *URL); -XMLPUBFUN int XMLCALL - xmlNanoFTPConnect (void *ctx); -XMLPUBFUN int XMLCALL - xmlNanoFTPClose (void *ctx); -XMLPUBFUN int XMLCALL - xmlNanoFTPQuit (void *ctx); -XMLPUBFUN void XMLCALL - xmlNanoFTPScanProxy (const char *URL); -XMLPUBFUN void XMLCALL - xmlNanoFTPProxy (const char *host, - int port, - const char *user, - const char *passwd, - int type); -XMLPUBFUN int XMLCALL - xmlNanoFTPUpdateURL (void *ctx, - const char *URL); - -/* - * Rather internal commands. - */ -XMLPUBFUN int XMLCALL - xmlNanoFTPGetResponse (void *ctx); -XMLPUBFUN int XMLCALL - xmlNanoFTPCheckResponse (void *ctx); - -/* - * CD/DIR/GET handlers. - */ -XMLPUBFUN int XMLCALL - xmlNanoFTPCwd (void *ctx, - const char *directory); -XMLPUBFUN int XMLCALL - xmlNanoFTPDele (void *ctx, - const char *file); - -XMLPUBFUN SOCKET XMLCALL - xmlNanoFTPGetConnection (void *ctx); -XMLPUBFUN int XMLCALL - xmlNanoFTPCloseConnection(void *ctx); -XMLPUBFUN int XMLCALL - xmlNanoFTPList (void *ctx, - ftpListCallback callback, - void *userData, - const char *filename); -XMLPUBFUN SOCKET XMLCALL - xmlNanoFTPGetSocket (void *ctx, - const char *filename); -XMLPUBFUN int XMLCALL - xmlNanoFTPGet (void *ctx, - ftpDataCallback callback, - void *userData, - const char *filename); -XMLPUBFUN int XMLCALL - xmlNanoFTPRead (void *ctx, - void *dest, - int len); - -#ifdef __cplusplus -} -#endif -#endif /* LIBXML_FTP_ENABLED */ -#endif /* __NANO_FTP_H__ */ diff --git a/cache/include/libxml/nanohttp.h b/cache/include/libxml/nanohttp.h deleted file mode 100644 index 22b8fb4..0000000 --- a/cache/include/libxml/nanohttp.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Summary: minimal HTTP implementation - * Description: minimal HTTP implementation allowing to fetch resources - * like external subset. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __NANO_HTTP_H__ -#define __NANO_HTTP_H__ - -#include - -#ifdef LIBXML_HTTP_ENABLED - -#ifdef __cplusplus -extern "C" { -#endif -XMLPUBFUN void XMLCALL - xmlNanoHTTPInit (void); -XMLPUBFUN void XMLCALL - xmlNanoHTTPCleanup (void); -XMLPUBFUN void XMLCALL - xmlNanoHTTPScanProxy (const char *URL); -XMLPUBFUN int XMLCALL - xmlNanoHTTPFetch (const char *URL, - const char *filename, - char **contentType); -XMLPUBFUN void * XMLCALL - xmlNanoHTTPMethod (const char *URL, - const char *method, - const char *input, - char **contentType, - const char *headers, - int ilen); -XMLPUBFUN void * XMLCALL - xmlNanoHTTPMethodRedir (const char *URL, - const char *method, - const char *input, - char **contentType, - char **redir, - const char *headers, - int ilen); -XMLPUBFUN void * XMLCALL - xmlNanoHTTPOpen (const char *URL, - char **contentType); -XMLPUBFUN void * XMLCALL - xmlNanoHTTPOpenRedir (const char *URL, - char **contentType, - char **redir); -XMLPUBFUN int XMLCALL - xmlNanoHTTPReturnCode (void *ctx); -XMLPUBFUN const char * XMLCALL - xmlNanoHTTPAuthHeader (void *ctx); -XMLPUBFUN const char * XMLCALL - xmlNanoHTTPRedir (void *ctx); -XMLPUBFUN int XMLCALL - xmlNanoHTTPContentLength( void * ctx ); -XMLPUBFUN const char * XMLCALL - xmlNanoHTTPEncoding (void *ctx); -XMLPUBFUN const char * XMLCALL - xmlNanoHTTPMimeType (void *ctx); -XMLPUBFUN int XMLCALL - xmlNanoHTTPRead (void *ctx, - void *dest, - int len); -#ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN int XMLCALL - xmlNanoHTTPSave (void *ctxt, - const char *filename); -#endif /* LIBXML_OUTPUT_ENABLED */ -XMLPUBFUN void XMLCALL - xmlNanoHTTPClose (void *ctx); -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_HTTP_ENABLED */ -#endif /* __NANO_HTTP_H__ */ diff --git a/cache/include/libxml/parser.h b/cache/include/libxml/parser.h deleted file mode 100644 index 3f5730d..0000000 --- a/cache/include/libxml/parser.h +++ /dev/null @@ -1,1241 +0,0 @@ -/* - * Summary: the core parser module - * Description: Interfaces, constants and types related to the XML parser - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_PARSER_H__ -#define __XML_PARSER_H__ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * XML_DEFAULT_VERSION: - * - * The default version of XML used: 1.0 - */ -#define XML_DEFAULT_VERSION "1.0" - -/** - * xmlParserInput: - * - * An xmlParserInput is an input flow for the XML processor. - * Each entity parsed is associated an xmlParserInput (except the - * few predefined ones). This is the case both for internal entities - * - in which case the flow is already completely in memory - or - * external entities - in which case we use the buf structure for - * progressive reading and I18N conversions to the internal UTF-8 format. - */ - -/** - * xmlParserInputDeallocate: - * @str: the string to deallocate - * - * Callback for freeing some parser input allocations. - */ -typedef void (* xmlParserInputDeallocate)(xmlChar *str); - -struct _xmlParserInput { - /* Input buffer */ - xmlParserInputBufferPtr buf; /* UTF-8 encoded buffer */ - - const char *filename; /* The file analyzed, if any */ - const char *directory; /* the directory/base of the file */ - const xmlChar *base; /* Base of the array to parse */ - const xmlChar *cur; /* Current char being parsed */ - const xmlChar *end; /* end of the array to parse */ - int length; /* length if known */ - int line; /* Current line */ - int col; /* Current column */ - /* - * NOTE: consumed is only tested for equality in the parser code, - * so even if there is an overflow this should not give troubles - * for parsing very large instances. - */ - unsigned long consumed; /* How many xmlChars already consumed */ - xmlParserInputDeallocate free; /* function to deallocate the base */ - const xmlChar *encoding; /* the encoding string for entity */ - const xmlChar *version; /* the version string for entity */ - int standalone; /* Was that entity marked standalone */ - int id; /* an unique identifier for the entity */ -}; - -/** - * xmlParserNodeInfo: - * - * The parser can be asked to collect Node informations, i.e. at what - * place in the file they were detected. - * NOTE: This is off by default and not very well tested. - */ -typedef struct _xmlParserNodeInfo xmlParserNodeInfo; -typedef xmlParserNodeInfo *xmlParserNodeInfoPtr; - -struct _xmlParserNodeInfo { - const struct _xmlNode* node; - /* Position & line # that text that created the node begins & ends on */ - unsigned long begin_pos; - unsigned long begin_line; - unsigned long end_pos; - unsigned long end_line; -}; - -typedef struct _xmlParserNodeInfoSeq xmlParserNodeInfoSeq; -typedef xmlParserNodeInfoSeq *xmlParserNodeInfoSeqPtr; -struct _xmlParserNodeInfoSeq { - unsigned long maximum; - unsigned long length; - xmlParserNodeInfo* buffer; -}; - -/** - * xmlParserInputState: - * - * The parser is now working also as a state based parser. - * The recursive one use the state info for entities processing. - */ -typedef enum { - XML_PARSER_EOF = -1, /* nothing is to be parsed */ - XML_PARSER_START = 0, /* nothing has been parsed */ - XML_PARSER_MISC, /* Misc* before int subset */ - XML_PARSER_PI, /* Within a processing instruction */ - XML_PARSER_DTD, /* within some DTD content */ - XML_PARSER_PROLOG, /* Misc* after internal subset */ - XML_PARSER_COMMENT, /* within a comment */ - XML_PARSER_START_TAG, /* within a start tag */ - XML_PARSER_CONTENT, /* within the content */ - XML_PARSER_CDATA_SECTION, /* within a CDATA section */ - XML_PARSER_END_TAG, /* within a closing tag */ - XML_PARSER_ENTITY_DECL, /* within an entity declaration */ - XML_PARSER_ENTITY_VALUE, /* within an entity value in a decl */ - XML_PARSER_ATTRIBUTE_VALUE, /* within an attribute value */ - XML_PARSER_SYSTEM_LITERAL, /* within a SYSTEM value */ - XML_PARSER_EPILOG, /* the Misc* after the last end tag */ - XML_PARSER_IGNORE, /* within an IGNORED section */ - XML_PARSER_PUBLIC_LITERAL /* within a PUBLIC value */ -} xmlParserInputState; - -/** - * XML_DETECT_IDS: - * - * Bit in the loadsubset context field to tell to do ID/REFs lookups. - * Use it to initialize xmlLoadExtDtdDefaultValue. - */ -#define XML_DETECT_IDS 2 - -/** - * XML_COMPLETE_ATTRS: - * - * Bit in the loadsubset context field to tell to do complete the - * elements attributes lists with the ones defaulted from the DTDs. - * Use it to initialize xmlLoadExtDtdDefaultValue. - */ -#define XML_COMPLETE_ATTRS 4 - -/** - * XML_SKIP_IDS: - * - * Bit in the loadsubset context field to tell to not do ID/REFs registration. - * Used to initialize xmlLoadExtDtdDefaultValue in some special cases. - */ -#define XML_SKIP_IDS 8 - -/** - * xmlParserMode: - * - * A parser can operate in various modes - */ -typedef enum { - XML_PARSE_UNKNOWN = 0, - XML_PARSE_DOM = 1, - XML_PARSE_SAX = 2, - XML_PARSE_PUSH_DOM = 3, - XML_PARSE_PUSH_SAX = 4, - XML_PARSE_READER = 5 -} xmlParserMode; - -/** - * xmlParserCtxt: - * - * The parser context. - * NOTE This doesn't completely define the parser state, the (current ?) - * design of the parser uses recursive function calls since this allow - * and easy mapping from the production rules of the specification - * to the actual code. The drawback is that the actual function call - * also reflect the parser state. However most of the parsing routines - * takes as the only argument the parser context pointer, so migrating - * to a state based parser for progressive parsing shouldn't be too hard. - */ -struct _xmlParserCtxt { - struct _xmlSAXHandler *sax; /* The SAX handler */ - void *userData; /* For SAX interface only, used by DOM build */ - xmlDocPtr myDoc; /* the document being built */ - int wellFormed; /* is the document well formed */ - int replaceEntities; /* shall we replace entities ? */ - const xmlChar *version; /* the XML version string */ - const xmlChar *encoding; /* the declared encoding, if any */ - int standalone; /* standalone document */ - int html; /* an HTML(1)/Docbook(2) document - * 3 is HTML after - * 10 is HTML after - */ - - /* Input stream stack */ - xmlParserInputPtr input; /* Current input stream */ - int inputNr; /* Number of current input streams */ - int inputMax; /* Max number of input streams */ - xmlParserInputPtr *inputTab; /* stack of inputs */ - - /* Node analysis stack only used for DOM building */ - xmlNodePtr node; /* Current parsed Node */ - int nodeNr; /* Depth of the parsing stack */ - int nodeMax; /* Max depth of the parsing stack */ - xmlNodePtr *nodeTab; /* array of nodes */ - - int record_info; /* Whether node info should be kept */ - xmlParserNodeInfoSeq node_seq; /* info about each node parsed */ - - int errNo; /* error code */ - - int hasExternalSubset; /* reference and external subset */ - int hasPErefs; /* the internal subset has PE refs */ - int external; /* are we parsing an external entity */ - - int valid; /* is the document valid */ - int validate; /* shall we try to validate ? */ - xmlValidCtxt vctxt; /* The validity context */ - - xmlParserInputState instate; /* current type of input */ - int token; /* next char look-ahead */ - - char *directory; /* the data directory */ - - /* Node name stack */ - const xmlChar *name; /* Current parsed Node */ - int nameNr; /* Depth of the parsing stack */ - int nameMax; /* Max depth of the parsing stack */ - const xmlChar * *nameTab; /* array of nodes */ - - long nbChars; /* number of xmlChar processed */ - long checkIndex; /* used by progressive parsing lookup */ - int keepBlanks; /* ugly but ... */ - int disableSAX; /* SAX callbacks are disabled */ - int inSubset; /* Parsing is in int 1/ext 2 subset */ - const xmlChar * intSubName; /* name of subset */ - xmlChar * extSubURI; /* URI of external subset */ - xmlChar * extSubSystem; /* SYSTEM ID of external subset */ - - /* xml:space values */ - int * space; /* Should the parser preserve spaces */ - int spaceNr; /* Depth of the parsing stack */ - int spaceMax; /* Max depth of the parsing stack */ - int * spaceTab; /* array of space infos */ - - int depth; /* to prevent entity substitution loops */ - xmlParserInputPtr entity; /* used to check entities boundaries */ - int charset; /* encoding of the in-memory content - actually an xmlCharEncoding */ - int nodelen; /* Those two fields are there to */ - int nodemem; /* Speed up large node parsing */ - int pedantic; /* signal pedantic warnings */ - void *_private; /* For user data, libxml won't touch it */ - - int loadsubset; /* should the external subset be loaded */ - int linenumbers; /* set line number in element content */ - void *catalogs; /* document's own catalog */ - int recovery; /* run in recovery mode */ - int progressive; /* is this a progressive parsing */ - xmlDictPtr dict; /* dictionnary for the parser */ - const xmlChar * *atts; /* array for the attributes callbacks */ - int maxatts; /* the size of the array */ - int docdict; /* use strings from dict to build tree */ - - /* - * pre-interned strings - */ - const xmlChar *str_xml; - const xmlChar *str_xmlns; - const xmlChar *str_xml_ns; - - /* - * Everything below is used only by the new SAX mode - */ - int sax2; /* operating in the new SAX mode */ - int nsNr; /* the number of inherited namespaces */ - int nsMax; /* the size of the arrays */ - const xmlChar * *nsTab; /* the array of prefix/namespace name */ - int *attallocs; /* which attribute were allocated */ - void * *pushTab; /* array of data for push */ - xmlHashTablePtr attsDefault; /* defaulted attributes if any */ - xmlHashTablePtr attsSpecial; /* non-CDATA attributes if any */ - int nsWellFormed; /* is the document XML Nanespace okay */ - int options; /* Extra options */ - - /* - * Those fields are needed only for treaming parsing so far - */ - int dictNames; /* Use dictionary names for the tree */ - int freeElemsNr; /* number of freed element nodes */ - xmlNodePtr freeElems; /* List of freed element nodes */ - int freeAttrsNr; /* number of freed attributes nodes */ - xmlAttrPtr freeAttrs; /* List of freed attributes nodes */ - - /* - * the complete error informations for the last error. - */ - xmlError lastError; - xmlParserMode parseMode; /* the parser mode */ - unsigned long nbentities; /* number of entities references */ - unsigned long sizeentities; /* size of parsed entities */ - - /* for use by HTML non-recursive parser */ - xmlParserNodeInfo *nodeInfo; /* Current NodeInfo */ - int nodeInfoNr; /* Depth of the parsing stack */ - int nodeInfoMax; /* Max depth of the parsing stack */ - xmlParserNodeInfo *nodeInfoTab; /* array of nodeInfos */ - - int input_id; /* we need to label inputs */ - unsigned long sizeentcopy; /* volume of entity copy */ -}; - -/** - * xmlSAXLocator: - * - * A SAX Locator. - */ -struct _xmlSAXLocator { - const xmlChar *(*getPublicId)(void *ctx); - const xmlChar *(*getSystemId)(void *ctx); - int (*getLineNumber)(void *ctx); - int (*getColumnNumber)(void *ctx); -}; - -/** - * xmlSAXHandler: - * - * A SAX handler is bunch of callbacks called by the parser when processing - * of the input generate data or structure informations. - */ - -/** - * resolveEntitySAXFunc: - * @ctx: the user data (XML parser context) - * @publicId: The public ID of the entity - * @systemId: The system ID of the entity - * - * Callback: - * 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 - * - * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour. - */ -typedef xmlParserInputPtr (*resolveEntitySAXFunc) (void *ctx, - const xmlChar *publicId, - const xmlChar *systemId); -/** - * internalSubsetSAXFunc: - * @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. - */ -typedef void (*internalSubsetSAXFunc) (void *ctx, - const xmlChar *name, - const xmlChar *ExternalID, - const xmlChar *SystemID); -/** - * externalSubsetSAXFunc: - * @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. - */ -typedef void (*externalSubsetSAXFunc) (void *ctx, - const xmlChar *name, - const xmlChar *ExternalID, - const xmlChar *SystemID); -/** - * getEntitySAXFunc: - * @ctx: the user data (XML parser context) - * @name: The entity name - * - * Get an entity by name. - * - * Returns the xmlEntityPtr if found. - */ -typedef xmlEntityPtr (*getEntitySAXFunc) (void *ctx, - const xmlChar *name); -/** - * getParameterEntitySAXFunc: - * @ctx: the user data (XML parser context) - * @name: The entity name - * - * Get a parameter entity by name. - * - * Returns the xmlEntityPtr if found. - */ -typedef xmlEntityPtr (*getParameterEntitySAXFunc) (void *ctx, - const xmlChar *name); -/** - * entityDeclSAXFunc: - * @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. - */ -typedef void (*entityDeclSAXFunc) (void *ctx, - const xmlChar *name, - int type, - const xmlChar *publicId, - const xmlChar *systemId, - xmlChar *content); -/** - * notationDeclSAXFunc: - * @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. - */ -typedef void (*notationDeclSAXFunc)(void *ctx, - const xmlChar *name, - const xmlChar *publicId, - const xmlChar *systemId); -/** - * attributeDeclSAXFunc: - * @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. - */ -typedef void (*attributeDeclSAXFunc)(void *ctx, - const xmlChar *elem, - const xmlChar *fullname, - int type, - int def, - const xmlChar *defaultValue, - xmlEnumerationPtr tree); -/** - * elementDeclSAXFunc: - * @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. - */ -typedef void (*elementDeclSAXFunc)(void *ctx, - const xmlChar *name, - int type, - xmlElementContentPtr content); -/** - * unparsedEntityDeclSAXFunc: - * @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. - */ -typedef void (*unparsedEntityDeclSAXFunc)(void *ctx, - const xmlChar *name, - const xmlChar *publicId, - const xmlChar *systemId, - const xmlChar *notationName); -/** - * setDocumentLocatorSAXFunc: - * @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. - */ -typedef void (*setDocumentLocatorSAXFunc) (void *ctx, - xmlSAXLocatorPtr loc); -/** - * startDocumentSAXFunc: - * @ctx: the user data (XML parser context) - * - * Called when the document start being processed. - */ -typedef void (*startDocumentSAXFunc) (void *ctx); -/** - * endDocumentSAXFunc: - * @ctx: the user data (XML parser context) - * - * Called when the document end has been detected. - */ -typedef void (*endDocumentSAXFunc) (void *ctx); -/** - * startElementSAXFunc: - * @ctx: the user data (XML parser context) - * @name: The element name, including namespace prefix - * @atts: An array of name/value attributes pairs, NULL terminated - * - * Called when an opening tag has been processed. - */ -typedef void (*startElementSAXFunc) (void *ctx, - const xmlChar *name, - const xmlChar **atts); -/** - * endElementSAXFunc: - * @ctx: the user data (XML parser context) - * @name: The element name - * - * Called when the end of an element has been detected. - */ -typedef void (*endElementSAXFunc) (void *ctx, - const xmlChar *name); -/** - * attributeSAXFunc: - * @ctx: the user data (XML parser context) - * @name: 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. - */ -typedef void (*attributeSAXFunc) (void *ctx, - const xmlChar *name, - const xmlChar *value); -/** - * referenceSAXFunc: - * @ctx: the user data (XML parser context) - * @name: The entity name - * - * Called when an entity reference is detected. - */ -typedef void (*referenceSAXFunc) (void *ctx, - const xmlChar *name); -/** - * charactersSAXFunc: - * @ctx: the user data (XML parser context) - * @ch: a xmlChar string - * @len: the number of xmlChar - * - * Receiving some chars from the parser. - */ -typedef void (*charactersSAXFunc) (void *ctx, - const xmlChar *ch, - int len); -/** - * ignorableWhitespaceSAXFunc: - * @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. - */ -typedef void (*ignorableWhitespaceSAXFunc) (void *ctx, - const xmlChar *ch, - int len); -/** - * processingInstructionSAXFunc: - * @ctx: the user data (XML parser context) - * @target: the target name - * @data: the PI data's - * - * A processing instruction has been parsed. - */ -typedef void (*processingInstructionSAXFunc) (void *ctx, - const xmlChar *target, - const xmlChar *data); -/** - * commentSAXFunc: - * @ctx: the user data (XML parser context) - * @value: the comment content - * - * A comment has been parsed. - */ -typedef void (*commentSAXFunc) (void *ctx, - const xmlChar *value); -/** - * cdataBlockSAXFunc: - * @ctx: the user data (XML parser context) - * @value: The pcdata content - * @len: the block length - * - * Called when a pcdata block has been parsed. - */ -typedef void (*cdataBlockSAXFunc) ( - void *ctx, - const xmlChar *value, - int len); -/** - * warningSAXFunc: - * @ctx: an XML parser context - * @msg: the message to display/transmit - * @...: extra parameters for the message display - * - * Display and format a warning messages, callback. - */ -typedef void (XMLCDECL *warningSAXFunc) (void *ctx, - const char *msg, ...) LIBXML_ATTR_FORMAT(2,3); -/** - * errorSAXFunc: - * @ctx: an XML parser context - * @msg: the message to display/transmit - * @...: extra parameters for the message display - * - * Display and format an error messages, callback. - */ -typedef void (XMLCDECL *errorSAXFunc) (void *ctx, - const char *msg, ...) LIBXML_ATTR_FORMAT(2,3); -/** - * fatalErrorSAXFunc: - * @ctx: an XML parser context - * @msg: the message to display/transmit - * @...: extra parameters for the message display - * - * Display and format fatal error messages, callback. - * Note: so far fatalError() SAX callbacks are not used, error() - * get all the callbacks for errors. - */ -typedef void (XMLCDECL *fatalErrorSAXFunc) (void *ctx, - const char *msg, ...) LIBXML_ATTR_FORMAT(2,3); -/** - * isStandaloneSAXFunc: - * @ctx: the user data (XML parser context) - * - * Is this document tagged standalone? - * - * Returns 1 if true - */ -typedef int (*isStandaloneSAXFunc) (void *ctx); -/** - * hasInternalSubsetSAXFunc: - * @ctx: the user data (XML parser context) - * - * Does this document has an internal subset. - * - * Returns 1 if true - */ -typedef int (*hasInternalSubsetSAXFunc) (void *ctx); - -/** - * hasExternalSubsetSAXFunc: - * @ctx: the user data (XML parser context) - * - * Does this document has an external subset? - * - * Returns 1 if true - */ -typedef int (*hasExternalSubsetSAXFunc) (void *ctx); - -/************************************************************************ - * * - * The SAX version 2 API extensions * - * * - ************************************************************************/ -/** - * XML_SAX2_MAGIC: - * - * Special constant found in SAX2 blocks initialized fields - */ -#define XML_SAX2_MAGIC 0xDEEDBEAF - -/** - * startElementNsSAX2Func: - * @ctx: the user data (XML parser context) - * @localname: the local name of the element - * @prefix: the element namespace prefix if available - * @URI: the element namespace name if available - * @nb_namespaces: number of namespace definitions on that node - * @namespaces: pointer to the array of prefix/URI pairs namespace definitions - * @nb_attributes: the number of attributes on that node - * @nb_defaulted: the number of defaulted attributes. The defaulted - * ones are at the end of the array - * @attributes: pointer to the array of (localname/prefix/URI/value/end) - * attribute values. - * - * SAX2 callback when an element start has been detected by the parser. - * It provides the namespace informations for the element, as well as - * the new namespace declarations on the element. - */ - -typedef 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); - -/** - * endElementNsSAX2Func: - * @ctx: the user data (XML parser context) - * @localname: the local name of the element - * @prefix: the element namespace prefix if available - * @URI: the element namespace name if available - * - * SAX2 callback when an element end has been detected by the parser. - * It provides the namespace informations for the element. - */ - -typedef void (*endElementNsSAX2Func) (void *ctx, - const xmlChar *localname, - const xmlChar *prefix, - const xmlChar *URI); - - -struct _xmlSAXHandler { - internalSubsetSAXFunc internalSubset; - isStandaloneSAXFunc isStandalone; - hasInternalSubsetSAXFunc hasInternalSubset; - hasExternalSubsetSAXFunc hasExternalSubset; - resolveEntitySAXFunc resolveEntity; - getEntitySAXFunc getEntity; - entityDeclSAXFunc entityDecl; - notationDeclSAXFunc notationDecl; - attributeDeclSAXFunc attributeDecl; - elementDeclSAXFunc elementDecl; - unparsedEntityDeclSAXFunc unparsedEntityDecl; - setDocumentLocatorSAXFunc setDocumentLocator; - startDocumentSAXFunc startDocument; - endDocumentSAXFunc endDocument; - startElementSAXFunc startElement; - endElementSAXFunc endElement; - referenceSAXFunc reference; - charactersSAXFunc characters; - ignorableWhitespaceSAXFunc ignorableWhitespace; - processingInstructionSAXFunc processingInstruction; - commentSAXFunc comment; - warningSAXFunc warning; - errorSAXFunc error; - fatalErrorSAXFunc fatalError; /* unused error() get all the errors */ - getParameterEntitySAXFunc getParameterEntity; - cdataBlockSAXFunc cdataBlock; - externalSubsetSAXFunc externalSubset; - unsigned int initialized; - /* The following fields are extensions available only on version 2 */ - void *_private; - startElementNsSAX2Func startElementNs; - endElementNsSAX2Func endElementNs; - xmlStructuredErrorFunc serror; -}; - -/* - * SAX Version 1 - */ -typedef struct _xmlSAXHandlerV1 xmlSAXHandlerV1; -typedef xmlSAXHandlerV1 *xmlSAXHandlerV1Ptr; -struct _xmlSAXHandlerV1 { - internalSubsetSAXFunc internalSubset; - isStandaloneSAXFunc isStandalone; - hasInternalSubsetSAXFunc hasInternalSubset; - hasExternalSubsetSAXFunc hasExternalSubset; - resolveEntitySAXFunc resolveEntity; - getEntitySAXFunc getEntity; - entityDeclSAXFunc entityDecl; - notationDeclSAXFunc notationDecl; - attributeDeclSAXFunc attributeDecl; - elementDeclSAXFunc elementDecl; - unparsedEntityDeclSAXFunc unparsedEntityDecl; - setDocumentLocatorSAXFunc setDocumentLocator; - startDocumentSAXFunc startDocument; - endDocumentSAXFunc endDocument; - startElementSAXFunc startElement; - endElementSAXFunc endElement; - referenceSAXFunc reference; - charactersSAXFunc characters; - ignorableWhitespaceSAXFunc ignorableWhitespace; - processingInstructionSAXFunc processingInstruction; - commentSAXFunc comment; - warningSAXFunc warning; - errorSAXFunc error; - fatalErrorSAXFunc fatalError; /* unused error() get all the errors */ - getParameterEntitySAXFunc getParameterEntity; - cdataBlockSAXFunc cdataBlock; - externalSubsetSAXFunc externalSubset; - unsigned int initialized; -}; - - -/** - * xmlExternalEntityLoader: - * @URL: The System ID of the resource requested - * @ID: The Public ID of the resource requested - * @context: the XML parser context - * - * External entity loaders types. - * - * Returns the entity input parser. - */ -typedef xmlParserInputPtr (*xmlExternalEntityLoader) (const char *URL, - const char *ID, - xmlParserCtxtPtr context); - -#ifdef __cplusplus -} -#endif - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - - -/* - * Init/Cleanup - */ -XMLPUBFUN void XMLCALL - xmlInitParser (void); -XMLPUBFUN void XMLCALL - xmlCleanupParser (void); - -/* - * Input functions - */ -XMLPUBFUN int XMLCALL - xmlParserInputRead (xmlParserInputPtr in, - int len); -XMLPUBFUN int XMLCALL - xmlParserInputGrow (xmlParserInputPtr in, - int len); - -/* - * Basic parsing Interfaces - */ -#ifdef LIBXML_SAX1_ENABLED -XMLPUBFUN xmlDocPtr XMLCALL - xmlParseDoc (const xmlChar *cur); -XMLPUBFUN xmlDocPtr XMLCALL - xmlParseFile (const char *filename); -XMLPUBFUN xmlDocPtr XMLCALL - xmlParseMemory (const char *buffer, - int size); -#endif /* LIBXML_SAX1_ENABLED */ -XMLPUBFUN int XMLCALL - xmlSubstituteEntitiesDefault(int val); -XMLPUBFUN int XMLCALL - xmlKeepBlanksDefault (int val); -XMLPUBFUN void XMLCALL - xmlStopParser (xmlParserCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlPedanticParserDefault(int val); -XMLPUBFUN int XMLCALL - xmlLineNumbersDefault (int val); - -#ifdef LIBXML_SAX1_ENABLED -/* - * Recovery mode - */ -XMLPUBFUN xmlDocPtr XMLCALL - xmlRecoverDoc (const xmlChar *cur); -XMLPUBFUN xmlDocPtr XMLCALL - xmlRecoverMemory (const char *buffer, - int size); -XMLPUBFUN xmlDocPtr XMLCALL - xmlRecoverFile (const char *filename); -#endif /* LIBXML_SAX1_ENABLED */ - -/* - * Less common routines and SAX interfaces - */ -XMLPUBFUN int XMLCALL - xmlParseDocument (xmlParserCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlParseExtParsedEnt (xmlParserCtxtPtr ctxt); -#ifdef LIBXML_SAX1_ENABLED -XMLPUBFUN int XMLCALL - xmlSAXUserParseFile (xmlSAXHandlerPtr sax, - void *user_data, - const char *filename); -XMLPUBFUN int XMLCALL - xmlSAXUserParseMemory (xmlSAXHandlerPtr sax, - void *user_data, - const char *buffer, - int size); -XMLPUBFUN xmlDocPtr XMLCALL - xmlSAXParseDoc (xmlSAXHandlerPtr sax, - const xmlChar *cur, - int recovery); -XMLPUBFUN xmlDocPtr XMLCALL - xmlSAXParseMemory (xmlSAXHandlerPtr sax, - const char *buffer, - int size, - int recovery); -XMLPUBFUN xmlDocPtr XMLCALL - xmlSAXParseMemoryWithData (xmlSAXHandlerPtr sax, - const char *buffer, - int size, - int recovery, - void *data); -XMLPUBFUN xmlDocPtr XMLCALL - xmlSAXParseFile (xmlSAXHandlerPtr sax, - const char *filename, - int recovery); -XMLPUBFUN xmlDocPtr XMLCALL - xmlSAXParseFileWithData (xmlSAXHandlerPtr sax, - const char *filename, - int recovery, - void *data); -XMLPUBFUN xmlDocPtr XMLCALL - xmlSAXParseEntity (xmlSAXHandlerPtr sax, - const char *filename); -XMLPUBFUN xmlDocPtr XMLCALL - xmlParseEntity (const char *filename); -#endif /* LIBXML_SAX1_ENABLED */ - -#ifdef LIBXML_VALID_ENABLED -XMLPUBFUN xmlDtdPtr XMLCALL - xmlSAXParseDTD (xmlSAXHandlerPtr sax, - const xmlChar *ExternalID, - const xmlChar *SystemID); -XMLPUBFUN xmlDtdPtr XMLCALL - xmlParseDTD (const xmlChar *ExternalID, - const xmlChar *SystemID); -XMLPUBFUN xmlDtdPtr XMLCALL - xmlIOParseDTD (xmlSAXHandlerPtr sax, - xmlParserInputBufferPtr input, - xmlCharEncoding enc); -#endif /* LIBXML_VALID_ENABLE */ -#ifdef LIBXML_SAX1_ENABLED -XMLPUBFUN int XMLCALL - xmlParseBalancedChunkMemory(xmlDocPtr doc, - xmlSAXHandlerPtr sax, - void *user_data, - int depth, - const xmlChar *string, - xmlNodePtr *lst); -#endif /* LIBXML_SAX1_ENABLED */ -XMLPUBFUN xmlParserErrors XMLCALL - xmlParseInNodeContext (xmlNodePtr node, - const char *data, - int datalen, - int options, - xmlNodePtr *lst); -#ifdef LIBXML_SAX1_ENABLED -XMLPUBFUN int XMLCALL - xmlParseBalancedChunkMemoryRecover(xmlDocPtr doc, - xmlSAXHandlerPtr sax, - void *user_data, - int depth, - const xmlChar *string, - xmlNodePtr *lst, - int recover); -XMLPUBFUN int XMLCALL - xmlParseExternalEntity (xmlDocPtr doc, - xmlSAXHandlerPtr sax, - void *user_data, - int depth, - const xmlChar *URL, - const xmlChar *ID, - xmlNodePtr *lst); -#endif /* LIBXML_SAX1_ENABLED */ -XMLPUBFUN int XMLCALL - xmlParseCtxtExternalEntity(xmlParserCtxtPtr ctx, - const xmlChar *URL, - const xmlChar *ID, - xmlNodePtr *lst); - -/* - * Parser contexts handling. - */ -XMLPUBFUN xmlParserCtxtPtr XMLCALL - xmlNewParserCtxt (void); -XMLPUBFUN int XMLCALL - xmlInitParserCtxt (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlClearParserCtxt (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlFreeParserCtxt (xmlParserCtxtPtr ctxt); -#ifdef LIBXML_SAX1_ENABLED -XMLPUBFUN void XMLCALL - xmlSetupParserForBuffer (xmlParserCtxtPtr ctxt, - const xmlChar* buffer, - const char *filename); -#endif /* LIBXML_SAX1_ENABLED */ -XMLPUBFUN xmlParserCtxtPtr XMLCALL - xmlCreateDocParserCtxt (const xmlChar *cur); - -#ifdef LIBXML_LEGACY_ENABLED -/* - * Reading/setting optional parsing features. - */ -XMLPUBFUN int XMLCALL - xmlGetFeaturesList (int *len, - const char **result); -XMLPUBFUN int XMLCALL - xmlGetFeature (xmlParserCtxtPtr ctxt, - const char *name, - void *result); -XMLPUBFUN int XMLCALL - xmlSetFeature (xmlParserCtxtPtr ctxt, - const char *name, - void *value); -#endif /* LIBXML_LEGACY_ENABLED */ - -#ifdef LIBXML_PUSH_ENABLED -/* - * Interfaces for the Push mode. - */ -XMLPUBFUN xmlParserCtxtPtr XMLCALL - xmlCreatePushParserCtxt(xmlSAXHandlerPtr sax, - void *user_data, - const char *chunk, - int size, - const char *filename); -XMLPUBFUN int XMLCALL - xmlParseChunk (xmlParserCtxtPtr ctxt, - const char *chunk, - int size, - int terminate); -#endif /* LIBXML_PUSH_ENABLED */ - -/* - * Special I/O mode. - */ - -XMLPUBFUN xmlParserCtxtPtr XMLCALL - xmlCreateIOParserCtxt (xmlSAXHandlerPtr sax, - void *user_data, - xmlInputReadCallback ioread, - xmlInputCloseCallback ioclose, - void *ioctx, - xmlCharEncoding enc); - -XMLPUBFUN xmlParserInputPtr XMLCALL - xmlNewIOInputStream (xmlParserCtxtPtr ctxt, - xmlParserInputBufferPtr input, - xmlCharEncoding enc); - -/* - * Node infos. - */ -XMLPUBFUN const xmlParserNodeInfo* XMLCALL - xmlParserFindNodeInfo (const xmlParserCtxtPtr ctxt, - const xmlNodePtr node); -XMLPUBFUN void XMLCALL - xmlInitNodeInfoSeq (xmlParserNodeInfoSeqPtr seq); -XMLPUBFUN void XMLCALL - xmlClearNodeInfoSeq (xmlParserNodeInfoSeqPtr seq); -XMLPUBFUN unsigned long XMLCALL - xmlParserFindNodeInfoIndex(const xmlParserNodeInfoSeqPtr seq, - const xmlNodePtr node); -XMLPUBFUN void XMLCALL - xmlParserAddNodeInfo (xmlParserCtxtPtr ctxt, - const xmlParserNodeInfoPtr info); - -/* - * External entities handling actually implemented in xmlIO. - */ - -XMLPUBFUN void XMLCALL - xmlSetExternalEntityLoader(xmlExternalEntityLoader f); -XMLPUBFUN xmlExternalEntityLoader XMLCALL - xmlGetExternalEntityLoader(void); -XMLPUBFUN xmlParserInputPtr XMLCALL - xmlLoadExternalEntity (const char *URL, - const char *ID, - xmlParserCtxtPtr ctxt); - -/* - * Index lookup, actually implemented in the encoding module - */ -XMLPUBFUN long XMLCALL - xmlByteConsumed (xmlParserCtxtPtr ctxt); - -/* - * New set of simpler/more flexible APIs - */ -/** - * xmlParserOption: - * - * This is the set of XML parser options that can be passed down - * to the xmlReadDoc() and similar calls. - */ -typedef enum { - XML_PARSE_RECOVER = 1<<0, /* recover on errors */ - XML_PARSE_NOENT = 1<<1, /* substitute entities */ - XML_PARSE_DTDLOAD = 1<<2, /* load the external subset */ - XML_PARSE_DTDATTR = 1<<3, /* default DTD attributes */ - XML_PARSE_DTDVALID = 1<<4, /* validate with the DTD */ - XML_PARSE_NOERROR = 1<<5, /* suppress error reports */ - XML_PARSE_NOWARNING = 1<<6, /* suppress warning reports */ - XML_PARSE_PEDANTIC = 1<<7, /* pedantic error reporting */ - XML_PARSE_NOBLANKS = 1<<8, /* remove blank nodes */ - XML_PARSE_SAX1 = 1<<9, /* use the SAX1 interface internally */ - XML_PARSE_XINCLUDE = 1<<10,/* Implement XInclude substitition */ - XML_PARSE_NONET = 1<<11,/* Forbid network access */ - XML_PARSE_NODICT = 1<<12,/* Do not reuse the context dictionnary */ - XML_PARSE_NSCLEAN = 1<<13,/* remove redundant namespaces declarations */ - XML_PARSE_NOCDATA = 1<<14,/* merge CDATA as text nodes */ - XML_PARSE_NOXINCNODE= 1<<15,/* do not generate XINCLUDE START/END nodes */ - XML_PARSE_COMPACT = 1<<16,/* compact small text nodes; no modification of - the tree allowed afterwards (will possibly - crash if you try to modify the tree) */ - XML_PARSE_OLD10 = 1<<17,/* parse using XML-1.0 before update 5 */ - XML_PARSE_NOBASEFIX = 1<<18,/* do not fixup XINCLUDE xml:base uris */ - XML_PARSE_HUGE = 1<<19,/* relax any hardcoded limit from the parser */ - XML_PARSE_OLDSAX = 1<<20,/* parse using SAX2 interface before 2.7.0 */ - XML_PARSE_IGNORE_ENC= 1<<21,/* ignore internal document encoding hint */ - XML_PARSE_BIG_LINES = 1<<22 /* Store big lines numbers in text PSVI field */ -} xmlParserOption; - -XMLPUBFUN void XMLCALL - xmlCtxtReset (xmlParserCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlCtxtResetPush (xmlParserCtxtPtr ctxt, - const char *chunk, - int size, - const char *filename, - const char *encoding); -XMLPUBFUN int XMLCALL - xmlCtxtUseOptions (xmlParserCtxtPtr ctxt, - int options); -XMLPUBFUN xmlDocPtr XMLCALL - xmlReadDoc (const xmlChar *cur, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN xmlDocPtr XMLCALL - xmlReadFile (const char *URL, - const char *encoding, - int options); -XMLPUBFUN xmlDocPtr XMLCALL - xmlReadMemory (const char *buffer, - int size, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN xmlDocPtr XMLCALL - xmlReadFd (int fd, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN xmlDocPtr XMLCALL - xmlReadIO (xmlInputReadCallback ioread, - xmlInputCloseCallback ioclose, - void *ioctx, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN xmlDocPtr XMLCALL - xmlCtxtReadDoc (xmlParserCtxtPtr ctxt, - const xmlChar *cur, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN xmlDocPtr XMLCALL - xmlCtxtReadFile (xmlParserCtxtPtr ctxt, - const char *filename, - const char *encoding, - int options); -XMLPUBFUN xmlDocPtr XMLCALL - xmlCtxtReadMemory (xmlParserCtxtPtr ctxt, - const char *buffer, - int size, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN xmlDocPtr XMLCALL - xmlCtxtReadFd (xmlParserCtxtPtr ctxt, - int fd, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN xmlDocPtr XMLCALL - xmlCtxtReadIO (xmlParserCtxtPtr ctxt, - xmlInputReadCallback ioread, - xmlInputCloseCallback ioclose, - void *ioctx, - const char *URL, - const char *encoding, - int options); - -/* - * Library wide options - */ -/** - * xmlFeature: - * - * Used to examine the existance of features that can be enabled - * or disabled at compile-time. - * They used to be called XML_FEATURE_xxx but this clashed with Expat - */ -typedef enum { - XML_WITH_THREAD = 1, - XML_WITH_TREE = 2, - XML_WITH_OUTPUT = 3, - XML_WITH_PUSH = 4, - XML_WITH_READER = 5, - XML_WITH_PATTERN = 6, - XML_WITH_WRITER = 7, - XML_WITH_SAX1 = 8, - XML_WITH_FTP = 9, - XML_WITH_HTTP = 10, - XML_WITH_VALID = 11, - XML_WITH_HTML = 12, - XML_WITH_LEGACY = 13, - XML_WITH_C14N = 14, - XML_WITH_CATALOG = 15, - XML_WITH_XPATH = 16, - XML_WITH_XPTR = 17, - XML_WITH_XINCLUDE = 18, - XML_WITH_ICONV = 19, - XML_WITH_ISO8859X = 20, - XML_WITH_UNICODE = 21, - XML_WITH_REGEXP = 22, - XML_WITH_AUTOMATA = 23, - XML_WITH_EXPR = 24, - XML_WITH_SCHEMAS = 25, - XML_WITH_SCHEMATRON = 26, - XML_WITH_MODULES = 27, - XML_WITH_DEBUG = 28, - XML_WITH_DEBUG_MEM = 29, - XML_WITH_DEBUG_RUN = 30, - XML_WITH_ZLIB = 31, - XML_WITH_ICU = 32, - XML_WITH_LZMA = 33, - XML_WITH_NONE = 99999 /* just to be sure of allocation size */ -} xmlFeature; - -XMLPUBFUN int XMLCALL - xmlHasFeature (xmlFeature feature); - -#ifdef __cplusplus -} -#endif -#endif /* __XML_PARSER_H__ */ diff --git a/cache/include/libxml/parserInternals.h b/cache/include/libxml/parserInternals.h deleted file mode 100644 index 6065320..0000000 --- a/cache/include/libxml/parserInternals.h +++ /dev/null @@ -1,644 +0,0 @@ -/* - * Summary: internals routines and limits exported by the parser. - * Description: this module exports a number of internal parsing routines - * they are not really all intended for applications but - * can prove useful doing low level processing. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_PARSER_INTERNALS_H__ -#define __XML_PARSER_INTERNALS_H__ - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * xmlParserMaxDepth: - * - * arbitrary depth limit for the XML documents that we allow to - * process. This is not a limitation of the parser but a safety - * boundary feature, use XML_PARSE_HUGE option to override it. - */ -XMLPUBVAR unsigned int xmlParserMaxDepth; - -/** - * XML_MAX_TEXT_LENGTH: - * - * Maximum size allowed for a single text node when building a tree. - * This is not a limitation of the parser but a safety boundary feature, - * use XML_PARSE_HUGE option to override it. - * Introduced in 2.9.0 - */ -#define XML_MAX_TEXT_LENGTH 10000000 - -/** - * XML_MAX_NAME_LENGTH: - * - * Maximum size allowed for a markup identitier - * This is not a limitation of the parser but a safety boundary feature, - * use XML_PARSE_HUGE option to override it. - * Note that with the use of parsing dictionaries overriding the limit - * may result in more runtime memory usage in face of "unfriendly' content - * Introduced in 2.9.0 - */ -#define XML_MAX_NAME_LENGTH 50000 - -/** - * XML_MAX_DICTIONARY_LIMIT: - * - * Maximum size allowed by the parser for a dictionary by default - * This is not a limitation of the parser but a safety boundary feature, - * use XML_PARSE_HUGE option to override it. - * Introduced in 2.9.0 - */ -#define XML_MAX_DICTIONARY_LIMIT 10000000 - -/** - * XML_MAX_LOOKUP_LIMIT: - * - * Maximum size allowed by the parser for ahead lookup - * This is an upper boundary enforced by the parser to avoid bad - * behaviour on "unfriendly' content - * Introduced in 2.9.0 - */ -#define XML_MAX_LOOKUP_LIMIT 10000000 - -/** - * XML_MAX_NAMELEN: - * - * Identifiers can be longer, but this will be more costly - * at runtime. - */ -#define XML_MAX_NAMELEN 100 - -/** - * INPUT_CHUNK: - * - * The parser tries to always have that amount of input ready. - * One of the point is providing context when reporting errors. - */ -#define INPUT_CHUNK 250 - -/************************************************************************ - * * - * UNICODE version of the macros. * - * * - ************************************************************************/ -/** - * IS_BYTE_CHAR: - * @c: an byte value (int) - * - * Macro to check the following production in the XML spec: - * - * [2] Char ::= #x9 | #xA | #xD | [#x20...] - * any byte character in the accepted range - */ -#define IS_BYTE_CHAR(c) xmlIsChar_ch(c) - -/** - * IS_CHAR: - * @c: an UNICODE value (int) - * - * Macro to check the following production in the XML spec: - * - * [2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] - * | [#x10000-#x10FFFF] - * any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. - */ -#define IS_CHAR(c) xmlIsCharQ(c) - -/** - * IS_CHAR_CH: - * @c: an xmlChar (usually an unsigned char) - * - * Behaves like IS_CHAR on single-byte value - */ -#define IS_CHAR_CH(c) xmlIsChar_ch(c) - -/** - * IS_BLANK: - * @c: an UNICODE value (int) - * - * Macro to check the following production in the XML spec: - * - * [3] S ::= (#x20 | #x9 | #xD | #xA)+ - */ -#define IS_BLANK(c) xmlIsBlankQ(c) - -/** - * IS_BLANK_CH: - * @c: an xmlChar value (normally unsigned char) - * - * Behaviour same as IS_BLANK - */ -#define IS_BLANK_CH(c) xmlIsBlank_ch(c) - -/** - * IS_BASECHAR: - * @c: an UNICODE value (int) - * - * Macro to check the following production in the XML spec: - * - * [85] BaseChar ::= ... long list see REC ... - */ -#define IS_BASECHAR(c) xmlIsBaseCharQ(c) - -/** - * IS_DIGIT: - * @c: an UNICODE value (int) - * - * Macro to check the following production in the XML spec: - * - * [88] Digit ::= ... long list see REC ... - */ -#define IS_DIGIT(c) xmlIsDigitQ(c) - -/** - * IS_DIGIT_CH: - * @c: an xmlChar value (usually an unsigned char) - * - * Behaves like IS_DIGIT but with a single byte argument - */ -#define IS_DIGIT_CH(c) xmlIsDigit_ch(c) - -/** - * IS_COMBINING: - * @c: an UNICODE value (int) - * - * Macro to check the following production in the XML spec: - * - * [87] CombiningChar ::= ... long list see REC ... - */ -#define IS_COMBINING(c) xmlIsCombiningQ(c) - -/** - * IS_COMBINING_CH: - * @c: an xmlChar (usually an unsigned char) - * - * Always false (all combining chars > 0xff) - */ -#define IS_COMBINING_CH(c) 0 - -/** - * IS_EXTENDER: - * @c: an UNICODE value (int) - * - * Macro to check the following production in the XML spec: - * - * - * [89] Extender ::= #x00B7 | #x02D0 | #x02D1 | #x0387 | #x0640 | - * #x0E46 | #x0EC6 | #x3005 | [#x3031-#x3035] | - * [#x309D-#x309E] | [#x30FC-#x30FE] - */ -#define IS_EXTENDER(c) xmlIsExtenderQ(c) - -/** - * IS_EXTENDER_CH: - * @c: an xmlChar value (usually an unsigned char) - * - * Behaves like IS_EXTENDER but with a single-byte argument - */ -#define IS_EXTENDER_CH(c) xmlIsExtender_ch(c) - -/** - * IS_IDEOGRAPHIC: - * @c: an UNICODE value (int) - * - * Macro to check the following production in the XML spec: - * - * - * [86] Ideographic ::= [#x4E00-#x9FA5] | #x3007 | [#x3021-#x3029] - */ -#define IS_IDEOGRAPHIC(c) xmlIsIdeographicQ(c) - -/** - * IS_LETTER: - * @c: an UNICODE value (int) - * - * Macro to check the following production in the XML spec: - * - * - * [84] Letter ::= BaseChar | Ideographic - */ -#define IS_LETTER(c) (IS_BASECHAR(c) || IS_IDEOGRAPHIC(c)) - -/** - * IS_LETTER_CH: - * @c: an xmlChar value (normally unsigned char) - * - * Macro behaves like IS_LETTER, but only check base chars - * - */ -#define IS_LETTER_CH(c) xmlIsBaseChar_ch(c) - -/** - * IS_ASCII_LETTER: - * @c: an xmlChar value - * - * Macro to check [a-zA-Z] - * - */ -#define IS_ASCII_LETTER(c) (((0x41 <= (c)) && ((c) <= 0x5a)) || \ - ((0x61 <= (c)) && ((c) <= 0x7a))) - -/** - * IS_ASCII_DIGIT: - * @c: an xmlChar value - * - * Macro to check [0-9] - * - */ -#define IS_ASCII_DIGIT(c) ((0x30 <= (c)) && ((c) <= 0x39)) - -/** - * IS_PUBIDCHAR: - * @c: an UNICODE value (int) - * - * Macro to check the following production in the XML spec: - * - * - * [13] PubidChar ::= #x20 | #xD | #xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%] - */ -#define IS_PUBIDCHAR(c) xmlIsPubidCharQ(c) - -/** - * IS_PUBIDCHAR_CH: - * @c: an xmlChar value (normally unsigned char) - * - * Same as IS_PUBIDCHAR but for single-byte value - */ -#define IS_PUBIDCHAR_CH(c) xmlIsPubidChar_ch(c) - -/** - * SKIP_EOL: - * @p: and UTF8 string pointer - * - * Skips the end of line chars. - */ -#define SKIP_EOL(p) \ - if (*(p) == 0x13) { p++ ; if (*(p) == 0x10) p++; } \ - if (*(p) == 0x10) { p++ ; if (*(p) == 0x13) p++; } - -/** - * MOVETO_ENDTAG: - * @p: and UTF8 string pointer - * - * Skips to the next '>' char. - */ -#define MOVETO_ENDTAG(p) \ - while ((*p) && (*(p) != '>')) (p)++ - -/** - * MOVETO_STARTTAG: - * @p: and UTF8 string pointer - * - * Skips to the next '<' char. - */ -#define MOVETO_STARTTAG(p) \ - while ((*p) && (*(p) != '<')) (p)++ - -/** - * Global variables used for predefined strings. - */ -XMLPUBVAR const xmlChar xmlStringText[]; -XMLPUBVAR const xmlChar xmlStringTextNoenc[]; -XMLPUBVAR const xmlChar xmlStringComment[]; - -/* - * Function to finish the work of the macros where needed. - */ -XMLPUBFUN int XMLCALL xmlIsLetter (int c); - -/** - * Parser context. - */ -XMLPUBFUN xmlParserCtxtPtr XMLCALL - xmlCreateFileParserCtxt (const char *filename); -XMLPUBFUN xmlParserCtxtPtr XMLCALL - xmlCreateURLParserCtxt (const char *filename, - int options); -XMLPUBFUN xmlParserCtxtPtr XMLCALL - xmlCreateMemoryParserCtxt(const char *buffer, - int size); -XMLPUBFUN xmlParserCtxtPtr XMLCALL - xmlCreateEntityParserCtxt(const xmlChar *URL, - const xmlChar *ID, - const xmlChar *base); -XMLPUBFUN int XMLCALL - xmlSwitchEncoding (xmlParserCtxtPtr ctxt, - xmlCharEncoding enc); -XMLPUBFUN int XMLCALL - xmlSwitchToEncoding (xmlParserCtxtPtr ctxt, - xmlCharEncodingHandlerPtr handler); -XMLPUBFUN int XMLCALL - xmlSwitchInputEncoding (xmlParserCtxtPtr ctxt, - xmlParserInputPtr input, - xmlCharEncodingHandlerPtr handler); - -#ifdef IN_LIBXML -/* internal error reporting */ -XMLPUBFUN void XMLCALL - __xmlErrEncoding (xmlParserCtxtPtr ctxt, - xmlParserErrors xmlerr, - const char *msg, - const xmlChar * str1, - const xmlChar * str2); -#endif - -/** - * Input Streams. - */ -XMLPUBFUN xmlParserInputPtr XMLCALL - xmlNewStringInputStream (xmlParserCtxtPtr ctxt, - const xmlChar *buffer); -XMLPUBFUN xmlParserInputPtr XMLCALL - xmlNewEntityInputStream (xmlParserCtxtPtr ctxt, - xmlEntityPtr entity); -XMLPUBFUN int XMLCALL - xmlPushInput (xmlParserCtxtPtr ctxt, - xmlParserInputPtr input); -XMLPUBFUN xmlChar XMLCALL - xmlPopInput (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlFreeInputStream (xmlParserInputPtr input); -XMLPUBFUN xmlParserInputPtr XMLCALL - xmlNewInputFromFile (xmlParserCtxtPtr ctxt, - const char *filename); -XMLPUBFUN xmlParserInputPtr XMLCALL - xmlNewInputStream (xmlParserCtxtPtr ctxt); - -/** - * Namespaces. - */ -XMLPUBFUN xmlChar * XMLCALL - xmlSplitQName (xmlParserCtxtPtr ctxt, - const xmlChar *name, - xmlChar **prefix); - -/** - * Generic production rules. - */ -XMLPUBFUN const xmlChar * XMLCALL - xmlParseName (xmlParserCtxtPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL - xmlParseNmtoken (xmlParserCtxtPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL - xmlParseEntityValue (xmlParserCtxtPtr ctxt, - xmlChar **orig); -XMLPUBFUN xmlChar * XMLCALL - xmlParseAttValue (xmlParserCtxtPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL - xmlParseSystemLiteral (xmlParserCtxtPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL - xmlParsePubidLiteral (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParseCharData (xmlParserCtxtPtr ctxt, - int cdata); -XMLPUBFUN xmlChar * XMLCALL - xmlParseExternalID (xmlParserCtxtPtr ctxt, - xmlChar **publicID, - int strict); -XMLPUBFUN void XMLCALL - xmlParseComment (xmlParserCtxtPtr ctxt); -XMLPUBFUN const xmlChar * XMLCALL - xmlParsePITarget (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParsePI (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParseNotationDecl (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParseEntityDecl (xmlParserCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlParseDefaultDecl (xmlParserCtxtPtr ctxt, - xmlChar **value); -XMLPUBFUN xmlEnumerationPtr XMLCALL - xmlParseNotationType (xmlParserCtxtPtr ctxt); -XMLPUBFUN xmlEnumerationPtr XMLCALL - xmlParseEnumerationType (xmlParserCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlParseEnumeratedType (xmlParserCtxtPtr ctxt, - xmlEnumerationPtr *tree); -XMLPUBFUN int XMLCALL - xmlParseAttributeType (xmlParserCtxtPtr ctxt, - xmlEnumerationPtr *tree); -XMLPUBFUN void XMLCALL - xmlParseAttributeListDecl(xmlParserCtxtPtr ctxt); -XMLPUBFUN xmlElementContentPtr XMLCALL - xmlParseElementMixedContentDecl - (xmlParserCtxtPtr ctxt, - int inputchk); -XMLPUBFUN xmlElementContentPtr XMLCALL - xmlParseElementChildrenContentDecl - (xmlParserCtxtPtr ctxt, - int inputchk); -XMLPUBFUN int XMLCALL - xmlParseElementContentDecl(xmlParserCtxtPtr ctxt, - const xmlChar *name, - xmlElementContentPtr *result); -XMLPUBFUN int XMLCALL - xmlParseElementDecl (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParseMarkupDecl (xmlParserCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlParseCharRef (xmlParserCtxtPtr ctxt); -XMLPUBFUN xmlEntityPtr XMLCALL - xmlParseEntityRef (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParseReference (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParsePEReference (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParseDocTypeDecl (xmlParserCtxtPtr ctxt); -#ifdef LIBXML_SAX1_ENABLED -XMLPUBFUN const xmlChar * XMLCALL - xmlParseAttribute (xmlParserCtxtPtr ctxt, - xmlChar **value); -XMLPUBFUN const xmlChar * XMLCALL - xmlParseStartTag (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParseEndTag (xmlParserCtxtPtr ctxt); -#endif /* LIBXML_SAX1_ENABLED */ -XMLPUBFUN void XMLCALL - xmlParseCDSect (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParseContent (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParseElement (xmlParserCtxtPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL - xmlParseVersionNum (xmlParserCtxtPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL - xmlParseVersionInfo (xmlParserCtxtPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL - xmlParseEncName (xmlParserCtxtPtr ctxt); -XMLPUBFUN const xmlChar * XMLCALL - xmlParseEncodingDecl (xmlParserCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlParseSDDecl (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParseXMLDecl (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParseTextDecl (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParseMisc (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParseExternalSubset (xmlParserCtxtPtr ctxt, - const xmlChar *ExternalID, - const xmlChar *SystemID); -/** - * XML_SUBSTITUTE_NONE: - * - * If no entities need to be substituted. - */ -#define XML_SUBSTITUTE_NONE 0 -/** - * XML_SUBSTITUTE_REF: - * - * Whether general entities need to be substituted. - */ -#define XML_SUBSTITUTE_REF 1 -/** - * XML_SUBSTITUTE_PEREF: - * - * Whether parameter entities need to be substituted. - */ -#define XML_SUBSTITUTE_PEREF 2 -/** - * XML_SUBSTITUTE_BOTH: - * - * Both general and parameter entities need to be substituted. - */ -#define XML_SUBSTITUTE_BOTH 3 - -XMLPUBFUN xmlChar * XMLCALL - xmlStringDecodeEntities (xmlParserCtxtPtr ctxt, - const xmlChar *str, - int what, - xmlChar end, - xmlChar end2, - xmlChar end3); -XMLPUBFUN xmlChar * XMLCALL - xmlStringLenDecodeEntities (xmlParserCtxtPtr ctxt, - const xmlChar *str, - int len, - int what, - xmlChar end, - xmlChar end2, - xmlChar end3); - -/* - * Generated by MACROS on top of parser.c c.f. PUSH_AND_POP. - */ -XMLPUBFUN int XMLCALL nodePush (xmlParserCtxtPtr ctxt, - xmlNodePtr value); -XMLPUBFUN xmlNodePtr XMLCALL nodePop (xmlParserCtxtPtr ctxt); -XMLPUBFUN int XMLCALL inputPush (xmlParserCtxtPtr ctxt, - xmlParserInputPtr value); -XMLPUBFUN xmlParserInputPtr XMLCALL inputPop (xmlParserCtxtPtr ctxt); -XMLPUBFUN const xmlChar * XMLCALL namePop (xmlParserCtxtPtr ctxt); -XMLPUBFUN int XMLCALL namePush (xmlParserCtxtPtr ctxt, - const xmlChar *value); - -/* - * other commodities shared between parser.c and parserInternals. - */ -XMLPUBFUN int XMLCALL xmlSkipBlankChars (xmlParserCtxtPtr ctxt); -XMLPUBFUN int XMLCALL xmlStringCurrentChar (xmlParserCtxtPtr ctxt, - const xmlChar *cur, - int *len); -XMLPUBFUN void XMLCALL xmlParserHandlePEReference(xmlParserCtxtPtr ctxt); -XMLPUBFUN int XMLCALL xmlCheckLanguageID (const xmlChar *lang); - -/* - * Really core function shared with HTML parser. - */ -XMLPUBFUN int XMLCALL xmlCurrentChar (xmlParserCtxtPtr ctxt, - int *len); -XMLPUBFUN int XMLCALL xmlCopyCharMultiByte (xmlChar *out, - int val); -XMLPUBFUN int XMLCALL xmlCopyChar (int len, - xmlChar *out, - int val); -XMLPUBFUN void XMLCALL xmlNextChar (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL xmlParserInputShrink (xmlParserInputPtr in); - -#ifdef LIBXML_HTML_ENABLED -/* - * Actually comes from the HTML parser but launched from the init stuff. - */ -XMLPUBFUN void XMLCALL htmlInitAutoClose (void); -XMLPUBFUN htmlParserCtxtPtr XMLCALL htmlCreateFileParserCtxt(const char *filename, - const char *encoding); -#endif - -/* - * Specific function to keep track of entities references - * and used by the XSLT debugger. - */ -#ifdef LIBXML_LEGACY_ENABLED -/** - * xmlEntityReferenceFunc: - * @ent: the entity - * @firstNode: the fist node in the chunk - * @lastNode: the last nod in the chunk - * - * Callback function used when one needs to be able to track back the - * provenance of a chunk of nodes inherited from an entity replacement. - */ -typedef void (*xmlEntityReferenceFunc) (xmlEntityPtr ent, - xmlNodePtr firstNode, - xmlNodePtr lastNode); - -XMLPUBFUN void XMLCALL xmlSetEntityReferenceFunc (xmlEntityReferenceFunc func); - -XMLPUBFUN xmlChar * XMLCALL - xmlParseQuotedString (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlParseNamespace (xmlParserCtxtPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL - xmlNamespaceParseNSDef (xmlParserCtxtPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL - xmlScanName (xmlParserCtxtPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL - xmlNamespaceParseNCName (xmlParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL xmlParserHandleReference(xmlParserCtxtPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL - xmlNamespaceParseQName (xmlParserCtxtPtr ctxt, - xmlChar **prefix); -/** - * Entities - */ -XMLPUBFUN xmlChar * XMLCALL - xmlDecodeEntities (xmlParserCtxtPtr ctxt, - int len, - int what, - xmlChar end, - xmlChar end2, - xmlChar end3); -XMLPUBFUN void XMLCALL - xmlHandleEntity (xmlParserCtxtPtr ctxt, - xmlEntityPtr entity); - -#endif /* LIBXML_LEGACY_ENABLED */ - -#ifdef IN_LIBXML -/* - * internal only - */ -XMLPUBFUN void XMLCALL - xmlErrMemory (xmlParserCtxtPtr ctxt, - const char *extra); -#endif - -#ifdef __cplusplus -} -#endif -#endif /* __XML_PARSER_INTERNALS_H__ */ diff --git a/cache/include/libxml/pattern.h b/cache/include/libxml/pattern.h deleted file mode 100644 index 97d2cd2..0000000 --- a/cache/include/libxml/pattern.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Summary: pattern expression handling - * Description: allows to compile and test pattern expressions for nodes - * either in a tree or based on a parser state. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_PATTERN_H__ -#define __XML_PATTERN_H__ - -#include -#include -#include - -#ifdef LIBXML_PATTERN_ENABLED - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * xmlPattern: - * - * A compiled (XPath based) pattern to select nodes - */ -typedef struct _xmlPattern xmlPattern; -typedef xmlPattern *xmlPatternPtr; - -/** - * xmlPatternFlags: - * - * This is the set of options affecting the behaviour of pattern - * matching with this module - * - */ -typedef enum { - XML_PATTERN_DEFAULT = 0, /* simple pattern match */ - XML_PATTERN_XPATH = 1<<0, /* standard XPath pattern */ - XML_PATTERN_XSSEL = 1<<1, /* XPath subset for schema selector */ - XML_PATTERN_XSFIELD = 1<<2 /* XPath subset for schema field */ -} xmlPatternFlags; - -XMLPUBFUN void XMLCALL - xmlFreePattern (xmlPatternPtr comp); - -XMLPUBFUN void XMLCALL - xmlFreePatternList (xmlPatternPtr comp); - -XMLPUBFUN xmlPatternPtr XMLCALL - xmlPatterncompile (const xmlChar *pattern, - xmlDict *dict, - int flags, - const xmlChar **namespaces); -XMLPUBFUN int XMLCALL - xmlPatternMatch (xmlPatternPtr comp, - xmlNodePtr node); - -/* streaming interfaces */ -typedef struct _xmlStreamCtxt xmlStreamCtxt; -typedef xmlStreamCtxt *xmlStreamCtxtPtr; - -XMLPUBFUN int XMLCALL - xmlPatternStreamable (xmlPatternPtr comp); -XMLPUBFUN int XMLCALL - xmlPatternMaxDepth (xmlPatternPtr comp); -XMLPUBFUN int XMLCALL - xmlPatternMinDepth (xmlPatternPtr comp); -XMLPUBFUN int XMLCALL - xmlPatternFromRoot (xmlPatternPtr comp); -XMLPUBFUN xmlStreamCtxtPtr XMLCALL - xmlPatternGetStreamCtxt (xmlPatternPtr comp); -XMLPUBFUN void XMLCALL - xmlFreeStreamCtxt (xmlStreamCtxtPtr stream); -XMLPUBFUN int XMLCALL - xmlStreamPushNode (xmlStreamCtxtPtr stream, - const xmlChar *name, - const xmlChar *ns, - int nodeType); -XMLPUBFUN int XMLCALL - xmlStreamPush (xmlStreamCtxtPtr stream, - const xmlChar *name, - const xmlChar *ns); -XMLPUBFUN int XMLCALL - xmlStreamPushAttr (xmlStreamCtxtPtr stream, - const xmlChar *name, - const xmlChar *ns); -XMLPUBFUN int XMLCALL - xmlStreamPop (xmlStreamCtxtPtr stream); -XMLPUBFUN int XMLCALL - xmlStreamWantsAnyNode (xmlStreamCtxtPtr stream); -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_PATTERN_ENABLED */ - -#endif /* __XML_PATTERN_H__ */ diff --git a/cache/include/libxml/relaxng.h b/cache/include/libxml/relaxng.h deleted file mode 100644 index f269c9e..0000000 --- a/cache/include/libxml/relaxng.h +++ /dev/null @@ -1,217 +0,0 @@ -/* - * Summary: implementation of the Relax-NG validation - * Description: implementation of the Relax-NG validation - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_RELAX_NG__ -#define __XML_RELAX_NG__ - -#include -#include -#include - -#ifdef LIBXML_SCHEMAS_ENABLED - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct _xmlRelaxNG xmlRelaxNG; -typedef xmlRelaxNG *xmlRelaxNGPtr; - - -/** - * xmlRelaxNGValidityErrorFunc: - * @ctx: the validation context - * @msg: the message - * @...: extra arguments - * - * Signature of an error callback from a Relax-NG validation - */ -typedef void (XMLCDECL *xmlRelaxNGValidityErrorFunc) (void *ctx, - const char *msg, - ...) LIBXML_ATTR_FORMAT(2,3); - -/** - * xmlRelaxNGValidityWarningFunc: - * @ctx: the validation context - * @msg: the message - * @...: extra arguments - * - * Signature of a warning callback from a Relax-NG validation - */ -typedef void (XMLCDECL *xmlRelaxNGValidityWarningFunc) (void *ctx, - const char *msg, - ...) LIBXML_ATTR_FORMAT(2,3); - -/** - * A schemas validation context - */ -typedef struct _xmlRelaxNGParserCtxt xmlRelaxNGParserCtxt; -typedef xmlRelaxNGParserCtxt *xmlRelaxNGParserCtxtPtr; - -typedef struct _xmlRelaxNGValidCtxt xmlRelaxNGValidCtxt; -typedef xmlRelaxNGValidCtxt *xmlRelaxNGValidCtxtPtr; - -/* - * xmlRelaxNGValidErr: - * - * List of possible Relax NG validation errors - */ -typedef enum { - XML_RELAXNG_OK = 0, - XML_RELAXNG_ERR_MEMORY, - XML_RELAXNG_ERR_TYPE, - XML_RELAXNG_ERR_TYPEVAL, - XML_RELAXNG_ERR_DUPID, - XML_RELAXNG_ERR_TYPECMP, - XML_RELAXNG_ERR_NOSTATE, - XML_RELAXNG_ERR_NODEFINE, - XML_RELAXNG_ERR_LISTEXTRA, - XML_RELAXNG_ERR_LISTEMPTY, - XML_RELAXNG_ERR_INTERNODATA, - XML_RELAXNG_ERR_INTERSEQ, - XML_RELAXNG_ERR_INTEREXTRA, - XML_RELAXNG_ERR_ELEMNAME, - XML_RELAXNG_ERR_ATTRNAME, - XML_RELAXNG_ERR_ELEMNONS, - XML_RELAXNG_ERR_ATTRNONS, - XML_RELAXNG_ERR_ELEMWRONGNS, - XML_RELAXNG_ERR_ATTRWRONGNS, - XML_RELAXNG_ERR_ELEMEXTRANS, - XML_RELAXNG_ERR_ATTREXTRANS, - XML_RELAXNG_ERR_ELEMNOTEMPTY, - XML_RELAXNG_ERR_NOELEM, - XML_RELAXNG_ERR_NOTELEM, - XML_RELAXNG_ERR_ATTRVALID, - XML_RELAXNG_ERR_CONTENTVALID, - XML_RELAXNG_ERR_EXTRACONTENT, - XML_RELAXNG_ERR_INVALIDATTR, - XML_RELAXNG_ERR_DATAELEM, - XML_RELAXNG_ERR_VALELEM, - XML_RELAXNG_ERR_LISTELEM, - XML_RELAXNG_ERR_DATATYPE, - XML_RELAXNG_ERR_VALUE, - XML_RELAXNG_ERR_LIST, - XML_RELAXNG_ERR_NOGRAMMAR, - XML_RELAXNG_ERR_EXTRADATA, - XML_RELAXNG_ERR_LACKDATA, - XML_RELAXNG_ERR_INTERNAL, - XML_RELAXNG_ERR_ELEMWRONG, - XML_RELAXNG_ERR_TEXTWRONG -} xmlRelaxNGValidErr; - -/* - * xmlRelaxNGParserFlags: - * - * List of possible Relax NG Parser flags - */ -typedef enum { - XML_RELAXNGP_NONE = 0, - XML_RELAXNGP_FREE_DOC = 1, - XML_RELAXNGP_CRNG = 2 -} xmlRelaxNGParserFlag; - -XMLPUBFUN int XMLCALL - xmlRelaxNGInitTypes (void); -XMLPUBFUN void XMLCALL - xmlRelaxNGCleanupTypes (void); - -/* - * Interfaces for parsing. - */ -XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL - xmlRelaxNGNewParserCtxt (const char *URL); -XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL - xmlRelaxNGNewMemParserCtxt (const char *buffer, - int size); -XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL - xmlRelaxNGNewDocParserCtxt (xmlDocPtr doc); - -XMLPUBFUN int XMLCALL - xmlRelaxParserSetFlag (xmlRelaxNGParserCtxtPtr ctxt, - int flag); - -XMLPUBFUN void XMLCALL - xmlRelaxNGFreeParserCtxt (xmlRelaxNGParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxtPtr ctxt, - xmlRelaxNGValidityErrorFunc err, - xmlRelaxNGValidityWarningFunc warn, - void *ctx); -XMLPUBFUN int XMLCALL - xmlRelaxNGGetParserErrors(xmlRelaxNGParserCtxtPtr ctxt, - xmlRelaxNGValidityErrorFunc *err, - xmlRelaxNGValidityWarningFunc *warn, - void **ctx); -XMLPUBFUN void XMLCALL - xmlRelaxNGSetParserStructuredErrors( - xmlRelaxNGParserCtxtPtr ctxt, - xmlStructuredErrorFunc serror, - void *ctx); -XMLPUBFUN xmlRelaxNGPtr XMLCALL - xmlRelaxNGParse (xmlRelaxNGParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlRelaxNGFree (xmlRelaxNGPtr schema); -#ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL - xmlRelaxNGDump (FILE *output, - xmlRelaxNGPtr schema); -XMLPUBFUN void XMLCALL - xmlRelaxNGDumpTree (FILE * output, - xmlRelaxNGPtr schema); -#endif /* LIBXML_OUTPUT_ENABLED */ -/* - * Interfaces for validating - */ -XMLPUBFUN void XMLCALL - xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxtPtr ctxt, - xmlRelaxNGValidityErrorFunc err, - xmlRelaxNGValidityWarningFunc warn, - void *ctx); -XMLPUBFUN int XMLCALL - xmlRelaxNGGetValidErrors(xmlRelaxNGValidCtxtPtr ctxt, - xmlRelaxNGValidityErrorFunc *err, - xmlRelaxNGValidityWarningFunc *warn, - void **ctx); -XMLPUBFUN void XMLCALL - xmlRelaxNGSetValidStructuredErrors(xmlRelaxNGValidCtxtPtr ctxt, - xmlStructuredErrorFunc serror, void *ctx); -XMLPUBFUN xmlRelaxNGValidCtxtPtr XMLCALL - xmlRelaxNGNewValidCtxt (xmlRelaxNGPtr schema); -XMLPUBFUN void XMLCALL - xmlRelaxNGFreeValidCtxt (xmlRelaxNGValidCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlRelaxNGValidateDoc (xmlRelaxNGValidCtxtPtr ctxt, - xmlDocPtr doc); -/* - * Interfaces for progressive validation when possible - */ -XMLPUBFUN int XMLCALL - xmlRelaxNGValidatePushElement (xmlRelaxNGValidCtxtPtr ctxt, - xmlDocPtr doc, - xmlNodePtr elem); -XMLPUBFUN int XMLCALL - xmlRelaxNGValidatePushCData (xmlRelaxNGValidCtxtPtr ctxt, - const xmlChar *data, - int len); -XMLPUBFUN int XMLCALL - xmlRelaxNGValidatePopElement (xmlRelaxNGValidCtxtPtr ctxt, - xmlDocPtr doc, - xmlNodePtr elem); -XMLPUBFUN int XMLCALL - xmlRelaxNGValidateFullElement (xmlRelaxNGValidCtxtPtr ctxt, - xmlDocPtr doc, - xmlNodePtr elem); - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_SCHEMAS_ENABLED */ - -#endif /* __XML_RELAX_NG__ */ diff --git a/cache/include/libxml/schemasInternals.h b/cache/include/libxml/schemasInternals.h deleted file mode 100644 index 4f0ca9a..0000000 --- a/cache/include/libxml/schemasInternals.h +++ /dev/null @@ -1,958 +0,0 @@ -/* - * Summary: internal interfaces for XML Schemas - * Description: internal interfaces for the XML Schemas handling - * and schema validity checking - * The Schemas development is a Work In Progress. - * Some of those interfaces are not garanteed to be API or ABI stable ! - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - - -#ifndef __XML_SCHEMA_INTERNALS_H__ -#define __XML_SCHEMA_INTERNALS_H__ - -#include - -#ifdef LIBXML_SCHEMAS_ENABLED - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - XML_SCHEMAS_UNKNOWN = 0, - XML_SCHEMAS_STRING, - XML_SCHEMAS_NORMSTRING, - XML_SCHEMAS_DECIMAL, - XML_SCHEMAS_TIME, - XML_SCHEMAS_GDAY, - XML_SCHEMAS_GMONTH, - XML_SCHEMAS_GMONTHDAY, - XML_SCHEMAS_GYEAR, - XML_SCHEMAS_GYEARMONTH, - XML_SCHEMAS_DATE, - XML_SCHEMAS_DATETIME, - XML_SCHEMAS_DURATION, - XML_SCHEMAS_FLOAT, - XML_SCHEMAS_DOUBLE, - XML_SCHEMAS_BOOLEAN, - XML_SCHEMAS_TOKEN, - XML_SCHEMAS_LANGUAGE, - XML_SCHEMAS_NMTOKEN, - XML_SCHEMAS_NMTOKENS, - XML_SCHEMAS_NAME, - XML_SCHEMAS_QNAME, - XML_SCHEMAS_NCNAME, - XML_SCHEMAS_ID, - XML_SCHEMAS_IDREF, - XML_SCHEMAS_IDREFS, - XML_SCHEMAS_ENTITY, - XML_SCHEMAS_ENTITIES, - XML_SCHEMAS_NOTATION, - XML_SCHEMAS_ANYURI, - XML_SCHEMAS_INTEGER, - XML_SCHEMAS_NPINTEGER, - XML_SCHEMAS_NINTEGER, - XML_SCHEMAS_NNINTEGER, - XML_SCHEMAS_PINTEGER, - XML_SCHEMAS_INT, - XML_SCHEMAS_UINT, - XML_SCHEMAS_LONG, - XML_SCHEMAS_ULONG, - XML_SCHEMAS_SHORT, - XML_SCHEMAS_USHORT, - XML_SCHEMAS_BYTE, - XML_SCHEMAS_UBYTE, - XML_SCHEMAS_HEXBINARY, - XML_SCHEMAS_BASE64BINARY, - XML_SCHEMAS_ANYTYPE, - XML_SCHEMAS_ANYSIMPLETYPE -} xmlSchemaValType; - -/* - * XML Schemas defines multiple type of types. - */ -typedef enum { - XML_SCHEMA_TYPE_BASIC = 1, /* A built-in datatype */ - XML_SCHEMA_TYPE_ANY, - XML_SCHEMA_TYPE_FACET, - XML_SCHEMA_TYPE_SIMPLE, - XML_SCHEMA_TYPE_COMPLEX, - XML_SCHEMA_TYPE_SEQUENCE = 6, - XML_SCHEMA_TYPE_CHOICE, - XML_SCHEMA_TYPE_ALL, - XML_SCHEMA_TYPE_SIMPLE_CONTENT, - XML_SCHEMA_TYPE_COMPLEX_CONTENT, - XML_SCHEMA_TYPE_UR, - XML_SCHEMA_TYPE_RESTRICTION, - XML_SCHEMA_TYPE_EXTENSION, - XML_SCHEMA_TYPE_ELEMENT, - XML_SCHEMA_TYPE_ATTRIBUTE, - XML_SCHEMA_TYPE_ATTRIBUTEGROUP, - XML_SCHEMA_TYPE_GROUP, - XML_SCHEMA_TYPE_NOTATION, - XML_SCHEMA_TYPE_LIST, - XML_SCHEMA_TYPE_UNION, - XML_SCHEMA_TYPE_ANY_ATTRIBUTE, - XML_SCHEMA_TYPE_IDC_UNIQUE, - XML_SCHEMA_TYPE_IDC_KEY, - XML_SCHEMA_TYPE_IDC_KEYREF, - XML_SCHEMA_TYPE_PARTICLE = 25, - XML_SCHEMA_TYPE_ATTRIBUTE_USE, - XML_SCHEMA_FACET_MININCLUSIVE = 1000, - XML_SCHEMA_FACET_MINEXCLUSIVE, - XML_SCHEMA_FACET_MAXINCLUSIVE, - XML_SCHEMA_FACET_MAXEXCLUSIVE, - XML_SCHEMA_FACET_TOTALDIGITS, - XML_SCHEMA_FACET_FRACTIONDIGITS, - XML_SCHEMA_FACET_PATTERN, - XML_SCHEMA_FACET_ENUMERATION, - XML_SCHEMA_FACET_WHITESPACE, - XML_SCHEMA_FACET_LENGTH, - XML_SCHEMA_FACET_MAXLENGTH, - XML_SCHEMA_FACET_MINLENGTH, - XML_SCHEMA_EXTRA_QNAMEREF = 2000, - XML_SCHEMA_EXTRA_ATTR_USE_PROHIB -} xmlSchemaTypeType; - -typedef enum { - XML_SCHEMA_CONTENT_UNKNOWN = 0, - XML_SCHEMA_CONTENT_EMPTY = 1, - XML_SCHEMA_CONTENT_ELEMENTS, - XML_SCHEMA_CONTENT_MIXED, - XML_SCHEMA_CONTENT_SIMPLE, - XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS, /* Obsolete */ - XML_SCHEMA_CONTENT_BASIC, - XML_SCHEMA_CONTENT_ANY -} xmlSchemaContentType; - -typedef struct _xmlSchemaVal xmlSchemaVal; -typedef xmlSchemaVal *xmlSchemaValPtr; - -typedef struct _xmlSchemaType xmlSchemaType; -typedef xmlSchemaType *xmlSchemaTypePtr; - -typedef struct _xmlSchemaFacet xmlSchemaFacet; -typedef xmlSchemaFacet *xmlSchemaFacetPtr; - -/** - * Annotation - */ -typedef struct _xmlSchemaAnnot xmlSchemaAnnot; -typedef xmlSchemaAnnot *xmlSchemaAnnotPtr; -struct _xmlSchemaAnnot { - struct _xmlSchemaAnnot *next; - xmlNodePtr content; /* the annotation */ -}; - -/** - * XML_SCHEMAS_ANYATTR_SKIP: - * - * Skip unknown attribute from validation - * Obsolete, not used anymore. - */ -#define XML_SCHEMAS_ANYATTR_SKIP 1 -/** - * XML_SCHEMAS_ANYATTR_LAX: - * - * Ignore validation non definition on attributes - * Obsolete, not used anymore. - */ -#define XML_SCHEMAS_ANYATTR_LAX 2 -/** - * XML_SCHEMAS_ANYATTR_STRICT: - * - * Apply strict validation rules on attributes - * Obsolete, not used anymore. - */ -#define XML_SCHEMAS_ANYATTR_STRICT 3 -/** - * XML_SCHEMAS_ANY_SKIP: - * - * Skip unknown attribute from validation - */ -#define XML_SCHEMAS_ANY_SKIP 1 -/** - * XML_SCHEMAS_ANY_LAX: - * - * Used by wildcards. - * Validate if type found, don't worry if not found - */ -#define XML_SCHEMAS_ANY_LAX 2 -/** - * XML_SCHEMAS_ANY_STRICT: - * - * Used by wildcards. - * Apply strict validation rules - */ -#define XML_SCHEMAS_ANY_STRICT 3 -/** - * XML_SCHEMAS_ATTR_USE_PROHIBITED: - * - * Used by wildcards. - * The attribute is prohibited. - */ -#define XML_SCHEMAS_ATTR_USE_PROHIBITED 0 -/** - * XML_SCHEMAS_ATTR_USE_REQUIRED: - * - * The attribute is required. - */ -#define XML_SCHEMAS_ATTR_USE_REQUIRED 1 -/** - * XML_SCHEMAS_ATTR_USE_OPTIONAL: - * - * The attribute is optional. - */ -#define XML_SCHEMAS_ATTR_USE_OPTIONAL 2 -/** - * XML_SCHEMAS_ATTR_GLOBAL: - * - * allow elements in no namespace - */ -#define XML_SCHEMAS_ATTR_GLOBAL 1 << 0 -/** - * XML_SCHEMAS_ATTR_NSDEFAULT: - * - * allow elements in no namespace - */ -#define XML_SCHEMAS_ATTR_NSDEFAULT 1 << 7 -/** - * XML_SCHEMAS_ATTR_INTERNAL_RESOLVED: - * - * this is set when the "type" and "ref" references - * have been resolved. - */ -#define XML_SCHEMAS_ATTR_INTERNAL_RESOLVED 1 << 8 -/** - * XML_SCHEMAS_ATTR_FIXED: - * - * the attribute has a fixed value - */ -#define XML_SCHEMAS_ATTR_FIXED 1 << 9 - -/** - * xmlSchemaAttribute: - * An attribute definition. - */ - -typedef struct _xmlSchemaAttribute xmlSchemaAttribute; -typedef xmlSchemaAttribute *xmlSchemaAttributePtr; -struct _xmlSchemaAttribute { - xmlSchemaTypeType type; - struct _xmlSchemaAttribute *next; /* the next attribute (not used?) */ - const xmlChar *name; /* the name of the declaration */ - const xmlChar *id; /* Deprecated; not used */ - const xmlChar *ref; /* Deprecated; not used */ - const xmlChar *refNs; /* Deprecated; not used */ - const xmlChar *typeName; /* the local name of the type definition */ - const xmlChar *typeNs; /* the ns URI of the type definition */ - xmlSchemaAnnotPtr annot; - - xmlSchemaTypePtr base; /* Deprecated; not used */ - int occurs; /* Deprecated; not used */ - const xmlChar *defValue; /* The initial value of the value constraint */ - xmlSchemaTypePtr subtypes; /* the type definition */ - xmlNodePtr node; - const xmlChar *targetNamespace; - int flags; - const xmlChar *refPrefix; /* Deprecated; not used */ - xmlSchemaValPtr defVal; /* The compiled value constraint */ - xmlSchemaAttributePtr refDecl; /* Deprecated; not used */ -}; - -/** - * xmlSchemaAttributeLink: - * Used to build a list of attribute uses on complexType definitions. - * WARNING: Deprecated; not used. - */ -typedef struct _xmlSchemaAttributeLink xmlSchemaAttributeLink; -typedef xmlSchemaAttributeLink *xmlSchemaAttributeLinkPtr; -struct _xmlSchemaAttributeLink { - struct _xmlSchemaAttributeLink *next;/* the next attribute link ... */ - struct _xmlSchemaAttribute *attr;/* the linked attribute */ -}; - -/** - * XML_SCHEMAS_WILDCARD_COMPLETE: - * - * If the wildcard is complete. - */ -#define XML_SCHEMAS_WILDCARD_COMPLETE 1 << 0 - -/** - * xmlSchemaCharValueLink: - * Used to build a list of namespaces on wildcards. - */ -typedef struct _xmlSchemaWildcardNs xmlSchemaWildcardNs; -typedef xmlSchemaWildcardNs *xmlSchemaWildcardNsPtr; -struct _xmlSchemaWildcardNs { - struct _xmlSchemaWildcardNs *next;/* the next constraint link ... */ - const xmlChar *value;/* the value */ -}; - -/** - * xmlSchemaWildcard. - * A wildcard. - */ -typedef struct _xmlSchemaWildcard xmlSchemaWildcard; -typedef xmlSchemaWildcard *xmlSchemaWildcardPtr; -struct _xmlSchemaWildcard { - xmlSchemaTypeType type; /* The kind of type */ - const xmlChar *id; /* Deprecated; not used */ - xmlSchemaAnnotPtr annot; - xmlNodePtr node; - int minOccurs; /* Deprecated; not used */ - int maxOccurs; /* Deprecated; not used */ - int processContents; - int any; /* Indicates if the ns constraint is of ##any */ - xmlSchemaWildcardNsPtr nsSet; /* The list of allowed namespaces */ - xmlSchemaWildcardNsPtr negNsSet; /* The negated namespace */ - int flags; -}; - -/** - * XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED: - * - * The attribute wildcard has been already builded. - */ -#define XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED 1 << 0 -/** - * XML_SCHEMAS_ATTRGROUP_GLOBAL: - * - * The attribute wildcard has been already builded. - */ -#define XML_SCHEMAS_ATTRGROUP_GLOBAL 1 << 1 -/** - * XML_SCHEMAS_ATTRGROUP_MARKED: - * - * Marks the attr group as marked; used for circular checks. - */ -#define XML_SCHEMAS_ATTRGROUP_MARKED 1 << 2 - -/** - * XML_SCHEMAS_ATTRGROUP_REDEFINED: - * - * The attr group was redefined. - */ -#define XML_SCHEMAS_ATTRGROUP_REDEFINED 1 << 3 -/** - * XML_SCHEMAS_ATTRGROUP_HAS_REFS: - * - * Whether this attr. group contains attr. group references. - */ -#define XML_SCHEMAS_ATTRGROUP_HAS_REFS 1 << 4 - -/** - * An attribute group definition. - * - * xmlSchemaAttribute and xmlSchemaAttributeGroup start of structures - * must be kept similar - */ -typedef struct _xmlSchemaAttributeGroup xmlSchemaAttributeGroup; -typedef xmlSchemaAttributeGroup *xmlSchemaAttributeGroupPtr; -struct _xmlSchemaAttributeGroup { - xmlSchemaTypeType type; /* The kind of type */ - struct _xmlSchemaAttribute *next;/* the next attribute if in a group ... */ - const xmlChar *name; - const xmlChar *id; - const xmlChar *ref; /* Deprecated; not used */ - const xmlChar *refNs; /* Deprecated; not used */ - xmlSchemaAnnotPtr annot; - - xmlSchemaAttributePtr attributes; /* Deprecated; not used */ - xmlNodePtr node; - int flags; - xmlSchemaWildcardPtr attributeWildcard; - const xmlChar *refPrefix; /* Deprecated; not used */ - xmlSchemaAttributeGroupPtr refItem; /* Deprecated; not used */ - const xmlChar *targetNamespace; - void *attrUses; -}; - -/** - * xmlSchemaTypeLink: - * Used to build a list of types (e.g. member types of - * simpleType with variety "union"). - */ -typedef struct _xmlSchemaTypeLink xmlSchemaTypeLink; -typedef xmlSchemaTypeLink *xmlSchemaTypeLinkPtr; -struct _xmlSchemaTypeLink { - struct _xmlSchemaTypeLink *next;/* the next type link ... */ - xmlSchemaTypePtr type;/* the linked type */ -}; - -/** - * xmlSchemaFacetLink: - * Used to build a list of facets. - */ -typedef struct _xmlSchemaFacetLink xmlSchemaFacetLink; -typedef xmlSchemaFacetLink *xmlSchemaFacetLinkPtr; -struct _xmlSchemaFacetLink { - struct _xmlSchemaFacetLink *next;/* the next facet link ... */ - xmlSchemaFacetPtr facet;/* the linked facet */ -}; - -/** - * XML_SCHEMAS_TYPE_MIXED: - * - * the element content type is mixed - */ -#define XML_SCHEMAS_TYPE_MIXED 1 << 0 -/** - * XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION: - * - * the simple or complex type has a derivation method of "extension". - */ -#define XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION 1 << 1 -/** - * XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION: - * - * the simple or complex type has a derivation method of "restriction". - */ -#define XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION 1 << 2 -/** - * XML_SCHEMAS_TYPE_GLOBAL: - * - * the type is global - */ -#define XML_SCHEMAS_TYPE_GLOBAL 1 << 3 -/** - * XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD: - * - * the complexType owns an attribute wildcard, i.e. - * it can be freed by the complexType - */ -#define XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD 1 << 4 /* Obsolete. */ -/** - * XML_SCHEMAS_TYPE_VARIETY_ABSENT: - * - * the simpleType has a variety of "absent". - * TODO: Actually not necessary :-/, since if - * none of the variety flags occur then it's - * automatically absent. - */ -#define XML_SCHEMAS_TYPE_VARIETY_ABSENT 1 << 5 -/** - * XML_SCHEMAS_TYPE_VARIETY_LIST: - * - * the simpleType has a variety of "list". - */ -#define XML_SCHEMAS_TYPE_VARIETY_LIST 1 << 6 -/** - * XML_SCHEMAS_TYPE_VARIETY_UNION: - * - * the simpleType has a variety of "union". - */ -#define XML_SCHEMAS_TYPE_VARIETY_UNION 1 << 7 -/** - * XML_SCHEMAS_TYPE_VARIETY_ATOMIC: - * - * the simpleType has a variety of "union". - */ -#define XML_SCHEMAS_TYPE_VARIETY_ATOMIC 1 << 8 -/** - * XML_SCHEMAS_TYPE_FINAL_EXTENSION: - * - * the complexType has a final of "extension". - */ -#define XML_SCHEMAS_TYPE_FINAL_EXTENSION 1 << 9 -/** - * XML_SCHEMAS_TYPE_FINAL_RESTRICTION: - * - * the simpleType/complexType has a final of "restriction". - */ -#define XML_SCHEMAS_TYPE_FINAL_RESTRICTION 1 << 10 -/** - * XML_SCHEMAS_TYPE_FINAL_LIST: - * - * the simpleType has a final of "list". - */ -#define XML_SCHEMAS_TYPE_FINAL_LIST 1 << 11 -/** - * XML_SCHEMAS_TYPE_FINAL_UNION: - * - * the simpleType has a final of "union". - */ -#define XML_SCHEMAS_TYPE_FINAL_UNION 1 << 12 -/** - * XML_SCHEMAS_TYPE_FINAL_DEFAULT: - * - * the simpleType has a final of "default". - */ -#define XML_SCHEMAS_TYPE_FINAL_DEFAULT 1 << 13 -/** - * XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE: - * - * Marks the item as a builtin primitive. - */ -#define XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE 1 << 14 -/** - * XML_SCHEMAS_TYPE_MARKED: - * - * Marks the item as marked; used for circular checks. - */ -#define XML_SCHEMAS_TYPE_MARKED 1 << 16 -/** - * XML_SCHEMAS_TYPE_BLOCK_DEFAULT: - * - * the complexType did not specify 'block' so use the default of the - * item. - */ -#define XML_SCHEMAS_TYPE_BLOCK_DEFAULT 1 << 17 -/** - * XML_SCHEMAS_TYPE_BLOCK_EXTENSION: - * - * the complexType has a 'block' of "extension". - */ -#define XML_SCHEMAS_TYPE_BLOCK_EXTENSION 1 << 18 -/** - * XML_SCHEMAS_TYPE_BLOCK_RESTRICTION: - * - * the complexType has a 'block' of "restriction". - */ -#define XML_SCHEMAS_TYPE_BLOCK_RESTRICTION 1 << 19 -/** - * XML_SCHEMAS_TYPE_ABSTRACT: - * - * the simple/complexType is abstract. - */ -#define XML_SCHEMAS_TYPE_ABSTRACT 1 << 20 -/** - * XML_SCHEMAS_TYPE_FACETSNEEDVALUE: - * - * indicates if the facets need a computed value - */ -#define XML_SCHEMAS_TYPE_FACETSNEEDVALUE 1 << 21 -/** - * XML_SCHEMAS_TYPE_INTERNAL_RESOLVED: - * - * indicates that the type was typefixed - */ -#define XML_SCHEMAS_TYPE_INTERNAL_RESOLVED 1 << 22 -/** - * XML_SCHEMAS_TYPE_INTERNAL_INVALID: - * - * indicates that the type is invalid - */ -#define XML_SCHEMAS_TYPE_INTERNAL_INVALID 1 << 23 -/** - * XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE: - * - * a whitespace-facet value of "preserve" - */ -#define XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE 1 << 24 -/** - * XML_SCHEMAS_TYPE_WHITESPACE_REPLACE: - * - * a whitespace-facet value of "replace" - */ -#define XML_SCHEMAS_TYPE_WHITESPACE_REPLACE 1 << 25 -/** - * XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE: - * - * a whitespace-facet value of "collapse" - */ -#define XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE 1 << 26 -/** - * XML_SCHEMAS_TYPE_HAS_FACETS: - * - * has facets - */ -#define XML_SCHEMAS_TYPE_HAS_FACETS 1 << 27 -/** - * XML_SCHEMAS_TYPE_NORMVALUENEEDED: - * - * indicates if the facets (pattern) need a normalized value - */ -#define XML_SCHEMAS_TYPE_NORMVALUENEEDED 1 << 28 - -/** - * XML_SCHEMAS_TYPE_FIXUP_1: - * - * First stage of fixup was done. - */ -#define XML_SCHEMAS_TYPE_FIXUP_1 1 << 29 - -/** - * XML_SCHEMAS_TYPE_REDEFINED: - * - * The type was redefined. - */ -#define XML_SCHEMAS_TYPE_REDEFINED 1 << 30 -/** - * XML_SCHEMAS_TYPE_REDEFINING: - * - * The type redefines an other type. - */ -/* #define XML_SCHEMAS_TYPE_REDEFINING 1 << 31 */ - -/** - * _xmlSchemaType: - * - * Schemas type definition. - */ -struct _xmlSchemaType { - xmlSchemaTypeType type; /* The kind of type */ - struct _xmlSchemaType *next; /* the next type if in a sequence ... */ - const xmlChar *name; - const xmlChar *id ; /* Deprecated; not used */ - const xmlChar *ref; /* Deprecated; not used */ - const xmlChar *refNs; /* Deprecated; not used */ - xmlSchemaAnnotPtr annot; - xmlSchemaTypePtr subtypes; - xmlSchemaAttributePtr attributes; /* Deprecated; not used */ - xmlNodePtr node; - int minOccurs; /* Deprecated; not used */ - int maxOccurs; /* Deprecated; not used */ - - int flags; - xmlSchemaContentType contentType; - const xmlChar *base; /* Base type's local name */ - const xmlChar *baseNs; /* Base type's target namespace */ - xmlSchemaTypePtr baseType; /* The base type component */ - xmlSchemaFacetPtr facets; /* Local facets */ - struct _xmlSchemaType *redef; /* Deprecated; not used */ - int recurse; /* Obsolete */ - xmlSchemaAttributeLinkPtr *attributeUses; /* Deprecated; not used */ - xmlSchemaWildcardPtr attributeWildcard; - int builtInType; /* Type of built-in types. */ - xmlSchemaTypeLinkPtr memberTypes; /* member-types if a union type. */ - xmlSchemaFacetLinkPtr facetSet; /* All facets (incl. inherited) */ - const xmlChar *refPrefix; /* Deprecated; not used */ - xmlSchemaTypePtr contentTypeDef; /* Used for the simple content of complex types. - Could we use @subtypes for this? */ - xmlRegexpPtr contModel; /* Holds the automaton of the content model */ - const xmlChar *targetNamespace; - void *attrUses; -}; - -/* - * xmlSchemaElement: - * An element definition. - * - * xmlSchemaType, xmlSchemaFacet and xmlSchemaElement start of - * structures must be kept similar - */ -/** - * XML_SCHEMAS_ELEM_NILLABLE: - * - * the element is nillable - */ -#define XML_SCHEMAS_ELEM_NILLABLE 1 << 0 -/** - * XML_SCHEMAS_ELEM_GLOBAL: - * - * the element is global - */ -#define XML_SCHEMAS_ELEM_GLOBAL 1 << 1 -/** - * XML_SCHEMAS_ELEM_DEFAULT: - * - * the element has a default value - */ -#define XML_SCHEMAS_ELEM_DEFAULT 1 << 2 -/** - * XML_SCHEMAS_ELEM_FIXED: - * - * the element has a fixed value - */ -#define XML_SCHEMAS_ELEM_FIXED 1 << 3 -/** - * XML_SCHEMAS_ELEM_ABSTRACT: - * - * the element is abstract - */ -#define XML_SCHEMAS_ELEM_ABSTRACT 1 << 4 -/** - * XML_SCHEMAS_ELEM_TOPLEVEL: - * - * the element is top level - * obsolete: use XML_SCHEMAS_ELEM_GLOBAL instead - */ -#define XML_SCHEMAS_ELEM_TOPLEVEL 1 << 5 -/** - * XML_SCHEMAS_ELEM_REF: - * - * the element is a reference to a type - */ -#define XML_SCHEMAS_ELEM_REF 1 << 6 -/** - * XML_SCHEMAS_ELEM_NSDEFAULT: - * - * allow elements in no namespace - * Obsolete, not used anymore. - */ -#define XML_SCHEMAS_ELEM_NSDEFAULT 1 << 7 -/** - * XML_SCHEMAS_ELEM_INTERNAL_RESOLVED: - * - * this is set when "type", "ref", "substitutionGroup" - * references have been resolved. - */ -#define XML_SCHEMAS_ELEM_INTERNAL_RESOLVED 1 << 8 - /** - * XML_SCHEMAS_ELEM_CIRCULAR: - * - * a helper flag for the search of circular references. - */ -#define XML_SCHEMAS_ELEM_CIRCULAR 1 << 9 -/** - * XML_SCHEMAS_ELEM_BLOCK_ABSENT: - * - * the "block" attribute is absent - */ -#define XML_SCHEMAS_ELEM_BLOCK_ABSENT 1 << 10 -/** - * XML_SCHEMAS_ELEM_BLOCK_EXTENSION: - * - * disallowed substitutions are absent - */ -#define XML_SCHEMAS_ELEM_BLOCK_EXTENSION 1 << 11 -/** - * XML_SCHEMAS_ELEM_BLOCK_RESTRICTION: - * - * disallowed substitutions: "restriction" - */ -#define XML_SCHEMAS_ELEM_BLOCK_RESTRICTION 1 << 12 -/** - * XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION: - * - * disallowed substitutions: "substituion" - */ -#define XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION 1 << 13 -/** - * XML_SCHEMAS_ELEM_FINAL_ABSENT: - * - * substitution group exclusions are absent - */ -#define XML_SCHEMAS_ELEM_FINAL_ABSENT 1 << 14 -/** - * XML_SCHEMAS_ELEM_FINAL_EXTENSION: - * - * substitution group exclusions: "extension" - */ -#define XML_SCHEMAS_ELEM_FINAL_EXTENSION 1 << 15 -/** - * XML_SCHEMAS_ELEM_FINAL_RESTRICTION: - * - * substitution group exclusions: "restriction" - */ -#define XML_SCHEMAS_ELEM_FINAL_RESTRICTION 1 << 16 -/** - * XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD: - * - * the declaration is a substitution group head - */ -#define XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD 1 << 17 -/** - * XML_SCHEMAS_ELEM_INTERNAL_CHECKED: - * - * this is set when the elem decl has been checked against - * all constraints - */ -#define XML_SCHEMAS_ELEM_INTERNAL_CHECKED 1 << 18 - -typedef struct _xmlSchemaElement xmlSchemaElement; -typedef xmlSchemaElement *xmlSchemaElementPtr; -struct _xmlSchemaElement { - xmlSchemaTypeType type; /* The kind of type */ - struct _xmlSchemaType *next; /* Not used? */ - const xmlChar *name; - const xmlChar *id; /* Deprecated; not used */ - const xmlChar *ref; /* Deprecated; not used */ - const xmlChar *refNs; /* Deprecated; not used */ - xmlSchemaAnnotPtr annot; - xmlSchemaTypePtr subtypes; /* the type definition */ - xmlSchemaAttributePtr attributes; - xmlNodePtr node; - int minOccurs; /* Deprecated; not used */ - int maxOccurs; /* Deprecated; not used */ - - int flags; - const xmlChar *targetNamespace; - const xmlChar *namedType; - const xmlChar *namedTypeNs; - const xmlChar *substGroup; - const xmlChar *substGroupNs; - const xmlChar *scope; - const xmlChar *value; /* The original value of the value constraint. */ - struct _xmlSchemaElement *refDecl; /* This will now be used for the - substitution group affiliation */ - xmlRegexpPtr contModel; /* Obsolete for WXS, maybe used for RelaxNG */ - xmlSchemaContentType contentType; - const xmlChar *refPrefix; /* Deprecated; not used */ - xmlSchemaValPtr defVal; /* The compiled value contraint. */ - void *idcs; /* The identity-constraint defs */ -}; - -/* - * XML_SCHEMAS_FACET_UNKNOWN: - * - * unknown facet handling - */ -#define XML_SCHEMAS_FACET_UNKNOWN 0 -/* - * XML_SCHEMAS_FACET_PRESERVE: - * - * preserve the type of the facet - */ -#define XML_SCHEMAS_FACET_PRESERVE 1 -/* - * XML_SCHEMAS_FACET_REPLACE: - * - * replace the type of the facet - */ -#define XML_SCHEMAS_FACET_REPLACE 2 -/* - * XML_SCHEMAS_FACET_COLLAPSE: - * - * collapse the types of the facet - */ -#define XML_SCHEMAS_FACET_COLLAPSE 3 -/** - * A facet definition. - */ -struct _xmlSchemaFacet { - xmlSchemaTypeType type; /* The kind of type */ - struct _xmlSchemaFacet *next;/* the next type if in a sequence ... */ - const xmlChar *value; /* The original value */ - const xmlChar *id; /* Obsolete */ - xmlSchemaAnnotPtr annot; - xmlNodePtr node; - int fixed; /* XML_SCHEMAS_FACET_PRESERVE, etc. */ - int whitespace; - xmlSchemaValPtr val; /* The compiled value */ - xmlRegexpPtr regexp; /* The regex for patterns */ -}; - -/** - * A notation definition. - */ -typedef struct _xmlSchemaNotation xmlSchemaNotation; -typedef xmlSchemaNotation *xmlSchemaNotationPtr; -struct _xmlSchemaNotation { - xmlSchemaTypeType type; /* The kind of type */ - const xmlChar *name; - xmlSchemaAnnotPtr annot; - const xmlChar *identifier; - const xmlChar *targetNamespace; -}; - -/* -* TODO: Actually all those flags used for the schema should sit -* on the schema parser context, since they are used only -* during parsing an XML schema document, and not available -* on the component level as per spec. -*/ -/** - * XML_SCHEMAS_QUALIF_ELEM: - * - * Reflects elementFormDefault == qualified in - * an XML schema document. - */ -#define XML_SCHEMAS_QUALIF_ELEM 1 << 0 -/** - * XML_SCHEMAS_QUALIF_ATTR: - * - * Reflects attributeFormDefault == qualified in - * an XML schema document. - */ -#define XML_SCHEMAS_QUALIF_ATTR 1 << 1 -/** - * XML_SCHEMAS_FINAL_DEFAULT_EXTENSION: - * - * the schema has "extension" in the set of finalDefault. - */ -#define XML_SCHEMAS_FINAL_DEFAULT_EXTENSION 1 << 2 -/** - * XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION: - * - * the schema has "restriction" in the set of finalDefault. - */ -#define XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION 1 << 3 -/** - * XML_SCHEMAS_FINAL_DEFAULT_LIST: - * - * the cshema has "list" in the set of finalDefault. - */ -#define XML_SCHEMAS_FINAL_DEFAULT_LIST 1 << 4 -/** - * XML_SCHEMAS_FINAL_DEFAULT_UNION: - * - * the schema has "union" in the set of finalDefault. - */ -#define XML_SCHEMAS_FINAL_DEFAULT_UNION 1 << 5 -/** - * XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION: - * - * the schema has "extension" in the set of blockDefault. - */ -#define XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION 1 << 6 -/** - * XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION: - * - * the schema has "restriction" in the set of blockDefault. - */ -#define XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION 1 << 7 -/** - * XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION: - * - * the schema has "substitution" in the set of blockDefault. - */ -#define XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION 1 << 8 -/** - * XML_SCHEMAS_INCLUDING_CONVERT_NS: - * - * the schema is currently including an other schema with - * no target namespace. - */ -#define XML_SCHEMAS_INCLUDING_CONVERT_NS 1 << 9 -/** - * _xmlSchema: - * - * A Schemas definition - */ -struct _xmlSchema { - const xmlChar *name; /* schema name */ - const xmlChar *targetNamespace; /* the target namespace */ - const xmlChar *version; - const xmlChar *id; /* Obsolete */ - xmlDocPtr doc; - xmlSchemaAnnotPtr annot; - int flags; - - xmlHashTablePtr typeDecl; - xmlHashTablePtr attrDecl; - xmlHashTablePtr attrgrpDecl; - xmlHashTablePtr elemDecl; - xmlHashTablePtr notaDecl; - - xmlHashTablePtr schemasImports; - - void *_private; /* unused by the library for users or bindings */ - xmlHashTablePtr groupDecl; - xmlDictPtr dict; - void *includes; /* the includes, this is opaque for now */ - int preserve; /* whether to free the document */ - int counter; /* used to give ononymous components unique names */ - xmlHashTablePtr idcDef; /* All identity-constraint defs. */ - void *volatiles; /* Obsolete */ -}; - -XMLPUBFUN void XMLCALL xmlSchemaFreeType (xmlSchemaTypePtr type); -XMLPUBFUN void XMLCALL xmlSchemaFreeWildcard(xmlSchemaWildcardPtr wildcard); - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_SCHEMAS_ENABLED */ -#endif /* __XML_SCHEMA_INTERNALS_H__ */ diff --git a/cache/include/libxml/schematron.h b/cache/include/libxml/schematron.h deleted file mode 100644 index 364eaec..0000000 --- a/cache/include/libxml/schematron.h +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Summary: XML Schemastron implementation - * Description: interface to the XML Schematron validity checking. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - - -#ifndef __XML_SCHEMATRON_H__ -#define __XML_SCHEMATRON_H__ - -#include - -#ifdef LIBXML_SCHEMATRON_ENABLED - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - XML_SCHEMATRON_OUT_QUIET = 1 << 0, /* quiet no report */ - XML_SCHEMATRON_OUT_TEXT = 1 << 1, /* build a textual report */ - XML_SCHEMATRON_OUT_XML = 1 << 2, /* output SVRL */ - XML_SCHEMATRON_OUT_ERROR = 1 << 3, /* output via xmlStructuredErrorFunc */ - XML_SCHEMATRON_OUT_FILE = 1 << 8, /* output to a file descriptor */ - XML_SCHEMATRON_OUT_BUFFER = 1 << 9, /* output to a buffer */ - XML_SCHEMATRON_OUT_IO = 1 << 10 /* output to I/O mechanism */ -} xmlSchematronValidOptions; - -/** - * The schemas related types are kept internal - */ -typedef struct _xmlSchematron xmlSchematron; -typedef xmlSchematron *xmlSchematronPtr; - -/** - * xmlSchematronValidityErrorFunc: - * @ctx: the validation context - * @msg: the message - * @...: extra arguments - * - * Signature of an error callback from a Schematron validation - */ -typedef void (*xmlSchematronValidityErrorFunc) (void *ctx, const char *msg, ...); - -/** - * xmlSchematronValidityWarningFunc: - * @ctx: the validation context - * @msg: the message - * @...: extra arguments - * - * Signature of a warning callback from a Schematron validation - */ -typedef void (*xmlSchematronValidityWarningFunc) (void *ctx, const char *msg, ...); - -/** - * A schemas validation context - */ -typedef struct _xmlSchematronParserCtxt xmlSchematronParserCtxt; -typedef xmlSchematronParserCtxt *xmlSchematronParserCtxtPtr; - -typedef struct _xmlSchematronValidCtxt xmlSchematronValidCtxt; -typedef xmlSchematronValidCtxt *xmlSchematronValidCtxtPtr; - -/* - * Interfaces for parsing. - */ -XMLPUBFUN xmlSchematronParserCtxtPtr XMLCALL - xmlSchematronNewParserCtxt (const char *URL); -XMLPUBFUN xmlSchematronParserCtxtPtr XMLCALL - xmlSchematronNewMemParserCtxt(const char *buffer, - int size); -XMLPUBFUN xmlSchematronParserCtxtPtr XMLCALL - xmlSchematronNewDocParserCtxt(xmlDocPtr doc); -XMLPUBFUN void XMLCALL - xmlSchematronFreeParserCtxt (xmlSchematronParserCtxtPtr ctxt); -/***** -XMLPUBFUN void XMLCALL - xmlSchematronSetParserErrors(xmlSchematronParserCtxtPtr ctxt, - xmlSchematronValidityErrorFunc err, - xmlSchematronValidityWarningFunc warn, - void *ctx); -XMLPUBFUN int XMLCALL - xmlSchematronGetParserErrors(xmlSchematronParserCtxtPtr ctxt, - xmlSchematronValidityErrorFunc * err, - xmlSchematronValidityWarningFunc * warn, - void **ctx); -XMLPUBFUN int XMLCALL - xmlSchematronIsValid (xmlSchematronValidCtxtPtr ctxt); - *****/ -XMLPUBFUN xmlSchematronPtr XMLCALL - xmlSchematronParse (xmlSchematronParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlSchematronFree (xmlSchematronPtr schema); -/* - * Interfaces for validating - */ -XMLPUBFUN void XMLCALL - xmlSchematronSetValidStructuredErrors( - xmlSchematronValidCtxtPtr ctxt, - xmlStructuredErrorFunc serror, - void *ctx); -/****** -XMLPUBFUN void XMLCALL - xmlSchematronSetValidErrors (xmlSchematronValidCtxtPtr ctxt, - xmlSchematronValidityErrorFunc err, - xmlSchematronValidityWarningFunc warn, - void *ctx); -XMLPUBFUN int XMLCALL - xmlSchematronGetValidErrors (xmlSchematronValidCtxtPtr ctxt, - xmlSchematronValidityErrorFunc *err, - xmlSchematronValidityWarningFunc *warn, - void **ctx); -XMLPUBFUN int XMLCALL - xmlSchematronSetValidOptions(xmlSchematronValidCtxtPtr ctxt, - int options); -XMLPUBFUN int XMLCALL - xmlSchematronValidCtxtGetOptions(xmlSchematronValidCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlSchematronValidateOneElement (xmlSchematronValidCtxtPtr ctxt, - xmlNodePtr elem); - *******/ - -XMLPUBFUN xmlSchematronValidCtxtPtr XMLCALL - xmlSchematronNewValidCtxt (xmlSchematronPtr schema, - int options); -XMLPUBFUN void XMLCALL - xmlSchematronFreeValidCtxt (xmlSchematronValidCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlSchematronValidateDoc (xmlSchematronValidCtxtPtr ctxt, - xmlDocPtr instance); - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_SCHEMATRON_ENABLED */ -#endif /* __XML_SCHEMATRON_H__ */ diff --git a/cache/include/libxml/threads.h b/cache/include/libxml/threads.h deleted file mode 100644 index d31f16a..0000000 --- a/cache/include/libxml/threads.h +++ /dev/null @@ -1,84 +0,0 @@ -/** - * Summary: interfaces for thread handling - * Description: set of generic threading related routines - * should work with pthreads, Windows native or TLS threads - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_THREADS_H__ -#define __XML_THREADS_H__ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * xmlMutex are a simple mutual exception locks. - */ -typedef struct _xmlMutex xmlMutex; -typedef xmlMutex *xmlMutexPtr; - -/* - * xmlRMutex are reentrant mutual exception locks. - */ -typedef struct _xmlRMutex xmlRMutex; -typedef xmlRMutex *xmlRMutexPtr; - -#ifdef __cplusplus -} -#endif -#include -#ifdef __cplusplus -extern "C" { -#endif -XMLPUBFUN xmlMutexPtr XMLCALL - xmlNewMutex (void); -XMLPUBFUN void XMLCALL - xmlMutexLock (xmlMutexPtr tok); -XMLPUBFUN void XMLCALL - xmlMutexUnlock (xmlMutexPtr tok); -XMLPUBFUN void XMLCALL - xmlFreeMutex (xmlMutexPtr tok); - -XMLPUBFUN xmlRMutexPtr XMLCALL - xmlNewRMutex (void); -XMLPUBFUN void XMLCALL - xmlRMutexLock (xmlRMutexPtr tok); -XMLPUBFUN void XMLCALL - xmlRMutexUnlock (xmlRMutexPtr tok); -XMLPUBFUN void XMLCALL - xmlFreeRMutex (xmlRMutexPtr tok); - -/* - * Library wide APIs. - */ -XMLPUBFUN void XMLCALL - xmlInitThreads (void); -XMLPUBFUN void XMLCALL - xmlLockLibrary (void); -XMLPUBFUN void XMLCALL - xmlUnlockLibrary(void); -XMLPUBFUN int XMLCALL - xmlGetThreadId (void); -XMLPUBFUN int XMLCALL - xmlIsMainThread (void); -XMLPUBFUN void XMLCALL - xmlCleanupThreads(void); -XMLPUBFUN xmlGlobalStatePtr XMLCALL - xmlGetGlobalState(void); - -#if defined(HAVE_WIN32_THREADS) && !defined(HAVE_COMPILER_TLS) && defined(LIBXML_STATIC_FOR_DLL) -int XMLCALL xmlDllMain(void *hinstDLL, unsigned long fdwReason, void *lpvReserved); -#endif - -#ifdef __cplusplus -} -#endif - - -#endif /* __XML_THREADS_H__ */ diff --git a/cache/include/libxml/tree.h b/cache/include/libxml/tree.h deleted file mode 100644 index 2f90717..0000000 --- a/cache/include/libxml/tree.h +++ /dev/null @@ -1,1310 +0,0 @@ -/* - * Summary: interfaces for tree manipulation - * Description: this module describes the structures found in an tree resulting - * from an XML or HTML parsing, as well as the API provided for - * various processing on that tree - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_TREE_H__ -#define __XML_TREE_H__ - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Some of the basic types pointer to structures: - */ -/* xmlIO.h */ -typedef struct _xmlParserInputBuffer xmlParserInputBuffer; -typedef xmlParserInputBuffer *xmlParserInputBufferPtr; - -typedef struct _xmlOutputBuffer xmlOutputBuffer; -typedef xmlOutputBuffer *xmlOutputBufferPtr; - -/* parser.h */ -typedef struct _xmlParserInput xmlParserInput; -typedef xmlParserInput *xmlParserInputPtr; - -typedef struct _xmlParserCtxt xmlParserCtxt; -typedef xmlParserCtxt *xmlParserCtxtPtr; - -typedef struct _xmlSAXLocator xmlSAXLocator; -typedef xmlSAXLocator *xmlSAXLocatorPtr; - -typedef struct _xmlSAXHandler xmlSAXHandler; -typedef xmlSAXHandler *xmlSAXHandlerPtr; - -/* entities.h */ -typedef struct _xmlEntity xmlEntity; -typedef xmlEntity *xmlEntityPtr; - -/** - * BASE_BUFFER_SIZE: - * - * default buffer size 4000. - */ -#define BASE_BUFFER_SIZE 4096 - -/** - * LIBXML_NAMESPACE_DICT: - * - * Defines experimental behaviour: - * 1) xmlNs gets an additional field @context (a xmlDoc) - * 2) when creating a tree, xmlNs->href is stored in the dict of xmlDoc. - */ -/* #define LIBXML_NAMESPACE_DICT */ - -/** - * xmlBufferAllocationScheme: - * - * A buffer allocation scheme can be defined to either match exactly the - * need or double it's allocated size each time it is found too small. - */ - -typedef enum { - XML_BUFFER_ALLOC_DOUBLEIT, /* double each time one need to grow */ - XML_BUFFER_ALLOC_EXACT, /* grow only to the minimal size */ - XML_BUFFER_ALLOC_IMMUTABLE, /* immutable buffer */ - XML_BUFFER_ALLOC_IO, /* special allocation scheme used for I/O */ - XML_BUFFER_ALLOC_HYBRID /* exact up to a threshold, and doubleit thereafter */ -} xmlBufferAllocationScheme; - -/** - * xmlBuffer: - * - * A buffer structure, this old construct is limited to 2GB and - * is being deprecated, use API with xmlBuf instead - */ -typedef struct _xmlBuffer xmlBuffer; -typedef xmlBuffer *xmlBufferPtr; -struct _xmlBuffer { - xmlChar *content; /* The buffer content UTF8 */ - unsigned int use; /* The buffer size used */ - unsigned int size; /* The buffer size */ - xmlBufferAllocationScheme alloc; /* The realloc method */ - xmlChar *contentIO; /* in IO mode we may have a different base */ -}; - -/** - * xmlBuf: - * - * A buffer structure, new one, the actual structure internals are not public - */ - -typedef struct _xmlBuf xmlBuf; - -/** - * xmlBufPtr: - * - * A pointer to a buffer structure, the actual structure internals are not - * public - */ - -typedef xmlBuf *xmlBufPtr; - -/* - * A few public routines for xmlBuf. As those are expected to be used - * mostly internally the bulk of the routines are internal in buf.h - */ -XMLPUBFUN xmlChar* XMLCALL xmlBufContent (const xmlBuf* buf); -XMLPUBFUN xmlChar* XMLCALL xmlBufEnd (xmlBufPtr buf); -XMLPUBFUN size_t XMLCALL xmlBufUse (const xmlBufPtr buf); -XMLPUBFUN size_t XMLCALL xmlBufShrink (xmlBufPtr buf, size_t len); - -/* - * LIBXML2_NEW_BUFFER: - * - * Macro used to express that the API use the new buffers for - * xmlParserInputBuffer and xmlOutputBuffer. The change was - * introduced in 2.9.0. - */ -#define LIBXML2_NEW_BUFFER - -/** - * XML_XML_NAMESPACE: - * - * This is the namespace for the special xml: prefix predefined in the - * XML Namespace specification. - */ -#define XML_XML_NAMESPACE \ - (const xmlChar *) "http://www.w3.org/XML/1998/namespace" - -/** - * XML_XML_ID: - * - * This is the name for the special xml:id attribute - */ -#define XML_XML_ID (const xmlChar *) "xml:id" - -/* - * The different element types carried by an XML tree. - * - * NOTE: This is synchronized with DOM Level1 values - * See http://www.w3.org/TR/REC-DOM-Level-1/ - * - * Actually this had diverged a bit, and now XML_DOCUMENT_TYPE_NODE should - * be deprecated to use an XML_DTD_NODE. - */ -typedef enum { - XML_ELEMENT_NODE= 1, - XML_ATTRIBUTE_NODE= 2, - XML_TEXT_NODE= 3, - XML_CDATA_SECTION_NODE= 4, - XML_ENTITY_REF_NODE= 5, - XML_ENTITY_NODE= 6, - XML_PI_NODE= 7, - XML_COMMENT_NODE= 8, - XML_DOCUMENT_NODE= 9, - XML_DOCUMENT_TYPE_NODE= 10, - XML_DOCUMENT_FRAG_NODE= 11, - XML_NOTATION_NODE= 12, - XML_HTML_DOCUMENT_NODE= 13, - XML_DTD_NODE= 14, - XML_ELEMENT_DECL= 15, - XML_ATTRIBUTE_DECL= 16, - XML_ENTITY_DECL= 17, - XML_NAMESPACE_DECL= 18, - XML_XINCLUDE_START= 19, - XML_XINCLUDE_END= 20 -#ifdef LIBXML_DOCB_ENABLED - ,XML_DOCB_DOCUMENT_NODE= 21 -#endif -} xmlElementType; - - -/** - * xmlNotation: - * - * A DTD Notation definition. - */ - -typedef struct _xmlNotation xmlNotation; -typedef xmlNotation *xmlNotationPtr; -struct _xmlNotation { - const xmlChar *name; /* Notation name */ - const xmlChar *PublicID; /* Public identifier, if any */ - const xmlChar *SystemID; /* System identifier, if any */ -}; - -/** - * xmlAttributeType: - * - * A DTD Attribute type definition. - */ - -typedef enum { - XML_ATTRIBUTE_CDATA = 1, - XML_ATTRIBUTE_ID, - XML_ATTRIBUTE_IDREF , - XML_ATTRIBUTE_IDREFS, - XML_ATTRIBUTE_ENTITY, - XML_ATTRIBUTE_ENTITIES, - XML_ATTRIBUTE_NMTOKEN, - XML_ATTRIBUTE_NMTOKENS, - XML_ATTRIBUTE_ENUMERATION, - XML_ATTRIBUTE_NOTATION -} xmlAttributeType; - -/** - * xmlAttributeDefault: - * - * A DTD Attribute default definition. - */ - -typedef enum { - XML_ATTRIBUTE_NONE = 1, - XML_ATTRIBUTE_REQUIRED, - XML_ATTRIBUTE_IMPLIED, - XML_ATTRIBUTE_FIXED -} xmlAttributeDefault; - -/** - * xmlEnumeration: - * - * List structure used when there is an enumeration in DTDs. - */ - -typedef struct _xmlEnumeration xmlEnumeration; -typedef xmlEnumeration *xmlEnumerationPtr; -struct _xmlEnumeration { - struct _xmlEnumeration *next; /* next one */ - const xmlChar *name; /* Enumeration name */ -}; - -/** - * xmlAttribute: - * - * An Attribute declaration in a DTD. - */ - -typedef struct _xmlAttribute xmlAttribute; -typedef xmlAttribute *xmlAttributePtr; -struct _xmlAttribute { - void *_private; /* application data */ - xmlElementType type; /* XML_ATTRIBUTE_DECL, must be second ! */ - const xmlChar *name; /* Attribute name */ - struct _xmlNode *children; /* NULL */ - struct _xmlNode *last; /* NULL */ - struct _xmlDtd *parent; /* -> DTD */ - struct _xmlNode *next; /* next sibling link */ - struct _xmlNode *prev; /* previous sibling link */ - struct _xmlDoc *doc; /* the containing document */ - - struct _xmlAttribute *nexth; /* next in hash table */ - xmlAttributeType atype; /* The attribute type */ - xmlAttributeDefault def; /* the default */ - const xmlChar *defaultValue; /* or the default value */ - xmlEnumerationPtr tree; /* or the enumeration tree if any */ - const xmlChar *prefix; /* the namespace prefix if any */ - const xmlChar *elem; /* Element holding the attribute */ -}; - -/** - * xmlElementContentType: - * - * Possible definitions of element content types. - */ -typedef enum { - XML_ELEMENT_CONTENT_PCDATA = 1, - XML_ELEMENT_CONTENT_ELEMENT, - XML_ELEMENT_CONTENT_SEQ, - XML_ELEMENT_CONTENT_OR -} xmlElementContentType; - -/** - * xmlElementContentOccur: - * - * Possible definitions of element content occurrences. - */ -typedef enum { - XML_ELEMENT_CONTENT_ONCE = 1, - XML_ELEMENT_CONTENT_OPT, - XML_ELEMENT_CONTENT_MULT, - XML_ELEMENT_CONTENT_PLUS -} xmlElementContentOccur; - -/** - * xmlElementContent: - * - * An XML Element content as stored after parsing an element definition - * in a DTD. - */ - -typedef struct _xmlElementContent xmlElementContent; -typedef xmlElementContent *xmlElementContentPtr; -struct _xmlElementContent { - xmlElementContentType type; /* PCDATA, ELEMENT, SEQ or OR */ - xmlElementContentOccur ocur; /* ONCE, OPT, MULT or PLUS */ - const xmlChar *name; /* Element name */ - struct _xmlElementContent *c1; /* first child */ - struct _xmlElementContent *c2; /* second child */ - struct _xmlElementContent *parent; /* parent */ - const xmlChar *prefix; /* Namespace prefix */ -}; - -/** - * xmlElementTypeVal: - * - * The different possibilities for an element content type. - */ - -typedef enum { - XML_ELEMENT_TYPE_UNDEFINED = 0, - XML_ELEMENT_TYPE_EMPTY = 1, - XML_ELEMENT_TYPE_ANY, - XML_ELEMENT_TYPE_MIXED, - XML_ELEMENT_TYPE_ELEMENT -} xmlElementTypeVal; - -#ifdef __cplusplus -} -#endif -#include -#ifdef __cplusplus -extern "C" { -#endif - -/** - * xmlElement: - * - * An XML Element declaration from a DTD. - */ - -typedef struct _xmlElement xmlElement; -typedef xmlElement *xmlElementPtr; -struct _xmlElement { - void *_private; /* application data */ - xmlElementType type; /* XML_ELEMENT_DECL, must be second ! */ - const xmlChar *name; /* Element name */ - struct _xmlNode *children; /* NULL */ - struct _xmlNode *last; /* NULL */ - struct _xmlDtd *parent; /* -> DTD */ - struct _xmlNode *next; /* next sibling link */ - struct _xmlNode *prev; /* previous sibling link */ - struct _xmlDoc *doc; /* the containing document */ - - xmlElementTypeVal etype; /* The type */ - xmlElementContentPtr content; /* the allowed element content */ - xmlAttributePtr attributes; /* List of the declared attributes */ - const xmlChar *prefix; /* the namespace prefix if any */ -#ifdef LIBXML_REGEXP_ENABLED - xmlRegexpPtr contModel; /* the validating regexp */ -#else - void *contModel; -#endif -}; - - -/** - * XML_LOCAL_NAMESPACE: - * - * A namespace declaration node. - */ -#define XML_LOCAL_NAMESPACE XML_NAMESPACE_DECL -typedef xmlElementType xmlNsType; - -/** - * xmlNs: - * - * An XML namespace. - * Note that prefix == NULL is valid, it defines the default namespace - * within the subtree (until overridden). - * - * xmlNsType is unified with xmlElementType. - */ - -typedef struct _xmlNs xmlNs; -typedef xmlNs *xmlNsPtr; -struct _xmlNs { - struct _xmlNs *next; /* next Ns link for this node */ - xmlNsType type; /* global or local */ - const xmlChar *href; /* URL for the namespace */ - const xmlChar *prefix; /* prefix for the namespace */ - void *_private; /* application data */ - struct _xmlDoc *context; /* normally an xmlDoc */ -}; - -/** - * xmlDtd: - * - * An XML DTD, as defined by parent link */ - struct _xmlNode *next; /* next sibling link */ - struct _xmlNode *prev; /* previous sibling link */ - struct _xmlDoc *doc; /* the containing document */ - - /* End of common part */ - void *notations; /* Hash table for notations if any */ - void *elements; /* Hash table for elements if any */ - void *attributes; /* Hash table for attributes if any */ - void *entities; /* Hash table for entities if any */ - const xmlChar *ExternalID; /* External identifier for PUBLIC DTD */ - const xmlChar *SystemID; /* URI for a SYSTEM or PUBLIC DTD */ - void *pentities; /* Hash table for param entities if any */ -}; - -/** - * xmlAttr: - * - * An attribute on an XML node. - */ -typedef struct _xmlAttr xmlAttr; -typedef xmlAttr *xmlAttrPtr; -struct _xmlAttr { - void *_private; /* application data */ - xmlElementType type; /* XML_ATTRIBUTE_NODE, must be second ! */ - const xmlChar *name; /* the name of the property */ - struct _xmlNode *children; /* the value of the property */ - struct _xmlNode *last; /* NULL */ - struct _xmlNode *parent; /* child->parent link */ - struct _xmlAttr *next; /* next sibling link */ - struct _xmlAttr *prev; /* previous sibling link */ - struct _xmlDoc *doc; /* the containing document */ - xmlNs *ns; /* pointer to the associated namespace */ - xmlAttributeType atype; /* the attribute type if validating */ - void *psvi; /* for type/PSVI informations */ -}; - -/** - * xmlID: - * - * An XML ID instance. - */ - -typedef struct _xmlID xmlID; -typedef xmlID *xmlIDPtr; -struct _xmlID { - struct _xmlID *next; /* next ID */ - const xmlChar *value; /* The ID name */ - xmlAttrPtr attr; /* The attribute holding it */ - const xmlChar *name; /* The attribute if attr is not available */ - int lineno; /* The line number if attr is not available */ - struct _xmlDoc *doc; /* The document holding the ID */ -}; - -/** - * xmlRef: - * - * An XML IDREF instance. - */ - -typedef struct _xmlRef xmlRef; -typedef xmlRef *xmlRefPtr; -struct _xmlRef { - struct _xmlRef *next; /* next Ref */ - const xmlChar *value; /* The Ref name */ - xmlAttrPtr attr; /* The attribute holding it */ - const xmlChar *name; /* The attribute if attr is not available */ - int lineno; /* The line number if attr is not available */ -}; - -/** - * xmlNode: - * - * A node in an XML tree. - */ -typedef struct _xmlNode xmlNode; -typedef xmlNode *xmlNodePtr; -struct _xmlNode { - void *_private; /* application data */ - xmlElementType type; /* type number, must be second ! */ - const xmlChar *name; /* the name of the node, or the entity */ - struct _xmlNode *children; /* parent->childs link */ - struct _xmlNode *last; /* last child link */ - struct _xmlNode *parent; /* child->parent link */ - struct _xmlNode *next; /* next sibling link */ - struct _xmlNode *prev; /* previous sibling link */ - struct _xmlDoc *doc; /* the containing document */ - - /* End of common part */ - xmlNs *ns; /* pointer to the associated namespace */ - xmlChar *content; /* the content */ - struct _xmlAttr *properties;/* properties list */ - xmlNs *nsDef; /* namespace definitions on this node */ - void *psvi; /* for type/PSVI informations */ - unsigned short line; /* line number */ - unsigned short extra; /* extra data for XPath/XSLT */ -}; - -/** - * XML_GET_CONTENT: - * - * Macro to extract the content pointer of a node. - */ -#define XML_GET_CONTENT(n) \ - ((n)->type == XML_ELEMENT_NODE ? NULL : (n)->content) - -/** - * XML_GET_LINE: - * - * Macro to extract the line number of an element node. - */ -#define XML_GET_LINE(n) \ - (xmlGetLineNo(n)) - -/** - * xmlDocProperty - * - * Set of properties of the document as found by the parser - * Some of them are linked to similary named xmlParserOption - */ -typedef enum { - XML_DOC_WELLFORMED = 1<<0, /* document is XML well formed */ - XML_DOC_NSVALID = 1<<1, /* document is Namespace valid */ - XML_DOC_OLD10 = 1<<2, /* parsed with old XML-1.0 parser */ - XML_DOC_DTDVALID = 1<<3, /* DTD validation was successful */ - XML_DOC_XINCLUDE = 1<<4, /* XInclude substitution was done */ - XML_DOC_USERBUILT = 1<<5, /* Document was built using the API - and not by parsing an instance */ - XML_DOC_INTERNAL = 1<<6, /* built for internal processing */ - XML_DOC_HTML = 1<<7 /* parsed or built HTML document */ -} xmlDocProperties; - -/** - * xmlDoc: - * - * An XML document. - */ -typedef struct _xmlDoc xmlDoc; -typedef xmlDoc *xmlDocPtr; -struct _xmlDoc { - void *_private; /* application data */ - xmlElementType type; /* XML_DOCUMENT_NODE, must be second ! */ - char *name; /* name/filename/URI of the document */ - struct _xmlNode *children; /* the document tree */ - struct _xmlNode *last; /* last child link */ - struct _xmlNode *parent; /* child->parent link */ - struct _xmlNode *next; /* next sibling link */ - struct _xmlNode *prev; /* previous sibling link */ - struct _xmlDoc *doc; /* autoreference to itself */ - - /* End of common part */ - int compression;/* level of zlib compression */ - int standalone; /* standalone document (no external refs) - 1 if standalone="yes" - 0 if standalone="no" - -1 if there is no XML declaration - -2 if there is an XML declaration, but no - standalone attribute was specified */ - struct _xmlDtd *intSubset; /* the document internal subset */ - struct _xmlDtd *extSubset; /* the document external subset */ - struct _xmlNs *oldNs; /* Global namespace, the old way */ - const xmlChar *version; /* the XML version string */ - const xmlChar *encoding; /* external initial encoding, if any */ - void *ids; /* Hash table for ID attributes if any */ - void *refs; /* Hash table for IDREFs attributes if any */ - const xmlChar *URL; /* The URI for that document */ - int charset; /* encoding of the in-memory content - actually an xmlCharEncoding */ - struct _xmlDict *dict; /* dict used to allocate names or NULL */ - void *psvi; /* for type/PSVI informations */ - int parseFlags; /* set of xmlParserOption used to parse the - document */ - int properties; /* set of xmlDocProperties for this document - set at the end of parsing */ -}; - - -typedef struct _xmlDOMWrapCtxt xmlDOMWrapCtxt; -typedef xmlDOMWrapCtxt *xmlDOMWrapCtxtPtr; - -/** - * xmlDOMWrapAcquireNsFunction: - * @ctxt: a DOM wrapper context - * @node: the context node (element or attribute) - * @nsName: the requested namespace name - * @nsPrefix: the requested namespace prefix - * - * A function called to acquire namespaces (xmlNs) from the wrapper. - * - * Returns an xmlNsPtr or NULL in case of an error. - */ -typedef xmlNsPtr (*xmlDOMWrapAcquireNsFunction) (xmlDOMWrapCtxtPtr ctxt, - xmlNodePtr node, - const xmlChar *nsName, - const xmlChar *nsPrefix); - -/** - * xmlDOMWrapCtxt: - * - * Context for DOM wrapper-operations. - */ -struct _xmlDOMWrapCtxt { - void * _private; - /* - * The type of this context, just in case we need specialized - * contexts in the future. - */ - int type; - /* - * Internal namespace map used for various operations. - */ - void * namespaceMap; - /* - * Use this one to acquire an xmlNsPtr intended for node->ns. - * (Note that this is not intended for elem->nsDef). - */ - xmlDOMWrapAcquireNsFunction getNsForNodeFunc; -}; - -/** - * xmlChildrenNode: - * - * Macro for compatibility naming layer with libxml1. Maps - * to "children." - */ -#ifndef xmlChildrenNode -#define xmlChildrenNode children -#endif - -/** - * xmlRootNode: - * - * Macro for compatibility naming layer with libxml1. Maps - * to "children". - */ -#ifndef xmlRootNode -#define xmlRootNode children -#endif - -/* - * Variables. - */ - -/* - * Some helper functions - */ -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || \ - defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || \ - defined (LIBXML_HTML_ENABLED) || defined(LIBXML_SAX1_ENABLED) || \ - defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || \ - defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED) -XMLPUBFUN int XMLCALL - xmlValidateNCName (const xmlChar *value, - int space); -#endif - -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN int XMLCALL - xmlValidateQName (const xmlChar *value, - int space); -XMLPUBFUN int XMLCALL - xmlValidateName (const xmlChar *value, - int space); -XMLPUBFUN int XMLCALL - xmlValidateNMToken (const xmlChar *value, - int space); -#endif - -XMLPUBFUN xmlChar * XMLCALL - xmlBuildQName (const xmlChar *ncname, - const xmlChar *prefix, - xmlChar *memory, - int len); -XMLPUBFUN xmlChar * XMLCALL - xmlSplitQName2 (const xmlChar *name, - xmlChar **prefix); -XMLPUBFUN const xmlChar * XMLCALL - xmlSplitQName3 (const xmlChar *name, - int *len); - -/* - * Handling Buffers, the old ones see @xmlBuf for the new ones. - */ - -XMLPUBFUN void XMLCALL - xmlSetBufferAllocationScheme(xmlBufferAllocationScheme scheme); -XMLPUBFUN xmlBufferAllocationScheme XMLCALL - xmlGetBufferAllocationScheme(void); - -XMLPUBFUN xmlBufferPtr XMLCALL - xmlBufferCreate (void); -XMLPUBFUN xmlBufferPtr XMLCALL - xmlBufferCreateSize (size_t size); -XMLPUBFUN xmlBufferPtr XMLCALL - xmlBufferCreateStatic (void *mem, - size_t size); -XMLPUBFUN int XMLCALL - xmlBufferResize (xmlBufferPtr buf, - unsigned int size); -XMLPUBFUN void XMLCALL - xmlBufferFree (xmlBufferPtr buf); -XMLPUBFUN int XMLCALL - xmlBufferDump (FILE *file, - xmlBufferPtr buf); -XMLPUBFUN int XMLCALL - xmlBufferAdd (xmlBufferPtr buf, - const xmlChar *str, - int len); -XMLPUBFUN int XMLCALL - xmlBufferAddHead (xmlBufferPtr buf, - const xmlChar *str, - int len); -XMLPUBFUN int XMLCALL - xmlBufferCat (xmlBufferPtr buf, - const xmlChar *str); -XMLPUBFUN int XMLCALL - xmlBufferCCat (xmlBufferPtr buf, - const char *str); -XMLPUBFUN int XMLCALL - xmlBufferShrink (xmlBufferPtr buf, - unsigned int len); -XMLPUBFUN int XMLCALL - xmlBufferGrow (xmlBufferPtr buf, - unsigned int len); -XMLPUBFUN void XMLCALL - xmlBufferEmpty (xmlBufferPtr buf); -XMLPUBFUN const xmlChar* XMLCALL - xmlBufferContent (const xmlBuffer *buf); -XMLPUBFUN xmlChar* XMLCALL - xmlBufferDetach (xmlBufferPtr buf); -XMLPUBFUN void XMLCALL - xmlBufferSetAllocationScheme(xmlBufferPtr buf, - xmlBufferAllocationScheme scheme); -XMLPUBFUN int XMLCALL - xmlBufferLength (const xmlBuffer *buf); - -/* - * Creating/freeing new structures. - */ -XMLPUBFUN xmlDtdPtr XMLCALL - xmlCreateIntSubset (xmlDocPtr doc, - const xmlChar *name, - const xmlChar *ExternalID, - const xmlChar *SystemID); -XMLPUBFUN xmlDtdPtr XMLCALL - xmlNewDtd (xmlDocPtr doc, - const xmlChar *name, - const xmlChar *ExternalID, - const xmlChar *SystemID); -XMLPUBFUN xmlDtdPtr XMLCALL - xmlGetIntSubset (const xmlDoc *doc); -XMLPUBFUN void XMLCALL - xmlFreeDtd (xmlDtdPtr cur); -#ifdef LIBXML_LEGACY_ENABLED -XMLPUBFUN xmlNsPtr XMLCALL - xmlNewGlobalNs (xmlDocPtr doc, - const xmlChar *href, - const xmlChar *prefix); -#endif /* LIBXML_LEGACY_ENABLED */ -XMLPUBFUN xmlNsPtr XMLCALL - xmlNewNs (xmlNodePtr node, - const xmlChar *href, - const xmlChar *prefix); -XMLPUBFUN void XMLCALL - xmlFreeNs (xmlNsPtr cur); -XMLPUBFUN void XMLCALL - xmlFreeNsList (xmlNsPtr cur); -XMLPUBFUN xmlDocPtr XMLCALL - xmlNewDoc (const xmlChar *version); -XMLPUBFUN void XMLCALL - xmlFreeDoc (xmlDocPtr cur); -XMLPUBFUN xmlAttrPtr XMLCALL - xmlNewDocProp (xmlDocPtr doc, - const xmlChar *name, - const xmlChar *value); -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \ - defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN xmlAttrPtr XMLCALL - xmlNewProp (xmlNodePtr node, - const xmlChar *name, - const xmlChar *value); -#endif -XMLPUBFUN xmlAttrPtr XMLCALL - xmlNewNsProp (xmlNodePtr node, - xmlNsPtr ns, - const xmlChar *name, - const xmlChar *value); -XMLPUBFUN xmlAttrPtr XMLCALL - xmlNewNsPropEatName (xmlNodePtr node, - xmlNsPtr ns, - xmlChar *name, - const xmlChar *value); -XMLPUBFUN void XMLCALL - xmlFreePropList (xmlAttrPtr cur); -XMLPUBFUN void XMLCALL - xmlFreeProp (xmlAttrPtr cur); -XMLPUBFUN xmlAttrPtr XMLCALL - xmlCopyProp (xmlNodePtr target, - xmlAttrPtr cur); -XMLPUBFUN xmlAttrPtr XMLCALL - xmlCopyPropList (xmlNodePtr target, - xmlAttrPtr cur); -#ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlDtdPtr XMLCALL - xmlCopyDtd (xmlDtdPtr dtd); -#endif /* LIBXML_TREE_ENABLED */ -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN xmlDocPtr XMLCALL - xmlCopyDoc (xmlDocPtr doc, - int recursive); -#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */ -/* - * Creating new nodes. - */ -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewDocNode (xmlDocPtr doc, - xmlNsPtr ns, - const xmlChar *name, - const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewDocNodeEatName (xmlDocPtr doc, - xmlNsPtr ns, - xmlChar *name, - const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewNode (xmlNsPtr ns, - const xmlChar *name); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewNodeEatName (xmlNsPtr ns, - xmlChar *name); -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewChild (xmlNodePtr parent, - xmlNsPtr ns, - const xmlChar *name, - const xmlChar *content); -#endif -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewDocText (const xmlDoc *doc, - const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewText (const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewDocPI (xmlDocPtr doc, - const xmlChar *name, - const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewPI (const xmlChar *name, - const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewDocTextLen (xmlDocPtr doc, - const xmlChar *content, - int len); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewTextLen (const xmlChar *content, - int len); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewDocComment (xmlDocPtr doc, - const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewComment (const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewCDataBlock (xmlDocPtr doc, - const xmlChar *content, - int len); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewCharRef (xmlDocPtr doc, - const xmlChar *name); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewReference (const xmlDoc *doc, - const xmlChar *name); -XMLPUBFUN xmlNodePtr XMLCALL - xmlCopyNode (xmlNodePtr node, - int recursive); -XMLPUBFUN xmlNodePtr XMLCALL - xmlDocCopyNode (xmlNodePtr node, - xmlDocPtr doc, - int recursive); -XMLPUBFUN xmlNodePtr XMLCALL - xmlDocCopyNodeList (xmlDocPtr doc, - xmlNodePtr node); -XMLPUBFUN xmlNodePtr XMLCALL - xmlCopyNodeList (xmlNodePtr node); -#ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewTextChild (xmlNodePtr parent, - xmlNsPtr ns, - const xmlChar *name, - const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewDocRawNode (xmlDocPtr doc, - xmlNsPtr ns, - const xmlChar *name, - const xmlChar *content); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNewDocFragment (xmlDocPtr doc); -#endif /* LIBXML_TREE_ENABLED */ - -/* - * Navigating. - */ -XMLPUBFUN long XMLCALL - xmlGetLineNo (const xmlNode *node); -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED) -XMLPUBFUN xmlChar * XMLCALL - xmlGetNodePath (const xmlNode *node); -#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED) */ -XMLPUBFUN xmlNodePtr XMLCALL - xmlDocGetRootElement (const xmlDoc *doc); -XMLPUBFUN xmlNodePtr XMLCALL - xmlGetLastChild (const xmlNode *parent); -XMLPUBFUN int XMLCALL - xmlNodeIsText (const xmlNode *node); -XMLPUBFUN int XMLCALL - xmlIsBlankNode (const xmlNode *node); - -/* - * Changing the structure. - */ -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) -XMLPUBFUN xmlNodePtr XMLCALL - xmlDocSetRootElement (xmlDocPtr doc, - xmlNodePtr root); -#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */ -#ifdef LIBXML_TREE_ENABLED -XMLPUBFUN void XMLCALL - xmlNodeSetName (xmlNodePtr cur, - const xmlChar *name); -#endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN xmlNodePtr XMLCALL - xmlAddChild (xmlNodePtr parent, - xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL - xmlAddChildList (xmlNodePtr parent, - xmlNodePtr cur); -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) -XMLPUBFUN xmlNodePtr XMLCALL - xmlReplaceNode (xmlNodePtr old, - xmlNodePtr cur); -#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */ -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \ - defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) -XMLPUBFUN xmlNodePtr XMLCALL - xmlAddPrevSibling (xmlNodePtr cur, - xmlNodePtr elem); -#endif /* LIBXML_TREE_ENABLED || LIBXML_HTML_ENABLED || LIBXML_SCHEMAS_ENABLED */ -XMLPUBFUN xmlNodePtr XMLCALL - xmlAddSibling (xmlNodePtr cur, - xmlNodePtr elem); -XMLPUBFUN xmlNodePtr XMLCALL - xmlAddNextSibling (xmlNodePtr cur, - xmlNodePtr elem); -XMLPUBFUN void XMLCALL - xmlUnlinkNode (xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL - xmlTextMerge (xmlNodePtr first, - xmlNodePtr second); -XMLPUBFUN int XMLCALL - xmlTextConcat (xmlNodePtr node, - const xmlChar *content, - int len); -XMLPUBFUN void XMLCALL - xmlFreeNodeList (xmlNodePtr cur); -XMLPUBFUN void XMLCALL - xmlFreeNode (xmlNodePtr cur); -XMLPUBFUN void XMLCALL - xmlSetTreeDoc (xmlNodePtr tree, - xmlDocPtr doc); -XMLPUBFUN void XMLCALL - xmlSetListDoc (xmlNodePtr list, - xmlDocPtr doc); -/* - * Namespaces. - */ -XMLPUBFUN xmlNsPtr XMLCALL - xmlSearchNs (xmlDocPtr doc, - xmlNodePtr node, - const xmlChar *nameSpace); -XMLPUBFUN xmlNsPtr XMLCALL - xmlSearchNsByHref (xmlDocPtr doc, - xmlNodePtr node, - const xmlChar *href); -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || \ - defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN xmlNsPtr * XMLCALL - xmlGetNsList (const xmlDoc *doc, - const xmlNode *node); -#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) */ - -XMLPUBFUN void XMLCALL - xmlSetNs (xmlNodePtr node, - xmlNsPtr ns); -XMLPUBFUN xmlNsPtr XMLCALL - xmlCopyNamespace (xmlNsPtr cur); -XMLPUBFUN xmlNsPtr XMLCALL - xmlCopyNamespaceList (xmlNsPtr cur); - -/* - * Changing the content. - */ -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || \ - defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) -XMLPUBFUN xmlAttrPtr XMLCALL - xmlSetProp (xmlNodePtr node, - const xmlChar *name, - const xmlChar *value); -XMLPUBFUN xmlAttrPtr XMLCALL - xmlSetNsProp (xmlNodePtr node, - xmlNsPtr ns, - const xmlChar *name, - const xmlChar *value); -#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || \ - defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) */ -XMLPUBFUN xmlChar * XMLCALL - xmlGetNoNsProp (const xmlNode *node, - const xmlChar *name); -XMLPUBFUN xmlChar * XMLCALL - xmlGetProp (const xmlNode *node, - const xmlChar *name); -XMLPUBFUN xmlAttrPtr XMLCALL - xmlHasProp (const xmlNode *node, - const xmlChar *name); -XMLPUBFUN xmlAttrPtr XMLCALL - xmlHasNsProp (const xmlNode *node, - const xmlChar *name, - const xmlChar *nameSpace); -XMLPUBFUN xmlChar * XMLCALL - xmlGetNsProp (const xmlNode *node, - const xmlChar *name, - const xmlChar *nameSpace); -XMLPUBFUN xmlNodePtr XMLCALL - xmlStringGetNodeList (const xmlDoc *doc, - const xmlChar *value); -XMLPUBFUN xmlNodePtr XMLCALL - xmlStringLenGetNodeList (const xmlDoc *doc, - const xmlChar *value, - int len); -XMLPUBFUN xmlChar * XMLCALL - xmlNodeListGetString (xmlDocPtr doc, - const xmlNode *list, - int inLine); -#ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlChar * XMLCALL - xmlNodeListGetRawString (const xmlDoc *doc, - const xmlNode *list, - int inLine); -#endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN void XMLCALL - xmlNodeSetContent (xmlNodePtr cur, - const xmlChar *content); -#ifdef LIBXML_TREE_ENABLED -XMLPUBFUN void XMLCALL - xmlNodeSetContentLen (xmlNodePtr cur, - const xmlChar *content, - int len); -#endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN void XMLCALL - xmlNodeAddContent (xmlNodePtr cur, - const xmlChar *content); -XMLPUBFUN void XMLCALL - xmlNodeAddContentLen (xmlNodePtr cur, - const xmlChar *content, - int len); -XMLPUBFUN xmlChar * XMLCALL - xmlNodeGetContent (const xmlNode *cur); - -XMLPUBFUN int XMLCALL - xmlNodeBufGetContent (xmlBufferPtr buffer, - const xmlNode *cur); -XMLPUBFUN int XMLCALL - xmlBufGetNodeContent (xmlBufPtr buf, - const xmlNode *cur); - -XMLPUBFUN xmlChar * XMLCALL - xmlNodeGetLang (const xmlNode *cur); -XMLPUBFUN int XMLCALL - xmlNodeGetSpacePreserve (const xmlNode *cur); -#ifdef LIBXML_TREE_ENABLED -XMLPUBFUN void XMLCALL - xmlNodeSetLang (xmlNodePtr cur, - const xmlChar *lang); -XMLPUBFUN void XMLCALL - xmlNodeSetSpacePreserve (xmlNodePtr cur, - int val); -#endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN xmlChar * XMLCALL - xmlNodeGetBase (const xmlDoc *doc, - const xmlNode *cur); -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) -XMLPUBFUN void XMLCALL - xmlNodeSetBase (xmlNodePtr cur, - const xmlChar *uri); -#endif - -/* - * Removing content. - */ -XMLPUBFUN int XMLCALL - xmlRemoveProp (xmlAttrPtr cur); -#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN int XMLCALL - xmlUnsetNsProp (xmlNodePtr node, - xmlNsPtr ns, - const xmlChar *name); -XMLPUBFUN int XMLCALL - xmlUnsetProp (xmlNodePtr node, - const xmlChar *name); -#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */ - -/* - * Internal, don't use. - */ -XMLPUBFUN void XMLCALL - xmlBufferWriteCHAR (xmlBufferPtr buf, - const xmlChar *string); -XMLPUBFUN void XMLCALL - xmlBufferWriteChar (xmlBufferPtr buf, - const char *string); -XMLPUBFUN void XMLCALL - xmlBufferWriteQuotedString(xmlBufferPtr buf, - const xmlChar *string); - -#ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void xmlAttrSerializeTxtContent(xmlBufferPtr buf, - xmlDocPtr doc, - xmlAttrPtr attr, - const xmlChar *string); -#endif /* LIBXML_OUTPUT_ENABLED */ - -#ifdef LIBXML_TREE_ENABLED -/* - * Namespace handling. - */ -XMLPUBFUN int XMLCALL - xmlReconciliateNs (xmlDocPtr doc, - xmlNodePtr tree); -#endif - -#ifdef LIBXML_OUTPUT_ENABLED -/* - * Saving. - */ -XMLPUBFUN void XMLCALL - xmlDocDumpFormatMemory (xmlDocPtr cur, - xmlChar **mem, - int *size, - int format); -XMLPUBFUN void XMLCALL - xmlDocDumpMemory (xmlDocPtr cur, - xmlChar **mem, - int *size); -XMLPUBFUN void XMLCALL - xmlDocDumpMemoryEnc (xmlDocPtr out_doc, - xmlChar **doc_txt_ptr, - int * doc_txt_len, - const char *txt_encoding); -XMLPUBFUN void XMLCALL - xmlDocDumpFormatMemoryEnc(xmlDocPtr out_doc, - xmlChar **doc_txt_ptr, - int * doc_txt_len, - const char *txt_encoding, - int format); -XMLPUBFUN int XMLCALL - xmlDocFormatDump (FILE *f, - xmlDocPtr cur, - int format); -XMLPUBFUN int XMLCALL - xmlDocDump (FILE *f, - xmlDocPtr cur); -XMLPUBFUN void XMLCALL - xmlElemDump (FILE *f, - xmlDocPtr doc, - xmlNodePtr cur); -XMLPUBFUN int XMLCALL - xmlSaveFile (const char *filename, - xmlDocPtr cur); -XMLPUBFUN int XMLCALL - xmlSaveFormatFile (const char *filename, - xmlDocPtr cur, - int format); -XMLPUBFUN size_t XMLCALL - xmlBufNodeDump (xmlBufPtr buf, - xmlDocPtr doc, - xmlNodePtr cur, - int level, - int format); -XMLPUBFUN int XMLCALL - xmlNodeDump (xmlBufferPtr buf, - xmlDocPtr doc, - xmlNodePtr cur, - int level, - int format); - -XMLPUBFUN int XMLCALL - xmlSaveFileTo (xmlOutputBufferPtr buf, - xmlDocPtr cur, - const char *encoding); -XMLPUBFUN int XMLCALL - xmlSaveFormatFileTo (xmlOutputBufferPtr buf, - xmlDocPtr cur, - const char *encoding, - int format); -XMLPUBFUN void XMLCALL - xmlNodeDumpOutput (xmlOutputBufferPtr buf, - xmlDocPtr doc, - xmlNodePtr cur, - int level, - int format, - const char *encoding); - -XMLPUBFUN int XMLCALL - xmlSaveFormatFileEnc (const char *filename, - xmlDocPtr cur, - const char *encoding, - int format); - -XMLPUBFUN int XMLCALL - xmlSaveFileEnc (const char *filename, - xmlDocPtr cur, - const char *encoding); - -#endif /* LIBXML_OUTPUT_ENABLED */ -/* - * XHTML - */ -XMLPUBFUN int XMLCALL - xmlIsXHTML (const xmlChar *systemID, - const xmlChar *publicID); - -/* - * Compression. - */ -XMLPUBFUN int XMLCALL - xmlGetDocCompressMode (const xmlDoc *doc); -XMLPUBFUN void XMLCALL - xmlSetDocCompressMode (xmlDocPtr doc, - int mode); -XMLPUBFUN int XMLCALL - xmlGetCompressMode (void); -XMLPUBFUN void XMLCALL - xmlSetCompressMode (int mode); - -/* -* DOM-wrapper helper functions. -*/ -XMLPUBFUN xmlDOMWrapCtxtPtr XMLCALL - xmlDOMWrapNewCtxt (void); -XMLPUBFUN void XMLCALL - xmlDOMWrapFreeCtxt (xmlDOMWrapCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlDOMWrapReconcileNamespaces(xmlDOMWrapCtxtPtr ctxt, - xmlNodePtr elem, - int options); -XMLPUBFUN int XMLCALL - xmlDOMWrapAdoptNode (xmlDOMWrapCtxtPtr ctxt, - xmlDocPtr sourceDoc, - xmlNodePtr node, - xmlDocPtr destDoc, - xmlNodePtr destParent, - int options); -XMLPUBFUN int XMLCALL - xmlDOMWrapRemoveNode (xmlDOMWrapCtxtPtr ctxt, - xmlDocPtr doc, - xmlNodePtr node, - int options); -XMLPUBFUN int XMLCALL - xmlDOMWrapCloneNode (xmlDOMWrapCtxtPtr ctxt, - xmlDocPtr sourceDoc, - xmlNodePtr node, - xmlNodePtr *clonedNode, - xmlDocPtr destDoc, - xmlNodePtr destParent, - int deep, - int options); - -#ifdef LIBXML_TREE_ENABLED -/* - * 5 interfaces from DOM ElementTraversal, but different in entities - * traversal. - */ -XMLPUBFUN unsigned long XMLCALL - xmlChildElementCount (xmlNodePtr parent); -XMLPUBFUN xmlNodePtr XMLCALL - xmlNextElementSibling (xmlNodePtr node); -XMLPUBFUN xmlNodePtr XMLCALL - xmlFirstElementChild (xmlNodePtr parent); -XMLPUBFUN xmlNodePtr XMLCALL - xmlLastElementChild (xmlNodePtr parent); -XMLPUBFUN xmlNodePtr XMLCALL - xmlPreviousElementSibling (xmlNodePtr node); -#endif -#ifdef __cplusplus -} -#endif -#ifndef __XML_PARSER_H__ -#include -#endif - -#endif /* __XML_TREE_H__ */ - diff --git a/cache/include/libxml/uri.h b/cache/include/libxml/uri.h deleted file mode 100644 index db48262..0000000 --- a/cache/include/libxml/uri.h +++ /dev/null @@ -1,94 +0,0 @@ -/** - * Summary: library of generic URI related routines - * Description: library of generic URI related routines - * Implements RFC 2396 - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_URI_H__ -#define __XML_URI_H__ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * xmlURI: - * - * A parsed URI reference. This is a struct containing the various fields - * as described in RFC 2396 but separated for further processing. - * - * Note: query is a deprecated field which is incorrectly unescaped. - * query_raw takes precedence over query if the former is set. - * See: http://mail.gnome.org/archives/xml/2007-April/thread.html#00127 - */ -typedef struct _xmlURI xmlURI; -typedef xmlURI *xmlURIPtr; -struct _xmlURI { - char *scheme; /* the URI scheme */ - char *opaque; /* opaque part */ - char *authority; /* the authority part */ - char *server; /* the server part */ - char *user; /* the user part */ - int port; /* the port number */ - char *path; /* the path string */ - char *query; /* the query string (deprecated - use with caution) */ - char *fragment; /* the fragment identifier */ - int cleanup; /* parsing potentially unclean URI */ - char *query_raw; /* the query string (as it appears in the URI) */ -}; - -/* - * This function is in tree.h: - * xmlChar * xmlNodeGetBase (xmlDocPtr doc, - * xmlNodePtr cur); - */ -XMLPUBFUN xmlURIPtr XMLCALL - xmlCreateURI (void); -XMLPUBFUN xmlChar * XMLCALL - xmlBuildURI (const xmlChar *URI, - const xmlChar *base); -XMLPUBFUN xmlChar * XMLCALL - xmlBuildRelativeURI (const xmlChar *URI, - const xmlChar *base); -XMLPUBFUN xmlURIPtr XMLCALL - xmlParseURI (const char *str); -XMLPUBFUN xmlURIPtr XMLCALL - xmlParseURIRaw (const char *str, - int raw); -XMLPUBFUN int XMLCALL - xmlParseURIReference (xmlURIPtr uri, - const char *str); -XMLPUBFUN xmlChar * XMLCALL - xmlSaveUri (xmlURIPtr uri); -XMLPUBFUN void XMLCALL - xmlPrintURI (FILE *stream, - xmlURIPtr uri); -XMLPUBFUN xmlChar * XMLCALL - xmlURIEscapeStr (const xmlChar *str, - const xmlChar *list); -XMLPUBFUN char * XMLCALL - xmlURIUnescapeString (const char *str, - int len, - char *target); -XMLPUBFUN int XMLCALL - xmlNormalizeURIPath (char *path); -XMLPUBFUN xmlChar * XMLCALL - xmlURIEscape (const xmlChar *str); -XMLPUBFUN void XMLCALL - xmlFreeURI (xmlURIPtr uri); -XMLPUBFUN xmlChar* XMLCALL - xmlCanonicPath (const xmlChar *path); -XMLPUBFUN xmlChar* XMLCALL - xmlPathToURI (const xmlChar *path); - -#ifdef __cplusplus -} -#endif -#endif /* __XML_URI_H__ */ diff --git a/cache/include/libxml/valid.h b/cache/include/libxml/valid.h deleted file mode 100644 index 2bc7b38..0000000 --- a/cache/include/libxml/valid.h +++ /dev/null @@ -1,458 +0,0 @@ -/* - * Summary: The DTD validation - * Description: API for the DTD handling and the validity checking - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - - -#ifndef __XML_VALID_H__ -#define __XML_VALID_H__ - -#include -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Validation state added for non-determinist content model. - */ -typedef struct _xmlValidState xmlValidState; -typedef xmlValidState *xmlValidStatePtr; - -/** - * xmlValidityErrorFunc: - * @ctx: usually an xmlValidCtxtPtr to a validity error context, - * but comes from ctxt->userData (which normally contains such - * a pointer); ctxt->userData can be changed by the user. - * @msg: the string to format *printf like vararg - * @...: remaining arguments to the format - * - * Callback called when a validity error is found. This is a message - * oriented function similar to an *printf function. - */ -typedef void (XMLCDECL *xmlValidityErrorFunc) (void *ctx, - const char *msg, - ...) LIBXML_ATTR_FORMAT(2,3); - -/** - * xmlValidityWarningFunc: - * @ctx: usually an xmlValidCtxtPtr to a validity error context, - * but comes from ctxt->userData (which normally contains such - * a pointer); ctxt->userData can be changed by the user. - * @msg: the string to format *printf like vararg - * @...: remaining arguments to the format - * - * Callback called when a validity warning is found. This is a message - * oriented function similar to an *printf function. - */ -typedef void (XMLCDECL *xmlValidityWarningFunc) (void *ctx, - const char *msg, - ...) LIBXML_ATTR_FORMAT(2,3); - -#ifdef IN_LIBXML -/** - * XML_CTXT_FINISH_DTD_0: - * - * Special value for finishDtd field when embedded in an xmlParserCtxt - */ -#define XML_CTXT_FINISH_DTD_0 0xabcd1234 -/** - * XML_CTXT_FINISH_DTD_1: - * - * Special value for finishDtd field when embedded in an xmlParserCtxt - */ -#define XML_CTXT_FINISH_DTD_1 0xabcd1235 -#endif - -/* - * xmlValidCtxt: - * An xmlValidCtxt is used for error reporting when validating. - */ -typedef struct _xmlValidCtxt xmlValidCtxt; -typedef xmlValidCtxt *xmlValidCtxtPtr; -struct _xmlValidCtxt { - void *userData; /* user specific data block */ - xmlValidityErrorFunc error; /* the callback in case of errors */ - xmlValidityWarningFunc warning; /* the callback in case of warning */ - - /* Node analysis stack used when validating within entities */ - xmlNodePtr node; /* Current parsed Node */ - int nodeNr; /* Depth of the parsing stack */ - int nodeMax; /* Max depth of the parsing stack */ - xmlNodePtr *nodeTab; /* array of nodes */ - - unsigned int finishDtd; /* finished validating the Dtd ? */ - xmlDocPtr doc; /* the document */ - int valid; /* temporary validity check result */ - - /* state state used for non-determinist content validation */ - xmlValidState *vstate; /* current state */ - int vstateNr; /* Depth of the validation stack */ - int vstateMax; /* Max depth of the validation stack */ - xmlValidState *vstateTab; /* array of validation states */ - -#ifdef LIBXML_REGEXP_ENABLED - xmlAutomataPtr am; /* the automata */ - xmlAutomataStatePtr state; /* used to build the automata */ -#else - void *am; - void *state; -#endif -}; - -/* - * ALL notation declarations are stored in a table. - * There is one table per DTD. - */ - -typedef struct _xmlHashTable xmlNotationTable; -typedef xmlNotationTable *xmlNotationTablePtr; - -/* - * ALL element declarations are stored in a table. - * There is one table per DTD. - */ - -typedef struct _xmlHashTable xmlElementTable; -typedef xmlElementTable *xmlElementTablePtr; - -/* - * ALL attribute declarations are stored in a table. - * There is one table per DTD. - */ - -typedef struct _xmlHashTable xmlAttributeTable; -typedef xmlAttributeTable *xmlAttributeTablePtr; - -/* - * ALL IDs attributes are stored in a table. - * There is one table per document. - */ - -typedef struct _xmlHashTable xmlIDTable; -typedef xmlIDTable *xmlIDTablePtr; - -/* - * ALL Refs attributes are stored in a table. - * There is one table per document. - */ - -typedef struct _xmlHashTable xmlRefTable; -typedef xmlRefTable *xmlRefTablePtr; - -/* Notation */ -XMLPUBFUN xmlNotationPtr XMLCALL - xmlAddNotationDecl (xmlValidCtxtPtr ctxt, - xmlDtdPtr dtd, - const xmlChar *name, - const xmlChar *PublicID, - const xmlChar *SystemID); -#ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlNotationTablePtr XMLCALL - xmlCopyNotationTable (xmlNotationTablePtr table); -#endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN void XMLCALL - xmlFreeNotationTable (xmlNotationTablePtr table); -#ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL - xmlDumpNotationDecl (xmlBufferPtr buf, - xmlNotationPtr nota); -XMLPUBFUN void XMLCALL - xmlDumpNotationTable (xmlBufferPtr buf, - xmlNotationTablePtr table); -#endif /* LIBXML_OUTPUT_ENABLED */ - -/* Element Content */ -/* the non Doc version are being deprecated */ -XMLPUBFUN xmlElementContentPtr XMLCALL - xmlNewElementContent (const xmlChar *name, - xmlElementContentType type); -XMLPUBFUN xmlElementContentPtr XMLCALL - xmlCopyElementContent (xmlElementContentPtr content); -XMLPUBFUN void XMLCALL - xmlFreeElementContent (xmlElementContentPtr cur); -/* the new versions with doc argument */ -XMLPUBFUN xmlElementContentPtr XMLCALL - xmlNewDocElementContent (xmlDocPtr doc, - const xmlChar *name, - xmlElementContentType type); -XMLPUBFUN xmlElementContentPtr XMLCALL - xmlCopyDocElementContent(xmlDocPtr doc, - xmlElementContentPtr content); -XMLPUBFUN void XMLCALL - xmlFreeDocElementContent(xmlDocPtr doc, - xmlElementContentPtr cur); -XMLPUBFUN void XMLCALL - xmlSnprintfElementContent(char *buf, - int size, - xmlElementContentPtr content, - int englob); -#ifdef LIBXML_OUTPUT_ENABLED -/* DEPRECATED */ -XMLPUBFUN void XMLCALL - xmlSprintfElementContent(char *buf, - xmlElementContentPtr content, - int englob); -#endif /* LIBXML_OUTPUT_ENABLED */ -/* DEPRECATED */ - -/* Element */ -XMLPUBFUN xmlElementPtr XMLCALL - xmlAddElementDecl (xmlValidCtxtPtr ctxt, - xmlDtdPtr dtd, - const xmlChar *name, - xmlElementTypeVal type, - xmlElementContentPtr content); -#ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlElementTablePtr XMLCALL - xmlCopyElementTable (xmlElementTablePtr table); -#endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN void XMLCALL - xmlFreeElementTable (xmlElementTablePtr table); -#ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL - xmlDumpElementTable (xmlBufferPtr buf, - xmlElementTablePtr table); -XMLPUBFUN void XMLCALL - xmlDumpElementDecl (xmlBufferPtr buf, - xmlElementPtr elem); -#endif /* LIBXML_OUTPUT_ENABLED */ - -/* Enumeration */ -XMLPUBFUN xmlEnumerationPtr XMLCALL - xmlCreateEnumeration (const xmlChar *name); -XMLPUBFUN void XMLCALL - xmlFreeEnumeration (xmlEnumerationPtr cur); -#ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlEnumerationPtr XMLCALL - xmlCopyEnumeration (xmlEnumerationPtr cur); -#endif /* LIBXML_TREE_ENABLED */ - -/* Attribute */ -XMLPUBFUN xmlAttributePtr XMLCALL - xmlAddAttributeDecl (xmlValidCtxtPtr ctxt, - xmlDtdPtr dtd, - const xmlChar *elem, - const xmlChar *name, - const xmlChar *ns, - xmlAttributeType type, - xmlAttributeDefault def, - const xmlChar *defaultValue, - xmlEnumerationPtr tree); -#ifdef LIBXML_TREE_ENABLED -XMLPUBFUN xmlAttributeTablePtr XMLCALL - xmlCopyAttributeTable (xmlAttributeTablePtr table); -#endif /* LIBXML_TREE_ENABLED */ -XMLPUBFUN void XMLCALL - xmlFreeAttributeTable (xmlAttributeTablePtr table); -#ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL - xmlDumpAttributeTable (xmlBufferPtr buf, - xmlAttributeTablePtr table); -XMLPUBFUN void XMLCALL - xmlDumpAttributeDecl (xmlBufferPtr buf, - xmlAttributePtr attr); -#endif /* LIBXML_OUTPUT_ENABLED */ - -/* IDs */ -XMLPUBFUN xmlIDPtr XMLCALL - xmlAddID (xmlValidCtxtPtr ctxt, - xmlDocPtr doc, - const xmlChar *value, - xmlAttrPtr attr); -XMLPUBFUN void XMLCALL - xmlFreeIDTable (xmlIDTablePtr table); -XMLPUBFUN xmlAttrPtr XMLCALL - xmlGetID (xmlDocPtr doc, - const xmlChar *ID); -XMLPUBFUN int XMLCALL - xmlIsID (xmlDocPtr doc, - xmlNodePtr elem, - xmlAttrPtr attr); -XMLPUBFUN int XMLCALL - xmlRemoveID (xmlDocPtr doc, - xmlAttrPtr attr); - -/* IDREFs */ -XMLPUBFUN xmlRefPtr XMLCALL - xmlAddRef (xmlValidCtxtPtr ctxt, - xmlDocPtr doc, - const xmlChar *value, - xmlAttrPtr attr); -XMLPUBFUN void XMLCALL - xmlFreeRefTable (xmlRefTablePtr table); -XMLPUBFUN int XMLCALL - xmlIsRef (xmlDocPtr doc, - xmlNodePtr elem, - xmlAttrPtr attr); -XMLPUBFUN int XMLCALL - xmlRemoveRef (xmlDocPtr doc, - xmlAttrPtr attr); -XMLPUBFUN xmlListPtr XMLCALL - xmlGetRefs (xmlDocPtr doc, - const xmlChar *ID); - -/** - * The public function calls related to validity checking. - */ -#ifdef LIBXML_VALID_ENABLED -/* Allocate/Release Validation Contexts */ -XMLPUBFUN xmlValidCtxtPtr XMLCALL - xmlNewValidCtxt(void); -XMLPUBFUN void XMLCALL - xmlFreeValidCtxt(xmlValidCtxtPtr); - -XMLPUBFUN int XMLCALL - xmlValidateRoot (xmlValidCtxtPtr ctxt, - xmlDocPtr doc); -XMLPUBFUN int XMLCALL - xmlValidateElementDecl (xmlValidCtxtPtr ctxt, - xmlDocPtr doc, - xmlElementPtr elem); -XMLPUBFUN xmlChar * XMLCALL - xmlValidNormalizeAttributeValue(xmlDocPtr doc, - xmlNodePtr elem, - const xmlChar *name, - const xmlChar *value); -XMLPUBFUN xmlChar * XMLCALL - xmlValidCtxtNormalizeAttributeValue(xmlValidCtxtPtr ctxt, - xmlDocPtr doc, - xmlNodePtr elem, - const xmlChar *name, - const xmlChar *value); -XMLPUBFUN int XMLCALL - xmlValidateAttributeDecl(xmlValidCtxtPtr ctxt, - xmlDocPtr doc, - xmlAttributePtr attr); -XMLPUBFUN int XMLCALL - xmlValidateAttributeValue(xmlAttributeType type, - const xmlChar *value); -XMLPUBFUN int XMLCALL - xmlValidateNotationDecl (xmlValidCtxtPtr ctxt, - xmlDocPtr doc, - xmlNotationPtr nota); -XMLPUBFUN int XMLCALL - xmlValidateDtd (xmlValidCtxtPtr ctxt, - xmlDocPtr doc, - xmlDtdPtr dtd); -XMLPUBFUN int XMLCALL - xmlValidateDtdFinal (xmlValidCtxtPtr ctxt, - xmlDocPtr doc); -XMLPUBFUN int XMLCALL - xmlValidateDocument (xmlValidCtxtPtr ctxt, - xmlDocPtr doc); -XMLPUBFUN int XMLCALL - xmlValidateElement (xmlValidCtxtPtr ctxt, - xmlDocPtr doc, - xmlNodePtr elem); -XMLPUBFUN int XMLCALL - xmlValidateOneElement (xmlValidCtxtPtr ctxt, - xmlDocPtr doc, - xmlNodePtr elem); -XMLPUBFUN int XMLCALL - xmlValidateOneAttribute (xmlValidCtxtPtr ctxt, - xmlDocPtr doc, - xmlNodePtr elem, - xmlAttrPtr attr, - const xmlChar *value); -XMLPUBFUN int XMLCALL - xmlValidateOneNamespace (xmlValidCtxtPtr ctxt, - xmlDocPtr doc, - xmlNodePtr elem, - const xmlChar *prefix, - xmlNsPtr ns, - const xmlChar *value); -XMLPUBFUN int XMLCALL - xmlValidateDocumentFinal(xmlValidCtxtPtr ctxt, - xmlDocPtr doc); -#endif /* LIBXML_VALID_ENABLED */ - -#if defined(LIBXML_VALID_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN int XMLCALL - xmlValidateNotationUse (xmlValidCtxtPtr ctxt, - xmlDocPtr doc, - const xmlChar *notationName); -#endif /* LIBXML_VALID_ENABLED or LIBXML_SCHEMAS_ENABLED */ - -XMLPUBFUN int XMLCALL - xmlIsMixedElement (xmlDocPtr doc, - const xmlChar *name); -XMLPUBFUN xmlAttributePtr XMLCALL - xmlGetDtdAttrDesc (xmlDtdPtr dtd, - const xmlChar *elem, - const xmlChar *name); -XMLPUBFUN xmlAttributePtr XMLCALL - xmlGetDtdQAttrDesc (xmlDtdPtr dtd, - const xmlChar *elem, - const xmlChar *name, - const xmlChar *prefix); -XMLPUBFUN xmlNotationPtr XMLCALL - xmlGetDtdNotationDesc (xmlDtdPtr dtd, - const xmlChar *name); -XMLPUBFUN xmlElementPtr XMLCALL - xmlGetDtdQElementDesc (xmlDtdPtr dtd, - const xmlChar *name, - const xmlChar *prefix); -XMLPUBFUN xmlElementPtr XMLCALL - xmlGetDtdElementDesc (xmlDtdPtr dtd, - const xmlChar *name); - -#ifdef LIBXML_VALID_ENABLED - -XMLPUBFUN int XMLCALL - xmlValidGetPotentialChildren(xmlElementContent *ctree, - const xmlChar **names, - int *len, - int max); - -XMLPUBFUN int XMLCALL - xmlValidGetValidElements(xmlNode *prev, - xmlNode *next, - const xmlChar **names, - int max); -XMLPUBFUN int XMLCALL - xmlValidateNameValue (const xmlChar *value); -XMLPUBFUN int XMLCALL - xmlValidateNamesValue (const xmlChar *value); -XMLPUBFUN int XMLCALL - xmlValidateNmtokenValue (const xmlChar *value); -XMLPUBFUN int XMLCALL - xmlValidateNmtokensValue(const xmlChar *value); - -#ifdef LIBXML_REGEXP_ENABLED -/* - * Validation based on the regexp support - */ -XMLPUBFUN int XMLCALL - xmlValidBuildContentModel(xmlValidCtxtPtr ctxt, - xmlElementPtr elem); - -XMLPUBFUN int XMLCALL - xmlValidatePushElement (xmlValidCtxtPtr ctxt, - xmlDocPtr doc, - xmlNodePtr elem, - const xmlChar *qname); -XMLPUBFUN int XMLCALL - xmlValidatePushCData (xmlValidCtxtPtr ctxt, - const xmlChar *data, - int len); -XMLPUBFUN int XMLCALL - xmlValidatePopElement (xmlValidCtxtPtr ctxt, - xmlDocPtr doc, - xmlNodePtr elem, - const xmlChar *qname); -#endif /* LIBXML_REGEXP_ENABLED */ -#endif /* LIBXML_VALID_ENABLED */ -#ifdef __cplusplus -} -#endif -#endif /* __XML_VALID_H__ */ diff --git a/cache/include/libxml/xinclude.h b/cache/include/libxml/xinclude.h deleted file mode 100644 index 863ab25..0000000 --- a/cache/include/libxml/xinclude.h +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Summary: implementation of XInclude - * Description: API to handle XInclude processing, - * implements the - * World Wide Web Consortium Last Call Working Draft 10 November 2003 - * http://www.w3.org/TR/2003/WD-xinclude-20031110 - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_XINCLUDE_H__ -#define __XML_XINCLUDE_H__ - -#include -#include - -#ifdef LIBXML_XINCLUDE_ENABLED - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * XINCLUDE_NS: - * - * Macro defining the Xinclude namespace: http://www.w3.org/2003/XInclude - */ -#define XINCLUDE_NS (const xmlChar *) "http://www.w3.org/2003/XInclude" -/** - * XINCLUDE_OLD_NS: - * - * Macro defining the draft Xinclude namespace: http://www.w3.org/2001/XInclude - */ -#define XINCLUDE_OLD_NS (const xmlChar *) "http://www.w3.org/2001/XInclude" -/** - * XINCLUDE_NODE: - * - * Macro defining "include" - */ -#define XINCLUDE_NODE (const xmlChar *) "include" -/** - * XINCLUDE_FALLBACK: - * - * Macro defining "fallback" - */ -#define XINCLUDE_FALLBACK (const xmlChar *) "fallback" -/** - * XINCLUDE_HREF: - * - * Macro defining "href" - */ -#define XINCLUDE_HREF (const xmlChar *) "href" -/** - * XINCLUDE_PARSE: - * - * Macro defining "parse" - */ -#define XINCLUDE_PARSE (const xmlChar *) "parse" -/** - * XINCLUDE_PARSE_XML: - * - * Macro defining "xml" - */ -#define XINCLUDE_PARSE_XML (const xmlChar *) "xml" -/** - * XINCLUDE_PARSE_TEXT: - * - * Macro defining "text" - */ -#define XINCLUDE_PARSE_TEXT (const xmlChar *) "text" -/** - * XINCLUDE_PARSE_ENCODING: - * - * Macro defining "encoding" - */ -#define XINCLUDE_PARSE_ENCODING (const xmlChar *) "encoding" -/** - * XINCLUDE_PARSE_XPOINTER: - * - * Macro defining "xpointer" - */ -#define XINCLUDE_PARSE_XPOINTER (const xmlChar *) "xpointer" - -typedef struct _xmlXIncludeCtxt xmlXIncludeCtxt; -typedef xmlXIncludeCtxt *xmlXIncludeCtxtPtr; - -/* - * standalone processing - */ -XMLPUBFUN int XMLCALL - xmlXIncludeProcess (xmlDocPtr doc); -XMLPUBFUN int XMLCALL - xmlXIncludeProcessFlags (xmlDocPtr doc, - int flags); -XMLPUBFUN int XMLCALL - xmlXIncludeProcessFlagsData(xmlDocPtr doc, - int flags, - void *data); -XMLPUBFUN int XMLCALL - xmlXIncludeProcessTreeFlagsData(xmlNodePtr tree, - int flags, - void *data); -XMLPUBFUN int XMLCALL - xmlXIncludeProcessTree (xmlNodePtr tree); -XMLPUBFUN int XMLCALL - xmlXIncludeProcessTreeFlags(xmlNodePtr tree, - int flags); -/* - * contextual processing - */ -XMLPUBFUN xmlXIncludeCtxtPtr XMLCALL - xmlXIncludeNewContext (xmlDocPtr doc); -XMLPUBFUN int XMLCALL - xmlXIncludeSetFlags (xmlXIncludeCtxtPtr ctxt, - int flags); -XMLPUBFUN void XMLCALL - xmlXIncludeFreeContext (xmlXIncludeCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlXIncludeProcessNode (xmlXIncludeCtxtPtr ctxt, - xmlNodePtr tree); -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_XINCLUDE_ENABLED */ - -#endif /* __XML_XINCLUDE_H__ */ diff --git a/cache/include/libxml/xlink.h b/cache/include/libxml/xlink.h deleted file mode 100644 index a209a99..0000000 --- a/cache/include/libxml/xlink.h +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Summary: unfinished XLink detection module - * Description: unfinished XLink detection module - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_XLINK_H__ -#define __XML_XLINK_H__ - -#include -#include - -#ifdef LIBXML_XPTR_ENABLED - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Various defines for the various Link properties. - * - * NOTE: the link detection layer will try to resolve QName expansion - * of namespaces. If "foo" is the prefix for "http://foo.com/" - * then the link detection layer will expand role="foo:myrole" - * to "http://foo.com/:myrole". - * NOTE: the link detection layer will expand URI-Refences found on - * href attributes by using the base mechanism if found. - */ -typedef xmlChar *xlinkHRef; -typedef xmlChar *xlinkRole; -typedef xmlChar *xlinkTitle; - -typedef enum { - XLINK_TYPE_NONE = 0, - XLINK_TYPE_SIMPLE, - XLINK_TYPE_EXTENDED, - XLINK_TYPE_EXTENDED_SET -} xlinkType; - -typedef enum { - XLINK_SHOW_NONE = 0, - XLINK_SHOW_NEW, - XLINK_SHOW_EMBED, - XLINK_SHOW_REPLACE -} xlinkShow; - -typedef enum { - XLINK_ACTUATE_NONE = 0, - XLINK_ACTUATE_AUTO, - XLINK_ACTUATE_ONREQUEST -} xlinkActuate; - -/** - * xlinkNodeDetectFunc: - * @ctx: user data pointer - * @node: the node to check - * - * This is the prototype for the link detection routine. - * It calls the default link detection callbacks upon link detection. - */ -typedef void (*xlinkNodeDetectFunc) (void *ctx, xmlNodePtr node); - -/* - * The link detection module interact with the upper layers using - * a set of callback registered at parsing time. - */ - -/** - * xlinkSimpleLinkFunk: - * @ctx: user data pointer - * @node: the node carrying the link - * @href: the target of the link - * @role: the role string - * @title: the link title - * - * This is the prototype for a simple link detection callback. - */ -typedef void -(*xlinkSimpleLinkFunk) (void *ctx, - xmlNodePtr node, - const xlinkHRef href, - const xlinkRole role, - const xlinkTitle title); - -/** - * xlinkExtendedLinkFunk: - * @ctx: user data pointer - * @node: the node carrying the link - * @nbLocators: the number of locators detected on the link - * @hrefs: pointer to the array of locator hrefs - * @roles: pointer to the array of locator roles - * @nbArcs: the number of arcs detected on the link - * @from: pointer to the array of source roles found on the arcs - * @to: pointer to the array of target roles found on the arcs - * @show: array of values for the show attributes found on the arcs - * @actuate: array of values for the actuate attributes found on the arcs - * @nbTitles: the number of titles detected on the link - * @title: array of titles detected on the link - * @langs: array of xml:lang values for the titles - * - * This is the prototype for a extended link detection callback. - */ -typedef void -(*xlinkExtendedLinkFunk)(void *ctx, - xmlNodePtr node, - int nbLocators, - const xlinkHRef *hrefs, - const xlinkRole *roles, - int nbArcs, - const xlinkRole *from, - const xlinkRole *to, - xlinkShow *show, - xlinkActuate *actuate, - int nbTitles, - const xlinkTitle *titles, - const xmlChar **langs); - -/** - * xlinkExtendedLinkSetFunk: - * @ctx: user data pointer - * @node: the node carrying the link - * @nbLocators: the number of locators detected on the link - * @hrefs: pointer to the array of locator hrefs - * @roles: pointer to the array of locator roles - * @nbTitles: the number of titles detected on the link - * @title: array of titles detected on the link - * @langs: array of xml:lang values for the titles - * - * This is the prototype for a extended link set detection callback. - */ -typedef void -(*xlinkExtendedLinkSetFunk) (void *ctx, - xmlNodePtr node, - int nbLocators, - const xlinkHRef *hrefs, - const xlinkRole *roles, - int nbTitles, - const xlinkTitle *titles, - const xmlChar **langs); - -/** - * This is the structure containing a set of Links detection callbacks. - * - * There is no default xlink callbacks, if one want to get link - * recognition activated, those call backs must be provided before parsing. - */ -typedef struct _xlinkHandler xlinkHandler; -typedef xlinkHandler *xlinkHandlerPtr; -struct _xlinkHandler { - xlinkSimpleLinkFunk simple; - xlinkExtendedLinkFunk extended; - xlinkExtendedLinkSetFunk set; -}; - -/* - * The default detection routine, can be overridden, they call the default - * detection callbacks. - */ - -XMLPUBFUN xlinkNodeDetectFunc XMLCALL - xlinkGetDefaultDetect (void); -XMLPUBFUN void XMLCALL - xlinkSetDefaultDetect (xlinkNodeDetectFunc func); - -/* - * Routines to set/get the default handlers. - */ -XMLPUBFUN xlinkHandlerPtr XMLCALL - xlinkGetDefaultHandler (void); -XMLPUBFUN void XMLCALL - xlinkSetDefaultHandler (xlinkHandlerPtr handler); - -/* - * Link detection module itself. - */ -XMLPUBFUN xlinkType XMLCALL - xlinkIsLink (xmlDocPtr doc, - xmlNodePtr node); - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_XPTR_ENABLED */ - -#endif /* __XML_XLINK_H__ */ diff --git a/cache/include/libxml/xmlIO.h b/cache/include/libxml/xmlIO.h deleted file mode 100644 index 3e41744..0000000 --- a/cache/include/libxml/xmlIO.h +++ /dev/null @@ -1,366 +0,0 @@ -/* - * Summary: interface for the I/O interfaces used by the parser - * Description: interface for the I/O interfaces used by the parser - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_IO_H__ -#define __XML_IO_H__ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Those are the functions and datatypes for the parser input - * I/O structures. - */ - -/** - * xmlInputMatchCallback: - * @filename: the filename or URI - * - * Callback used in the I/O Input API to detect if the current handler - * can provide input fonctionnalities for this resource. - * - * Returns 1 if yes and 0 if another Input module should be used - */ -typedef int (XMLCALL *xmlInputMatchCallback) (char const *filename); -/** - * xmlInputOpenCallback: - * @filename: the filename or URI - * - * Callback used in the I/O Input API to open the resource - * - * Returns an Input context or NULL in case or error - */ -typedef void * (XMLCALL *xmlInputOpenCallback) (char const *filename); -/** - * xmlInputReadCallback: - * @context: an Input context - * @buffer: the buffer to store data read - * @len: the length of the buffer in bytes - * - * Callback used in the I/O Input API to read the resource - * - * Returns the number of bytes read or -1 in case of error - */ -typedef int (XMLCALL *xmlInputReadCallback) (void * context, char * buffer, int len); -/** - * xmlInputCloseCallback: - * @context: an Input context - * - * Callback used in the I/O Input API to close the resource - * - * Returns 0 or -1 in case of error - */ -typedef int (XMLCALL *xmlInputCloseCallback) (void * context); - -#ifdef LIBXML_OUTPUT_ENABLED -/* - * Those are the functions and datatypes for the library output - * I/O structures. - */ - -/** - * xmlOutputMatchCallback: - * @filename: the filename or URI - * - * Callback used in the I/O Output API to detect if the current handler - * can provide output fonctionnalities for this resource. - * - * Returns 1 if yes and 0 if another Output module should be used - */ -typedef int (XMLCALL *xmlOutputMatchCallback) (char const *filename); -/** - * xmlOutputOpenCallback: - * @filename: the filename or URI - * - * Callback used in the I/O Output API to open the resource - * - * Returns an Output context or NULL in case or error - */ -typedef void * (XMLCALL *xmlOutputOpenCallback) (char const *filename); -/** - * xmlOutputWriteCallback: - * @context: an Output context - * @buffer: the buffer of data to write - * @len: the length of the buffer in bytes - * - * Callback used in the I/O Output API to write to the resource - * - * Returns the number of bytes written or -1 in case of error - */ -typedef int (XMLCALL *xmlOutputWriteCallback) (void * context, const char * buffer, - int len); -/** - * xmlOutputCloseCallback: - * @context: an Output context - * - * Callback used in the I/O Output API to close the resource - * - * Returns 0 or -1 in case of error - */ -typedef int (XMLCALL *xmlOutputCloseCallback) (void * context); -#endif /* LIBXML_OUTPUT_ENABLED */ - -#ifdef __cplusplus -} -#endif - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif -struct _xmlParserInputBuffer { - void* context; - xmlInputReadCallback readcallback; - xmlInputCloseCallback closecallback; - - xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */ - - xmlBufPtr buffer; /* Local buffer encoded in UTF-8 */ - xmlBufPtr raw; /* if encoder != NULL buffer for raw input */ - int compressed; /* -1=unknown, 0=not compressed, 1=compressed */ - int error; - unsigned long rawconsumed;/* amount consumed from raw */ -}; - - -#ifdef LIBXML_OUTPUT_ENABLED -struct _xmlOutputBuffer { - void* context; - xmlOutputWriteCallback writecallback; - xmlOutputCloseCallback closecallback; - - xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */ - - xmlBufPtr buffer; /* Local buffer encoded in UTF-8 or ISOLatin */ - xmlBufPtr conv; /* if encoder != NULL buffer for output */ - int written; /* total number of byte written */ - int error; -}; -#endif /* LIBXML_OUTPUT_ENABLED */ - -/* - * Interfaces for input - */ -XMLPUBFUN void XMLCALL - xmlCleanupInputCallbacks (void); - -XMLPUBFUN int XMLCALL - xmlPopInputCallbacks (void); - -XMLPUBFUN void XMLCALL - xmlRegisterDefaultInputCallbacks (void); -XMLPUBFUN xmlParserInputBufferPtr XMLCALL - xmlAllocParserInputBuffer (xmlCharEncoding enc); - -XMLPUBFUN xmlParserInputBufferPtr XMLCALL - xmlParserInputBufferCreateFilename (const char *URI, - xmlCharEncoding enc); -XMLPUBFUN xmlParserInputBufferPtr XMLCALL - xmlParserInputBufferCreateFile (FILE *file, - xmlCharEncoding enc); -XMLPUBFUN xmlParserInputBufferPtr XMLCALL - xmlParserInputBufferCreateFd (int fd, - xmlCharEncoding enc); -XMLPUBFUN xmlParserInputBufferPtr XMLCALL - xmlParserInputBufferCreateMem (const char *mem, int size, - xmlCharEncoding enc); -XMLPUBFUN xmlParserInputBufferPtr XMLCALL - xmlParserInputBufferCreateStatic (const char *mem, int size, - xmlCharEncoding enc); -XMLPUBFUN xmlParserInputBufferPtr XMLCALL - xmlParserInputBufferCreateIO (xmlInputReadCallback ioread, - xmlInputCloseCallback ioclose, - void *ioctx, - xmlCharEncoding enc); -XMLPUBFUN int XMLCALL - xmlParserInputBufferRead (xmlParserInputBufferPtr in, - int len); -XMLPUBFUN int XMLCALL - xmlParserInputBufferGrow (xmlParserInputBufferPtr in, - int len); -XMLPUBFUN int XMLCALL - xmlParserInputBufferPush (xmlParserInputBufferPtr in, - int len, - const char *buf); -XMLPUBFUN void XMLCALL - xmlFreeParserInputBuffer (xmlParserInputBufferPtr in); -XMLPUBFUN char * XMLCALL - xmlParserGetDirectory (const char *filename); - -XMLPUBFUN int XMLCALL - xmlRegisterInputCallbacks (xmlInputMatchCallback matchFunc, - xmlInputOpenCallback openFunc, - xmlInputReadCallback readFunc, - xmlInputCloseCallback closeFunc); - -xmlParserInputBufferPtr - __xmlParserInputBufferCreateFilename(const char *URI, - xmlCharEncoding enc); - -#ifdef LIBXML_OUTPUT_ENABLED -/* - * Interfaces for output - */ -XMLPUBFUN void XMLCALL - xmlCleanupOutputCallbacks (void); -XMLPUBFUN void XMLCALL - xmlRegisterDefaultOutputCallbacks(void); -XMLPUBFUN xmlOutputBufferPtr XMLCALL - xmlAllocOutputBuffer (xmlCharEncodingHandlerPtr encoder); - -XMLPUBFUN xmlOutputBufferPtr XMLCALL - xmlOutputBufferCreateFilename (const char *URI, - xmlCharEncodingHandlerPtr encoder, - int compression); - -XMLPUBFUN xmlOutputBufferPtr XMLCALL - xmlOutputBufferCreateFile (FILE *file, - xmlCharEncodingHandlerPtr encoder); - -XMLPUBFUN xmlOutputBufferPtr XMLCALL - xmlOutputBufferCreateBuffer (xmlBufferPtr buffer, - xmlCharEncodingHandlerPtr encoder); - -XMLPUBFUN xmlOutputBufferPtr XMLCALL - xmlOutputBufferCreateFd (int fd, - xmlCharEncodingHandlerPtr encoder); - -XMLPUBFUN xmlOutputBufferPtr XMLCALL - xmlOutputBufferCreateIO (xmlOutputWriteCallback iowrite, - xmlOutputCloseCallback ioclose, - void *ioctx, - xmlCharEncodingHandlerPtr encoder); - -/* Couple of APIs to get the output without digging into the buffers */ -XMLPUBFUN const xmlChar * XMLCALL - xmlOutputBufferGetContent (xmlOutputBufferPtr out); -XMLPUBFUN size_t XMLCALL - xmlOutputBufferGetSize (xmlOutputBufferPtr out); - -XMLPUBFUN int XMLCALL - xmlOutputBufferWrite (xmlOutputBufferPtr out, - int len, - const char *buf); -XMLPUBFUN int XMLCALL - xmlOutputBufferWriteString (xmlOutputBufferPtr out, - const char *str); -XMLPUBFUN int XMLCALL - xmlOutputBufferWriteEscape (xmlOutputBufferPtr out, - const xmlChar *str, - xmlCharEncodingOutputFunc escaping); - -XMLPUBFUN int XMLCALL - xmlOutputBufferFlush (xmlOutputBufferPtr out); -XMLPUBFUN int XMLCALL - xmlOutputBufferClose (xmlOutputBufferPtr out); - -XMLPUBFUN int XMLCALL - xmlRegisterOutputCallbacks (xmlOutputMatchCallback matchFunc, - xmlOutputOpenCallback openFunc, - xmlOutputWriteCallback writeFunc, - xmlOutputCloseCallback closeFunc); - -xmlOutputBufferPtr - __xmlOutputBufferCreateFilename(const char *URI, - xmlCharEncodingHandlerPtr encoder, - int compression); - -#ifdef LIBXML_HTTP_ENABLED -/* This function only exists if HTTP support built into the library */ -XMLPUBFUN void XMLCALL - xmlRegisterHTTPPostCallbacks (void ); -#endif /* LIBXML_HTTP_ENABLED */ - -#endif /* LIBXML_OUTPUT_ENABLED */ - -XMLPUBFUN xmlParserInputPtr XMLCALL - xmlCheckHTTPInput (xmlParserCtxtPtr ctxt, - xmlParserInputPtr ret); - -/* - * A predefined entity loader disabling network accesses - */ -XMLPUBFUN xmlParserInputPtr XMLCALL - xmlNoNetExternalEntityLoader (const char *URL, - const char *ID, - xmlParserCtxtPtr ctxt); - -/* - * xmlNormalizeWindowsPath is obsolete, don't use it. - * Check xmlCanonicPath in uri.h for a better alternative. - */ -XMLPUBFUN xmlChar * XMLCALL - xmlNormalizeWindowsPath (const xmlChar *path); - -XMLPUBFUN int XMLCALL - xmlCheckFilename (const char *path); -/** - * Default 'file://' protocol callbacks - */ -XMLPUBFUN int XMLCALL - xmlFileMatch (const char *filename); -XMLPUBFUN void * XMLCALL - xmlFileOpen (const char *filename); -XMLPUBFUN int XMLCALL - xmlFileRead (void * context, - char * buffer, - int len); -XMLPUBFUN int XMLCALL - xmlFileClose (void * context); - -/** - * Default 'http://' protocol callbacks - */ -#ifdef LIBXML_HTTP_ENABLED -XMLPUBFUN int XMLCALL - xmlIOHTTPMatch (const char *filename); -XMLPUBFUN void * XMLCALL - xmlIOHTTPOpen (const char *filename); -#ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void * XMLCALL - xmlIOHTTPOpenW (const char * post_uri, - int compression ); -#endif /* LIBXML_OUTPUT_ENABLED */ -XMLPUBFUN int XMLCALL - xmlIOHTTPRead (void * context, - char * buffer, - int len); -XMLPUBFUN int XMLCALL - xmlIOHTTPClose (void * context); -#endif /* LIBXML_HTTP_ENABLED */ - -/** - * Default 'ftp://' protocol callbacks - */ -#ifdef LIBXML_FTP_ENABLED -XMLPUBFUN int XMLCALL - xmlIOFTPMatch (const char *filename); -XMLPUBFUN void * XMLCALL - xmlIOFTPOpen (const char *filename); -XMLPUBFUN int XMLCALL - xmlIOFTPRead (void * context, - char * buffer, - int len); -XMLPUBFUN int XMLCALL - xmlIOFTPClose (void * context); -#endif /* LIBXML_FTP_ENABLED */ - -#ifdef __cplusplus -} -#endif - -#endif /* __XML_IO_H__ */ diff --git a/cache/include/libxml/xmlautomata.h b/cache/include/libxml/xmlautomata.h deleted file mode 100644 index bf1b131..0000000 --- a/cache/include/libxml/xmlautomata.h +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Summary: API to build regexp automata - * Description: the API to build regexp automata - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_AUTOMATA_H__ -#define __XML_AUTOMATA_H__ - -#include -#include - -#ifdef LIBXML_REGEXP_ENABLED -#ifdef LIBXML_AUTOMATA_ENABLED -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * xmlAutomataPtr: - * - * A libxml automata description, It can be compiled into a regexp - */ -typedef struct _xmlAutomata xmlAutomata; -typedef xmlAutomata *xmlAutomataPtr; - -/** - * xmlAutomataStatePtr: - * - * A state int the automata description, - */ -typedef struct _xmlAutomataState xmlAutomataState; -typedef xmlAutomataState *xmlAutomataStatePtr; - -/* - * Building API - */ -XMLPUBFUN xmlAutomataPtr XMLCALL - xmlNewAutomata (void); -XMLPUBFUN void XMLCALL - xmlFreeAutomata (xmlAutomataPtr am); - -XMLPUBFUN xmlAutomataStatePtr XMLCALL - xmlAutomataGetInitState (xmlAutomataPtr am); -XMLPUBFUN int XMLCALL - xmlAutomataSetFinalState (xmlAutomataPtr am, - xmlAutomataStatePtr state); -XMLPUBFUN xmlAutomataStatePtr XMLCALL - xmlAutomataNewState (xmlAutomataPtr am); -XMLPUBFUN xmlAutomataStatePtr XMLCALL - xmlAutomataNewTransition (xmlAutomataPtr am, - xmlAutomataStatePtr from, - xmlAutomataStatePtr to, - const xmlChar *token, - void *data); -XMLPUBFUN xmlAutomataStatePtr XMLCALL - xmlAutomataNewTransition2 (xmlAutomataPtr am, - xmlAutomataStatePtr from, - xmlAutomataStatePtr to, - const xmlChar *token, - const xmlChar *token2, - void *data); -XMLPUBFUN xmlAutomataStatePtr XMLCALL - xmlAutomataNewNegTrans (xmlAutomataPtr am, - xmlAutomataStatePtr from, - xmlAutomataStatePtr to, - const xmlChar *token, - const xmlChar *token2, - void *data); - -XMLPUBFUN xmlAutomataStatePtr XMLCALL - xmlAutomataNewCountTrans (xmlAutomataPtr am, - xmlAutomataStatePtr from, - xmlAutomataStatePtr to, - const xmlChar *token, - int min, - int max, - void *data); -XMLPUBFUN xmlAutomataStatePtr XMLCALL - xmlAutomataNewCountTrans2 (xmlAutomataPtr am, - xmlAutomataStatePtr from, - xmlAutomataStatePtr to, - const xmlChar *token, - const xmlChar *token2, - int min, - int max, - void *data); -XMLPUBFUN xmlAutomataStatePtr XMLCALL - xmlAutomataNewOnceTrans (xmlAutomataPtr am, - xmlAutomataStatePtr from, - xmlAutomataStatePtr to, - const xmlChar *token, - int min, - int max, - void *data); -XMLPUBFUN xmlAutomataStatePtr XMLCALL - xmlAutomataNewOnceTrans2 (xmlAutomataPtr am, - xmlAutomataStatePtr from, - xmlAutomataStatePtr to, - const xmlChar *token, - const xmlChar *token2, - int min, - int max, - void *data); -XMLPUBFUN xmlAutomataStatePtr XMLCALL - xmlAutomataNewAllTrans (xmlAutomataPtr am, - xmlAutomataStatePtr from, - xmlAutomataStatePtr to, - int lax); -XMLPUBFUN xmlAutomataStatePtr XMLCALL - xmlAutomataNewEpsilon (xmlAutomataPtr am, - xmlAutomataStatePtr from, - xmlAutomataStatePtr to); -XMLPUBFUN xmlAutomataStatePtr XMLCALL - xmlAutomataNewCountedTrans (xmlAutomataPtr am, - xmlAutomataStatePtr from, - xmlAutomataStatePtr to, - int counter); -XMLPUBFUN xmlAutomataStatePtr XMLCALL - xmlAutomataNewCounterTrans (xmlAutomataPtr am, - xmlAutomataStatePtr from, - xmlAutomataStatePtr to, - int counter); -XMLPUBFUN int XMLCALL - xmlAutomataNewCounter (xmlAutomataPtr am, - int min, - int max); - -XMLPUBFUN xmlRegexpPtr XMLCALL - xmlAutomataCompile (xmlAutomataPtr am); -XMLPUBFUN int XMLCALL - xmlAutomataIsDeterminist (xmlAutomataPtr am); - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_AUTOMATA_ENABLED */ -#endif /* LIBXML_REGEXP_ENABLED */ - -#endif /* __XML_AUTOMATA_H__ */ diff --git a/cache/include/libxml/xmlerror.h b/cache/include/libxml/xmlerror.h deleted file mode 100644 index 43e68ca..0000000 --- a/cache/include/libxml/xmlerror.h +++ /dev/null @@ -1,945 +0,0 @@ -/* - * Summary: error handling - * Description: the API used to report errors - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#include - -#ifndef __XML_ERROR_H__ -#define __XML_ERROR_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * xmlErrorLevel: - * - * Indicates the level of an error - */ -typedef enum { - XML_ERR_NONE = 0, - XML_ERR_WARNING = 1, /* A simple warning */ - XML_ERR_ERROR = 2, /* A recoverable error */ - XML_ERR_FATAL = 3 /* A fatal error */ -} xmlErrorLevel; - -/** - * xmlErrorDomain: - * - * Indicates where an error may have come from - */ -typedef enum { - XML_FROM_NONE = 0, - XML_FROM_PARSER, /* The XML parser */ - XML_FROM_TREE, /* The tree module */ - XML_FROM_NAMESPACE, /* The XML Namespace module */ - XML_FROM_DTD, /* The XML DTD validation with parser context*/ - XML_FROM_HTML, /* The HTML parser */ - XML_FROM_MEMORY, /* The memory allocator */ - XML_FROM_OUTPUT, /* The serialization code */ - XML_FROM_IO, /* The Input/Output stack */ - XML_FROM_FTP, /* The FTP module */ - XML_FROM_HTTP, /* The HTTP module */ - XML_FROM_XINCLUDE, /* The XInclude processing */ - XML_FROM_XPATH, /* The XPath module */ - XML_FROM_XPOINTER, /* The XPointer module */ - XML_FROM_REGEXP, /* The regular expressions module */ - XML_FROM_DATATYPE, /* The W3C XML Schemas Datatype module */ - XML_FROM_SCHEMASP, /* The W3C XML Schemas parser module */ - XML_FROM_SCHEMASV, /* The W3C XML Schemas validation module */ - XML_FROM_RELAXNGP, /* The Relax-NG parser module */ - XML_FROM_RELAXNGV, /* The Relax-NG validator module */ - XML_FROM_CATALOG, /* The Catalog module */ - XML_FROM_C14N, /* The Canonicalization module */ - XML_FROM_XSLT, /* The XSLT engine from libxslt */ - XML_FROM_VALID, /* The XML DTD validation with valid context */ - XML_FROM_CHECK, /* The error checking module */ - XML_FROM_WRITER, /* The xmlwriter module */ - XML_FROM_MODULE, /* The dynamically loaded module module*/ - XML_FROM_I18N, /* The module handling character conversion */ - XML_FROM_SCHEMATRONV,/* The Schematron validator module */ - XML_FROM_BUFFER, /* The buffers module */ - XML_FROM_URI /* The URI module */ -} xmlErrorDomain; - -/** - * xmlError: - * - * An XML Error instance. - */ - -typedef struct _xmlError xmlError; -typedef xmlError *xmlErrorPtr; -struct _xmlError { - int domain; /* What part of the library raised this error */ - int code; /* The error code, e.g. an xmlParserError */ - char *message;/* human-readable informative error message */ - xmlErrorLevel level;/* how consequent is the error */ - char *file; /* the filename */ - int line; /* the line number if available */ - char *str1; /* extra string information */ - char *str2; /* extra string information */ - char *str3; /* extra string information */ - int int1; /* extra number information */ - int int2; /* error column # or 0 if N/A (todo: rename field when we would brk ABI) */ - void *ctxt; /* the parser context if available */ - void *node; /* the node in the tree */ -}; - -/** - * xmlParserError: - * - * This is an error that the XML (or HTML) parser can generate - */ -typedef enum { - XML_ERR_OK = 0, - XML_ERR_INTERNAL_ERROR, /* 1 */ - XML_ERR_NO_MEMORY, /* 2 */ - XML_ERR_DOCUMENT_START, /* 3 */ - XML_ERR_DOCUMENT_EMPTY, /* 4 */ - XML_ERR_DOCUMENT_END, /* 5 */ - XML_ERR_INVALID_HEX_CHARREF, /* 6 */ - XML_ERR_INVALID_DEC_CHARREF, /* 7 */ - XML_ERR_INVALID_CHARREF, /* 8 */ - XML_ERR_INVALID_CHAR, /* 9 */ - XML_ERR_CHARREF_AT_EOF, /* 10 */ - XML_ERR_CHARREF_IN_PROLOG, /* 11 */ - XML_ERR_CHARREF_IN_EPILOG, /* 12 */ - XML_ERR_CHARREF_IN_DTD, /* 13 */ - XML_ERR_ENTITYREF_AT_EOF, /* 14 */ - XML_ERR_ENTITYREF_IN_PROLOG, /* 15 */ - XML_ERR_ENTITYREF_IN_EPILOG, /* 16 */ - XML_ERR_ENTITYREF_IN_DTD, /* 17 */ - XML_ERR_PEREF_AT_EOF, /* 18 */ - XML_ERR_PEREF_IN_PROLOG, /* 19 */ - XML_ERR_PEREF_IN_EPILOG, /* 20 */ - XML_ERR_PEREF_IN_INT_SUBSET, /* 21 */ - XML_ERR_ENTITYREF_NO_NAME, /* 22 */ - XML_ERR_ENTITYREF_SEMICOL_MISSING, /* 23 */ - XML_ERR_PEREF_NO_NAME, /* 24 */ - XML_ERR_PEREF_SEMICOL_MISSING, /* 25 */ - XML_ERR_UNDECLARED_ENTITY, /* 26 */ - XML_WAR_UNDECLARED_ENTITY, /* 27 */ - XML_ERR_UNPARSED_ENTITY, /* 28 */ - XML_ERR_ENTITY_IS_EXTERNAL, /* 29 */ - XML_ERR_ENTITY_IS_PARAMETER, /* 30 */ - XML_ERR_UNKNOWN_ENCODING, /* 31 */ - XML_ERR_UNSUPPORTED_ENCODING, /* 32 */ - XML_ERR_STRING_NOT_STARTED, /* 33 */ - XML_ERR_STRING_NOT_CLOSED, /* 34 */ - XML_ERR_NS_DECL_ERROR, /* 35 */ - XML_ERR_ENTITY_NOT_STARTED, /* 36 */ - XML_ERR_ENTITY_NOT_FINISHED, /* 37 */ - XML_ERR_LT_IN_ATTRIBUTE, /* 38 */ - XML_ERR_ATTRIBUTE_NOT_STARTED, /* 39 */ - XML_ERR_ATTRIBUTE_NOT_FINISHED, /* 40 */ - XML_ERR_ATTRIBUTE_WITHOUT_VALUE, /* 41 */ - XML_ERR_ATTRIBUTE_REDEFINED, /* 42 */ - XML_ERR_LITERAL_NOT_STARTED, /* 43 */ - XML_ERR_LITERAL_NOT_FINISHED, /* 44 */ - XML_ERR_COMMENT_NOT_FINISHED, /* 45 */ - XML_ERR_PI_NOT_STARTED, /* 46 */ - XML_ERR_PI_NOT_FINISHED, /* 47 */ - XML_ERR_NOTATION_NOT_STARTED, /* 48 */ - XML_ERR_NOTATION_NOT_FINISHED, /* 49 */ - XML_ERR_ATTLIST_NOT_STARTED, /* 50 */ - XML_ERR_ATTLIST_NOT_FINISHED, /* 51 */ - XML_ERR_MIXED_NOT_STARTED, /* 52 */ - XML_ERR_MIXED_NOT_FINISHED, /* 53 */ - XML_ERR_ELEMCONTENT_NOT_STARTED, /* 54 */ - XML_ERR_ELEMCONTENT_NOT_FINISHED, /* 55 */ - XML_ERR_XMLDECL_NOT_STARTED, /* 56 */ - XML_ERR_XMLDECL_NOT_FINISHED, /* 57 */ - XML_ERR_CONDSEC_NOT_STARTED, /* 58 */ - XML_ERR_CONDSEC_NOT_FINISHED, /* 59 */ - XML_ERR_EXT_SUBSET_NOT_FINISHED, /* 60 */ - XML_ERR_DOCTYPE_NOT_FINISHED, /* 61 */ - XML_ERR_MISPLACED_CDATA_END, /* 62 */ - XML_ERR_CDATA_NOT_FINISHED, /* 63 */ - XML_ERR_RESERVED_XML_NAME, /* 64 */ - XML_ERR_SPACE_REQUIRED, /* 65 */ - XML_ERR_SEPARATOR_REQUIRED, /* 66 */ - XML_ERR_NMTOKEN_REQUIRED, /* 67 */ - XML_ERR_NAME_REQUIRED, /* 68 */ - XML_ERR_PCDATA_REQUIRED, /* 69 */ - XML_ERR_URI_REQUIRED, /* 70 */ - XML_ERR_PUBID_REQUIRED, /* 71 */ - XML_ERR_LT_REQUIRED, /* 72 */ - XML_ERR_GT_REQUIRED, /* 73 */ - XML_ERR_LTSLASH_REQUIRED, /* 74 */ - XML_ERR_EQUAL_REQUIRED, /* 75 */ - XML_ERR_TAG_NAME_MISMATCH, /* 76 */ - XML_ERR_TAG_NOT_FINISHED, /* 77 */ - XML_ERR_STANDALONE_VALUE, /* 78 */ - XML_ERR_ENCODING_NAME, /* 79 */ - XML_ERR_HYPHEN_IN_COMMENT, /* 80 */ - XML_ERR_INVALID_ENCODING, /* 81 */ - XML_ERR_EXT_ENTITY_STANDALONE, /* 82 */ - XML_ERR_CONDSEC_INVALID, /* 83 */ - XML_ERR_VALUE_REQUIRED, /* 84 */ - XML_ERR_NOT_WELL_BALANCED, /* 85 */ - XML_ERR_EXTRA_CONTENT, /* 86 */ - XML_ERR_ENTITY_CHAR_ERROR, /* 87 */ - XML_ERR_ENTITY_PE_INTERNAL, /* 88 */ - XML_ERR_ENTITY_LOOP, /* 89 */ - XML_ERR_ENTITY_BOUNDARY, /* 90 */ - XML_ERR_INVALID_URI, /* 91 */ - XML_ERR_URI_FRAGMENT, /* 92 */ - XML_WAR_CATALOG_PI, /* 93 */ - XML_ERR_NO_DTD, /* 94 */ - XML_ERR_CONDSEC_INVALID_KEYWORD, /* 95 */ - XML_ERR_VERSION_MISSING, /* 96 */ - XML_WAR_UNKNOWN_VERSION, /* 97 */ - XML_WAR_LANG_VALUE, /* 98 */ - XML_WAR_NS_URI, /* 99 */ - XML_WAR_NS_URI_RELATIVE, /* 100 */ - XML_ERR_MISSING_ENCODING, /* 101 */ - XML_WAR_SPACE_VALUE, /* 102 */ - XML_ERR_NOT_STANDALONE, /* 103 */ - XML_ERR_ENTITY_PROCESSING, /* 104 */ - XML_ERR_NOTATION_PROCESSING, /* 105 */ - XML_WAR_NS_COLUMN, /* 106 */ - XML_WAR_ENTITY_REDEFINED, /* 107 */ - XML_ERR_UNKNOWN_VERSION, /* 108 */ - XML_ERR_VERSION_MISMATCH, /* 109 */ - XML_ERR_NAME_TOO_LONG, /* 110 */ - XML_ERR_USER_STOP, /* 111 */ - XML_NS_ERR_XML_NAMESPACE = 200, - XML_NS_ERR_UNDEFINED_NAMESPACE, /* 201 */ - XML_NS_ERR_QNAME, /* 202 */ - XML_NS_ERR_ATTRIBUTE_REDEFINED, /* 203 */ - XML_NS_ERR_EMPTY, /* 204 */ - XML_NS_ERR_COLON, /* 205 */ - XML_DTD_ATTRIBUTE_DEFAULT = 500, - XML_DTD_ATTRIBUTE_REDEFINED, /* 501 */ - XML_DTD_ATTRIBUTE_VALUE, /* 502 */ - XML_DTD_CONTENT_ERROR, /* 503 */ - XML_DTD_CONTENT_MODEL, /* 504 */ - XML_DTD_CONTENT_NOT_DETERMINIST, /* 505 */ - XML_DTD_DIFFERENT_PREFIX, /* 506 */ - XML_DTD_ELEM_DEFAULT_NAMESPACE, /* 507 */ - XML_DTD_ELEM_NAMESPACE, /* 508 */ - XML_DTD_ELEM_REDEFINED, /* 509 */ - XML_DTD_EMPTY_NOTATION, /* 510 */ - XML_DTD_ENTITY_TYPE, /* 511 */ - XML_DTD_ID_FIXED, /* 512 */ - XML_DTD_ID_REDEFINED, /* 513 */ - XML_DTD_ID_SUBSET, /* 514 */ - XML_DTD_INVALID_CHILD, /* 515 */ - XML_DTD_INVALID_DEFAULT, /* 516 */ - XML_DTD_LOAD_ERROR, /* 517 */ - XML_DTD_MISSING_ATTRIBUTE, /* 518 */ - XML_DTD_MIXED_CORRUPT, /* 519 */ - XML_DTD_MULTIPLE_ID, /* 520 */ - XML_DTD_NO_DOC, /* 521 */ - XML_DTD_NO_DTD, /* 522 */ - XML_DTD_NO_ELEM_NAME, /* 523 */ - XML_DTD_NO_PREFIX, /* 524 */ - XML_DTD_NO_ROOT, /* 525 */ - XML_DTD_NOTATION_REDEFINED, /* 526 */ - XML_DTD_NOTATION_VALUE, /* 527 */ - XML_DTD_NOT_EMPTY, /* 528 */ - XML_DTD_NOT_PCDATA, /* 529 */ - XML_DTD_NOT_STANDALONE, /* 530 */ - XML_DTD_ROOT_NAME, /* 531 */ - XML_DTD_STANDALONE_WHITE_SPACE, /* 532 */ - XML_DTD_UNKNOWN_ATTRIBUTE, /* 533 */ - XML_DTD_UNKNOWN_ELEM, /* 534 */ - XML_DTD_UNKNOWN_ENTITY, /* 535 */ - XML_DTD_UNKNOWN_ID, /* 536 */ - XML_DTD_UNKNOWN_NOTATION, /* 537 */ - XML_DTD_STANDALONE_DEFAULTED, /* 538 */ - XML_DTD_XMLID_VALUE, /* 539 */ - XML_DTD_XMLID_TYPE, /* 540 */ - XML_DTD_DUP_TOKEN, /* 541 */ - XML_HTML_STRUCURE_ERROR = 800, - XML_HTML_UNKNOWN_TAG, /* 801 */ - XML_RNGP_ANYNAME_ATTR_ANCESTOR = 1000, - XML_RNGP_ATTR_CONFLICT, /* 1001 */ - XML_RNGP_ATTRIBUTE_CHILDREN, /* 1002 */ - XML_RNGP_ATTRIBUTE_CONTENT, /* 1003 */ - XML_RNGP_ATTRIBUTE_EMPTY, /* 1004 */ - XML_RNGP_ATTRIBUTE_NOOP, /* 1005 */ - XML_RNGP_CHOICE_CONTENT, /* 1006 */ - XML_RNGP_CHOICE_EMPTY, /* 1007 */ - XML_RNGP_CREATE_FAILURE, /* 1008 */ - XML_RNGP_DATA_CONTENT, /* 1009 */ - XML_RNGP_DEF_CHOICE_AND_INTERLEAVE, /* 1010 */ - XML_RNGP_DEFINE_CREATE_FAILED, /* 1011 */ - XML_RNGP_DEFINE_EMPTY, /* 1012 */ - XML_RNGP_DEFINE_MISSING, /* 1013 */ - XML_RNGP_DEFINE_NAME_MISSING, /* 1014 */ - XML_RNGP_ELEM_CONTENT_EMPTY, /* 1015 */ - XML_RNGP_ELEM_CONTENT_ERROR, /* 1016 */ - XML_RNGP_ELEMENT_EMPTY, /* 1017 */ - XML_RNGP_ELEMENT_CONTENT, /* 1018 */ - XML_RNGP_ELEMENT_NAME, /* 1019 */ - XML_RNGP_ELEMENT_NO_CONTENT, /* 1020 */ - XML_RNGP_ELEM_TEXT_CONFLICT, /* 1021 */ - XML_RNGP_EMPTY, /* 1022 */ - XML_RNGP_EMPTY_CONSTRUCT, /* 1023 */ - XML_RNGP_EMPTY_CONTENT, /* 1024 */ - XML_RNGP_EMPTY_NOT_EMPTY, /* 1025 */ - XML_RNGP_ERROR_TYPE_LIB, /* 1026 */ - XML_RNGP_EXCEPT_EMPTY, /* 1027 */ - XML_RNGP_EXCEPT_MISSING, /* 1028 */ - XML_RNGP_EXCEPT_MULTIPLE, /* 1029 */ - XML_RNGP_EXCEPT_NO_CONTENT, /* 1030 */ - XML_RNGP_EXTERNALREF_EMTPY, /* 1031 */ - XML_RNGP_EXTERNAL_REF_FAILURE, /* 1032 */ - XML_RNGP_EXTERNALREF_RECURSE, /* 1033 */ - XML_RNGP_FORBIDDEN_ATTRIBUTE, /* 1034 */ - XML_RNGP_FOREIGN_ELEMENT, /* 1035 */ - XML_RNGP_GRAMMAR_CONTENT, /* 1036 */ - XML_RNGP_GRAMMAR_EMPTY, /* 1037 */ - XML_RNGP_GRAMMAR_MISSING, /* 1038 */ - XML_RNGP_GRAMMAR_NO_START, /* 1039 */ - XML_RNGP_GROUP_ATTR_CONFLICT, /* 1040 */ - XML_RNGP_HREF_ERROR, /* 1041 */ - XML_RNGP_INCLUDE_EMPTY, /* 1042 */ - XML_RNGP_INCLUDE_FAILURE, /* 1043 */ - XML_RNGP_INCLUDE_RECURSE, /* 1044 */ - XML_RNGP_INTERLEAVE_ADD, /* 1045 */ - XML_RNGP_INTERLEAVE_CREATE_FAILED, /* 1046 */ - XML_RNGP_INTERLEAVE_EMPTY, /* 1047 */ - XML_RNGP_INTERLEAVE_NO_CONTENT, /* 1048 */ - XML_RNGP_INVALID_DEFINE_NAME, /* 1049 */ - XML_RNGP_INVALID_URI, /* 1050 */ - XML_RNGP_INVALID_VALUE, /* 1051 */ - XML_RNGP_MISSING_HREF, /* 1052 */ - XML_RNGP_NAME_MISSING, /* 1053 */ - XML_RNGP_NEED_COMBINE, /* 1054 */ - XML_RNGP_NOTALLOWED_NOT_EMPTY, /* 1055 */ - XML_RNGP_NSNAME_ATTR_ANCESTOR, /* 1056 */ - XML_RNGP_NSNAME_NO_NS, /* 1057 */ - XML_RNGP_PARAM_FORBIDDEN, /* 1058 */ - XML_RNGP_PARAM_NAME_MISSING, /* 1059 */ - XML_RNGP_PARENTREF_CREATE_FAILED, /* 1060 */ - XML_RNGP_PARENTREF_NAME_INVALID, /* 1061 */ - XML_RNGP_PARENTREF_NO_NAME, /* 1062 */ - XML_RNGP_PARENTREF_NO_PARENT, /* 1063 */ - XML_RNGP_PARENTREF_NOT_EMPTY, /* 1064 */ - XML_RNGP_PARSE_ERROR, /* 1065 */ - XML_RNGP_PAT_ANYNAME_EXCEPT_ANYNAME, /* 1066 */ - XML_RNGP_PAT_ATTR_ATTR, /* 1067 */ - XML_RNGP_PAT_ATTR_ELEM, /* 1068 */ - XML_RNGP_PAT_DATA_EXCEPT_ATTR, /* 1069 */ - XML_RNGP_PAT_DATA_EXCEPT_ELEM, /* 1070 */ - XML_RNGP_PAT_DATA_EXCEPT_EMPTY, /* 1071 */ - XML_RNGP_PAT_DATA_EXCEPT_GROUP, /* 1072 */ - XML_RNGP_PAT_DATA_EXCEPT_INTERLEAVE, /* 1073 */ - XML_RNGP_PAT_DATA_EXCEPT_LIST, /* 1074 */ - XML_RNGP_PAT_DATA_EXCEPT_ONEMORE, /* 1075 */ - XML_RNGP_PAT_DATA_EXCEPT_REF, /* 1076 */ - XML_RNGP_PAT_DATA_EXCEPT_TEXT, /* 1077 */ - XML_RNGP_PAT_LIST_ATTR, /* 1078 */ - XML_RNGP_PAT_LIST_ELEM, /* 1079 */ - XML_RNGP_PAT_LIST_INTERLEAVE, /* 1080 */ - XML_RNGP_PAT_LIST_LIST, /* 1081 */ - XML_RNGP_PAT_LIST_REF, /* 1082 */ - XML_RNGP_PAT_LIST_TEXT, /* 1083 */ - XML_RNGP_PAT_NSNAME_EXCEPT_ANYNAME, /* 1084 */ - XML_RNGP_PAT_NSNAME_EXCEPT_NSNAME, /* 1085 */ - XML_RNGP_PAT_ONEMORE_GROUP_ATTR, /* 1086 */ - XML_RNGP_PAT_ONEMORE_INTERLEAVE_ATTR, /* 1087 */ - XML_RNGP_PAT_START_ATTR, /* 1088 */ - XML_RNGP_PAT_START_DATA, /* 1089 */ - XML_RNGP_PAT_START_EMPTY, /* 1090 */ - XML_RNGP_PAT_START_GROUP, /* 1091 */ - XML_RNGP_PAT_START_INTERLEAVE, /* 1092 */ - XML_RNGP_PAT_START_LIST, /* 1093 */ - XML_RNGP_PAT_START_ONEMORE, /* 1094 */ - XML_RNGP_PAT_START_TEXT, /* 1095 */ - XML_RNGP_PAT_START_VALUE, /* 1096 */ - XML_RNGP_PREFIX_UNDEFINED, /* 1097 */ - XML_RNGP_REF_CREATE_FAILED, /* 1098 */ - XML_RNGP_REF_CYCLE, /* 1099 */ - XML_RNGP_REF_NAME_INVALID, /* 1100 */ - XML_RNGP_REF_NO_DEF, /* 1101 */ - XML_RNGP_REF_NO_NAME, /* 1102 */ - XML_RNGP_REF_NOT_EMPTY, /* 1103 */ - XML_RNGP_START_CHOICE_AND_INTERLEAVE, /* 1104 */ - XML_RNGP_START_CONTENT, /* 1105 */ - XML_RNGP_START_EMPTY, /* 1106 */ - XML_RNGP_START_MISSING, /* 1107 */ - XML_RNGP_TEXT_EXPECTED, /* 1108 */ - XML_RNGP_TEXT_HAS_CHILD, /* 1109 */ - XML_RNGP_TYPE_MISSING, /* 1110 */ - XML_RNGP_TYPE_NOT_FOUND, /* 1111 */ - XML_RNGP_TYPE_VALUE, /* 1112 */ - XML_RNGP_UNKNOWN_ATTRIBUTE, /* 1113 */ - XML_RNGP_UNKNOWN_COMBINE, /* 1114 */ - XML_RNGP_UNKNOWN_CONSTRUCT, /* 1115 */ - XML_RNGP_UNKNOWN_TYPE_LIB, /* 1116 */ - XML_RNGP_URI_FRAGMENT, /* 1117 */ - XML_RNGP_URI_NOT_ABSOLUTE, /* 1118 */ - XML_RNGP_VALUE_EMPTY, /* 1119 */ - XML_RNGP_VALUE_NO_CONTENT, /* 1120 */ - XML_RNGP_XMLNS_NAME, /* 1121 */ - XML_RNGP_XML_NS, /* 1122 */ - XML_XPATH_EXPRESSION_OK = 1200, - XML_XPATH_NUMBER_ERROR, /* 1201 */ - XML_XPATH_UNFINISHED_LITERAL_ERROR, /* 1202 */ - XML_XPATH_START_LITERAL_ERROR, /* 1203 */ - XML_XPATH_VARIABLE_REF_ERROR, /* 1204 */ - XML_XPATH_UNDEF_VARIABLE_ERROR, /* 1205 */ - XML_XPATH_INVALID_PREDICATE_ERROR, /* 1206 */ - XML_XPATH_EXPR_ERROR, /* 1207 */ - XML_XPATH_UNCLOSED_ERROR, /* 1208 */ - XML_XPATH_UNKNOWN_FUNC_ERROR, /* 1209 */ - XML_XPATH_INVALID_OPERAND, /* 1210 */ - XML_XPATH_INVALID_TYPE, /* 1211 */ - XML_XPATH_INVALID_ARITY, /* 1212 */ - XML_XPATH_INVALID_CTXT_SIZE, /* 1213 */ - XML_XPATH_INVALID_CTXT_POSITION, /* 1214 */ - XML_XPATH_MEMORY_ERROR, /* 1215 */ - XML_XPTR_SYNTAX_ERROR, /* 1216 */ - XML_XPTR_RESOURCE_ERROR, /* 1217 */ - XML_XPTR_SUB_RESOURCE_ERROR, /* 1218 */ - XML_XPATH_UNDEF_PREFIX_ERROR, /* 1219 */ - XML_XPATH_ENCODING_ERROR, /* 1220 */ - XML_XPATH_INVALID_CHAR_ERROR, /* 1221 */ - XML_TREE_INVALID_HEX = 1300, - XML_TREE_INVALID_DEC, /* 1301 */ - XML_TREE_UNTERMINATED_ENTITY, /* 1302 */ - XML_TREE_NOT_UTF8, /* 1303 */ - XML_SAVE_NOT_UTF8 = 1400, - XML_SAVE_CHAR_INVALID, /* 1401 */ - XML_SAVE_NO_DOCTYPE, /* 1402 */ - XML_SAVE_UNKNOWN_ENCODING, /* 1403 */ - XML_REGEXP_COMPILE_ERROR = 1450, - XML_IO_UNKNOWN = 1500, - XML_IO_EACCES, /* 1501 */ - XML_IO_EAGAIN, /* 1502 */ - XML_IO_EBADF, /* 1503 */ - XML_IO_EBADMSG, /* 1504 */ - XML_IO_EBUSY, /* 1505 */ - XML_IO_ECANCELED, /* 1506 */ - XML_IO_ECHILD, /* 1507 */ - XML_IO_EDEADLK, /* 1508 */ - XML_IO_EDOM, /* 1509 */ - XML_IO_EEXIST, /* 1510 */ - XML_IO_EFAULT, /* 1511 */ - XML_IO_EFBIG, /* 1512 */ - XML_IO_EINPROGRESS, /* 1513 */ - XML_IO_EINTR, /* 1514 */ - XML_IO_EINVAL, /* 1515 */ - XML_IO_EIO, /* 1516 */ - XML_IO_EISDIR, /* 1517 */ - XML_IO_EMFILE, /* 1518 */ - XML_IO_EMLINK, /* 1519 */ - XML_IO_EMSGSIZE, /* 1520 */ - XML_IO_ENAMETOOLONG, /* 1521 */ - XML_IO_ENFILE, /* 1522 */ - XML_IO_ENODEV, /* 1523 */ - XML_IO_ENOENT, /* 1524 */ - XML_IO_ENOEXEC, /* 1525 */ - XML_IO_ENOLCK, /* 1526 */ - XML_IO_ENOMEM, /* 1527 */ - XML_IO_ENOSPC, /* 1528 */ - XML_IO_ENOSYS, /* 1529 */ - XML_IO_ENOTDIR, /* 1530 */ - XML_IO_ENOTEMPTY, /* 1531 */ - XML_IO_ENOTSUP, /* 1532 */ - XML_IO_ENOTTY, /* 1533 */ - XML_IO_ENXIO, /* 1534 */ - XML_IO_EPERM, /* 1535 */ - XML_IO_EPIPE, /* 1536 */ - XML_IO_ERANGE, /* 1537 */ - XML_IO_EROFS, /* 1538 */ - XML_IO_ESPIPE, /* 1539 */ - XML_IO_ESRCH, /* 1540 */ - XML_IO_ETIMEDOUT, /* 1541 */ - XML_IO_EXDEV, /* 1542 */ - XML_IO_NETWORK_ATTEMPT, /* 1543 */ - XML_IO_ENCODER, /* 1544 */ - XML_IO_FLUSH, /* 1545 */ - XML_IO_WRITE, /* 1546 */ - XML_IO_NO_INPUT, /* 1547 */ - XML_IO_BUFFER_FULL, /* 1548 */ - XML_IO_LOAD_ERROR, /* 1549 */ - XML_IO_ENOTSOCK, /* 1550 */ - XML_IO_EISCONN, /* 1551 */ - XML_IO_ECONNREFUSED, /* 1552 */ - XML_IO_ENETUNREACH, /* 1553 */ - XML_IO_EADDRINUSE, /* 1554 */ - XML_IO_EALREADY, /* 1555 */ - XML_IO_EAFNOSUPPORT, /* 1556 */ - XML_XINCLUDE_RECURSION=1600, - XML_XINCLUDE_PARSE_VALUE, /* 1601 */ - XML_XINCLUDE_ENTITY_DEF_MISMATCH, /* 1602 */ - XML_XINCLUDE_NO_HREF, /* 1603 */ - XML_XINCLUDE_NO_FALLBACK, /* 1604 */ - XML_XINCLUDE_HREF_URI, /* 1605 */ - XML_XINCLUDE_TEXT_FRAGMENT, /* 1606 */ - XML_XINCLUDE_TEXT_DOCUMENT, /* 1607 */ - XML_XINCLUDE_INVALID_CHAR, /* 1608 */ - XML_XINCLUDE_BUILD_FAILED, /* 1609 */ - XML_XINCLUDE_UNKNOWN_ENCODING, /* 1610 */ - XML_XINCLUDE_MULTIPLE_ROOT, /* 1611 */ - XML_XINCLUDE_XPTR_FAILED, /* 1612 */ - XML_XINCLUDE_XPTR_RESULT, /* 1613 */ - XML_XINCLUDE_INCLUDE_IN_INCLUDE, /* 1614 */ - XML_XINCLUDE_FALLBACKS_IN_INCLUDE, /* 1615 */ - XML_XINCLUDE_FALLBACK_NOT_IN_INCLUDE, /* 1616 */ - XML_XINCLUDE_DEPRECATED_NS, /* 1617 */ - XML_XINCLUDE_FRAGMENT_ID, /* 1618 */ - XML_CATALOG_MISSING_ATTR = 1650, - XML_CATALOG_ENTRY_BROKEN, /* 1651 */ - XML_CATALOG_PREFER_VALUE, /* 1652 */ - XML_CATALOG_NOT_CATALOG, /* 1653 */ - XML_CATALOG_RECURSION, /* 1654 */ - XML_SCHEMAP_PREFIX_UNDEFINED = 1700, - XML_SCHEMAP_ATTRFORMDEFAULT_VALUE, /* 1701 */ - XML_SCHEMAP_ATTRGRP_NONAME_NOREF, /* 1702 */ - XML_SCHEMAP_ATTR_NONAME_NOREF, /* 1703 */ - XML_SCHEMAP_COMPLEXTYPE_NONAME_NOREF, /* 1704 */ - XML_SCHEMAP_ELEMFORMDEFAULT_VALUE, /* 1705 */ - XML_SCHEMAP_ELEM_NONAME_NOREF, /* 1706 */ - XML_SCHEMAP_EXTENSION_NO_BASE, /* 1707 */ - XML_SCHEMAP_FACET_NO_VALUE, /* 1708 */ - XML_SCHEMAP_FAILED_BUILD_IMPORT, /* 1709 */ - XML_SCHEMAP_GROUP_NONAME_NOREF, /* 1710 */ - XML_SCHEMAP_IMPORT_NAMESPACE_NOT_URI, /* 1711 */ - XML_SCHEMAP_IMPORT_REDEFINE_NSNAME, /* 1712 */ - XML_SCHEMAP_IMPORT_SCHEMA_NOT_URI, /* 1713 */ - XML_SCHEMAP_INVALID_BOOLEAN, /* 1714 */ - XML_SCHEMAP_INVALID_ENUM, /* 1715 */ - XML_SCHEMAP_INVALID_FACET, /* 1716 */ - XML_SCHEMAP_INVALID_FACET_VALUE, /* 1717 */ - XML_SCHEMAP_INVALID_MAXOCCURS, /* 1718 */ - XML_SCHEMAP_INVALID_MINOCCURS, /* 1719 */ - XML_SCHEMAP_INVALID_REF_AND_SUBTYPE, /* 1720 */ - XML_SCHEMAP_INVALID_WHITE_SPACE, /* 1721 */ - XML_SCHEMAP_NOATTR_NOREF, /* 1722 */ - XML_SCHEMAP_NOTATION_NO_NAME, /* 1723 */ - XML_SCHEMAP_NOTYPE_NOREF, /* 1724 */ - XML_SCHEMAP_REF_AND_SUBTYPE, /* 1725 */ - XML_SCHEMAP_RESTRICTION_NONAME_NOREF, /* 1726 */ - XML_SCHEMAP_SIMPLETYPE_NONAME, /* 1727 */ - XML_SCHEMAP_TYPE_AND_SUBTYPE, /* 1728 */ - XML_SCHEMAP_UNKNOWN_ALL_CHILD, /* 1729 */ - XML_SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD, /* 1730 */ - XML_SCHEMAP_UNKNOWN_ATTR_CHILD, /* 1731 */ - XML_SCHEMAP_UNKNOWN_ATTRGRP_CHILD, /* 1732 */ - XML_SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP, /* 1733 */ - XML_SCHEMAP_UNKNOWN_BASE_TYPE, /* 1734 */ - XML_SCHEMAP_UNKNOWN_CHOICE_CHILD, /* 1735 */ - XML_SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD, /* 1736 */ - XML_SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD, /* 1737 */ - XML_SCHEMAP_UNKNOWN_ELEM_CHILD, /* 1738 */ - XML_SCHEMAP_UNKNOWN_EXTENSION_CHILD, /* 1739 */ - XML_SCHEMAP_UNKNOWN_FACET_CHILD, /* 1740 */ - XML_SCHEMAP_UNKNOWN_FACET_TYPE, /* 1741 */ - XML_SCHEMAP_UNKNOWN_GROUP_CHILD, /* 1742 */ - XML_SCHEMAP_UNKNOWN_IMPORT_CHILD, /* 1743 */ - XML_SCHEMAP_UNKNOWN_LIST_CHILD, /* 1744 */ - XML_SCHEMAP_UNKNOWN_NOTATION_CHILD, /* 1745 */ - XML_SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD, /* 1746 */ - XML_SCHEMAP_UNKNOWN_REF, /* 1747 */ - XML_SCHEMAP_UNKNOWN_RESTRICTION_CHILD, /* 1748 */ - XML_SCHEMAP_UNKNOWN_SCHEMAS_CHILD, /* 1749 */ - XML_SCHEMAP_UNKNOWN_SEQUENCE_CHILD, /* 1750 */ - XML_SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD, /* 1751 */ - XML_SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD, /* 1752 */ - XML_SCHEMAP_UNKNOWN_TYPE, /* 1753 */ - XML_SCHEMAP_UNKNOWN_UNION_CHILD, /* 1754 */ - XML_SCHEMAP_ELEM_DEFAULT_FIXED, /* 1755 */ - XML_SCHEMAP_REGEXP_INVALID, /* 1756 */ - XML_SCHEMAP_FAILED_LOAD, /* 1757 */ - XML_SCHEMAP_NOTHING_TO_PARSE, /* 1758 */ - XML_SCHEMAP_NOROOT, /* 1759 */ - XML_SCHEMAP_REDEFINED_GROUP, /* 1760 */ - XML_SCHEMAP_REDEFINED_TYPE, /* 1761 */ - XML_SCHEMAP_REDEFINED_ELEMENT, /* 1762 */ - XML_SCHEMAP_REDEFINED_ATTRGROUP, /* 1763 */ - XML_SCHEMAP_REDEFINED_ATTR, /* 1764 */ - XML_SCHEMAP_REDEFINED_NOTATION, /* 1765 */ - XML_SCHEMAP_FAILED_PARSE, /* 1766 */ - XML_SCHEMAP_UNKNOWN_PREFIX, /* 1767 */ - XML_SCHEMAP_DEF_AND_PREFIX, /* 1768 */ - XML_SCHEMAP_UNKNOWN_INCLUDE_CHILD, /* 1769 */ - XML_SCHEMAP_INCLUDE_SCHEMA_NOT_URI, /* 1770 */ - XML_SCHEMAP_INCLUDE_SCHEMA_NO_URI, /* 1771 */ - XML_SCHEMAP_NOT_SCHEMA, /* 1772 */ - XML_SCHEMAP_UNKNOWN_MEMBER_TYPE, /* 1773 */ - XML_SCHEMAP_INVALID_ATTR_USE, /* 1774 */ - XML_SCHEMAP_RECURSIVE, /* 1775 */ - XML_SCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE, /* 1776 */ - XML_SCHEMAP_INVALID_ATTR_COMBINATION, /* 1777 */ - XML_SCHEMAP_INVALID_ATTR_INLINE_COMBINATION, /* 1778 */ - XML_SCHEMAP_MISSING_SIMPLETYPE_CHILD, /* 1779 */ - XML_SCHEMAP_INVALID_ATTR_NAME, /* 1780 */ - XML_SCHEMAP_REF_AND_CONTENT, /* 1781 */ - XML_SCHEMAP_CT_PROPS_CORRECT_1, /* 1782 */ - XML_SCHEMAP_CT_PROPS_CORRECT_2, /* 1783 */ - XML_SCHEMAP_CT_PROPS_CORRECT_3, /* 1784 */ - XML_SCHEMAP_CT_PROPS_CORRECT_4, /* 1785 */ - XML_SCHEMAP_CT_PROPS_CORRECT_5, /* 1786 */ - XML_SCHEMAP_DERIVATION_OK_RESTRICTION_1, /* 1787 */ - XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_1, /* 1788 */ - XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2, /* 1789 */ - XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_2, /* 1790 */ - XML_SCHEMAP_DERIVATION_OK_RESTRICTION_3, /* 1791 */ - XML_SCHEMAP_WILDCARD_INVALID_NS_MEMBER, /* 1792 */ - XML_SCHEMAP_INTERSECTION_NOT_EXPRESSIBLE, /* 1793 */ - XML_SCHEMAP_UNION_NOT_EXPRESSIBLE, /* 1794 */ - XML_SCHEMAP_SRC_IMPORT_3_1, /* 1795 */ - XML_SCHEMAP_SRC_IMPORT_3_2, /* 1796 */ - XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_1, /* 1797 */ - XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_2, /* 1798 */ - XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_3, /* 1799 */ - XML_SCHEMAP_COS_CT_EXTENDS_1_3, /* 1800 */ - XML_SCHEMAV_NOROOT = 1801, - XML_SCHEMAV_UNDECLAREDELEM, /* 1802 */ - XML_SCHEMAV_NOTTOPLEVEL, /* 1803 */ - XML_SCHEMAV_MISSING, /* 1804 */ - XML_SCHEMAV_WRONGELEM, /* 1805 */ - XML_SCHEMAV_NOTYPE, /* 1806 */ - XML_SCHEMAV_NOROLLBACK, /* 1807 */ - XML_SCHEMAV_ISABSTRACT, /* 1808 */ - XML_SCHEMAV_NOTEMPTY, /* 1809 */ - XML_SCHEMAV_ELEMCONT, /* 1810 */ - XML_SCHEMAV_HAVEDEFAULT, /* 1811 */ - XML_SCHEMAV_NOTNILLABLE, /* 1812 */ - XML_SCHEMAV_EXTRACONTENT, /* 1813 */ - XML_SCHEMAV_INVALIDATTR, /* 1814 */ - XML_SCHEMAV_INVALIDELEM, /* 1815 */ - XML_SCHEMAV_NOTDETERMINIST, /* 1816 */ - XML_SCHEMAV_CONSTRUCT, /* 1817 */ - XML_SCHEMAV_INTERNAL, /* 1818 */ - XML_SCHEMAV_NOTSIMPLE, /* 1819 */ - XML_SCHEMAV_ATTRUNKNOWN, /* 1820 */ - XML_SCHEMAV_ATTRINVALID, /* 1821 */ - XML_SCHEMAV_VALUE, /* 1822 */ - XML_SCHEMAV_FACET, /* 1823 */ - XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_1, /* 1824 */ - XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_2, /* 1825 */ - XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_3, /* 1826 */ - XML_SCHEMAV_CVC_TYPE_3_1_1, /* 1827 */ - XML_SCHEMAV_CVC_TYPE_3_1_2, /* 1828 */ - XML_SCHEMAV_CVC_FACET_VALID, /* 1829 */ - XML_SCHEMAV_CVC_LENGTH_VALID, /* 1830 */ - XML_SCHEMAV_CVC_MINLENGTH_VALID, /* 1831 */ - XML_SCHEMAV_CVC_MAXLENGTH_VALID, /* 1832 */ - XML_SCHEMAV_CVC_MININCLUSIVE_VALID, /* 1833 */ - XML_SCHEMAV_CVC_MAXINCLUSIVE_VALID, /* 1834 */ - XML_SCHEMAV_CVC_MINEXCLUSIVE_VALID, /* 1835 */ - XML_SCHEMAV_CVC_MAXEXCLUSIVE_VALID, /* 1836 */ - XML_SCHEMAV_CVC_TOTALDIGITS_VALID, /* 1837 */ - XML_SCHEMAV_CVC_FRACTIONDIGITS_VALID, /* 1838 */ - XML_SCHEMAV_CVC_PATTERN_VALID, /* 1839 */ - XML_SCHEMAV_CVC_ENUMERATION_VALID, /* 1840 */ - XML_SCHEMAV_CVC_COMPLEX_TYPE_2_1, /* 1841 */ - XML_SCHEMAV_CVC_COMPLEX_TYPE_2_2, /* 1842 */ - XML_SCHEMAV_CVC_COMPLEX_TYPE_2_3, /* 1843 */ - XML_SCHEMAV_CVC_COMPLEX_TYPE_2_4, /* 1844 */ - XML_SCHEMAV_CVC_ELT_1, /* 1845 */ - XML_SCHEMAV_CVC_ELT_2, /* 1846 */ - XML_SCHEMAV_CVC_ELT_3_1, /* 1847 */ - XML_SCHEMAV_CVC_ELT_3_2_1, /* 1848 */ - XML_SCHEMAV_CVC_ELT_3_2_2, /* 1849 */ - XML_SCHEMAV_CVC_ELT_4_1, /* 1850 */ - XML_SCHEMAV_CVC_ELT_4_2, /* 1851 */ - XML_SCHEMAV_CVC_ELT_4_3, /* 1852 */ - XML_SCHEMAV_CVC_ELT_5_1_1, /* 1853 */ - XML_SCHEMAV_CVC_ELT_5_1_2, /* 1854 */ - XML_SCHEMAV_CVC_ELT_5_2_1, /* 1855 */ - XML_SCHEMAV_CVC_ELT_5_2_2_1, /* 1856 */ - XML_SCHEMAV_CVC_ELT_5_2_2_2_1, /* 1857 */ - XML_SCHEMAV_CVC_ELT_5_2_2_2_2, /* 1858 */ - XML_SCHEMAV_CVC_ELT_6, /* 1859 */ - XML_SCHEMAV_CVC_ELT_7, /* 1860 */ - XML_SCHEMAV_CVC_ATTRIBUTE_1, /* 1861 */ - XML_SCHEMAV_CVC_ATTRIBUTE_2, /* 1862 */ - XML_SCHEMAV_CVC_ATTRIBUTE_3, /* 1863 */ - XML_SCHEMAV_CVC_ATTRIBUTE_4, /* 1864 */ - XML_SCHEMAV_CVC_COMPLEX_TYPE_3_1, /* 1865 */ - XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_1, /* 1866 */ - XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_2, /* 1867 */ - XML_SCHEMAV_CVC_COMPLEX_TYPE_4, /* 1868 */ - XML_SCHEMAV_CVC_COMPLEX_TYPE_5_1, /* 1869 */ - XML_SCHEMAV_CVC_COMPLEX_TYPE_5_2, /* 1870 */ - XML_SCHEMAV_ELEMENT_CONTENT, /* 1871 */ - XML_SCHEMAV_DOCUMENT_ELEMENT_MISSING, /* 1872 */ - XML_SCHEMAV_CVC_COMPLEX_TYPE_1, /* 1873 */ - XML_SCHEMAV_CVC_AU, /* 1874 */ - XML_SCHEMAV_CVC_TYPE_1, /* 1875 */ - XML_SCHEMAV_CVC_TYPE_2, /* 1876 */ - XML_SCHEMAV_CVC_IDC, /* 1877 */ - XML_SCHEMAV_CVC_WILDCARD, /* 1878 */ - XML_SCHEMAV_MISC, /* 1879 */ - XML_XPTR_UNKNOWN_SCHEME = 1900, - XML_XPTR_CHILDSEQ_START, /* 1901 */ - XML_XPTR_EVAL_FAILED, /* 1902 */ - XML_XPTR_EXTRA_OBJECTS, /* 1903 */ - XML_C14N_CREATE_CTXT = 1950, - XML_C14N_REQUIRES_UTF8, /* 1951 */ - XML_C14N_CREATE_STACK, /* 1952 */ - XML_C14N_INVALID_NODE, /* 1953 */ - XML_C14N_UNKNOW_NODE, /* 1954 */ - XML_C14N_RELATIVE_NAMESPACE, /* 1955 */ - XML_FTP_PASV_ANSWER = 2000, - XML_FTP_EPSV_ANSWER, /* 2001 */ - XML_FTP_ACCNT, /* 2002 */ - XML_FTP_URL_SYNTAX, /* 2003 */ - XML_HTTP_URL_SYNTAX = 2020, - XML_HTTP_USE_IP, /* 2021 */ - XML_HTTP_UNKNOWN_HOST, /* 2022 */ - XML_SCHEMAP_SRC_SIMPLE_TYPE_1 = 3000, - XML_SCHEMAP_SRC_SIMPLE_TYPE_2, /* 3001 */ - XML_SCHEMAP_SRC_SIMPLE_TYPE_3, /* 3002 */ - XML_SCHEMAP_SRC_SIMPLE_TYPE_4, /* 3003 */ - XML_SCHEMAP_SRC_RESOLVE, /* 3004 */ - XML_SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE, /* 3005 */ - XML_SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE, /* 3006 */ - XML_SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES, /* 3007 */ - XML_SCHEMAP_ST_PROPS_CORRECT_1, /* 3008 */ - XML_SCHEMAP_ST_PROPS_CORRECT_2, /* 3009 */ - XML_SCHEMAP_ST_PROPS_CORRECT_3, /* 3010 */ - XML_SCHEMAP_COS_ST_RESTRICTS_1_1, /* 3011 */ - XML_SCHEMAP_COS_ST_RESTRICTS_1_2, /* 3012 */ - XML_SCHEMAP_COS_ST_RESTRICTS_1_3_1, /* 3013 */ - XML_SCHEMAP_COS_ST_RESTRICTS_1_3_2, /* 3014 */ - XML_SCHEMAP_COS_ST_RESTRICTS_2_1, /* 3015 */ - XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_1, /* 3016 */ - XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_2, /* 3017 */ - XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_1, /* 3018 */ - XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_2, /* 3019 */ - XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_3, /* 3020 */ - XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_4, /* 3021 */ - XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_5, /* 3022 */ - XML_SCHEMAP_COS_ST_RESTRICTS_3_1, /* 3023 */ - XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1, /* 3024 */ - XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1_2, /* 3025 */ - XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_2, /* 3026 */ - XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_1, /* 3027 */ - XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_3, /* 3028 */ - XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_4, /* 3029 */ - XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_5, /* 3030 */ - XML_SCHEMAP_COS_ST_DERIVED_OK_2_1, /* 3031 */ - XML_SCHEMAP_COS_ST_DERIVED_OK_2_2, /* 3032 */ - XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED, /* 3033 */ - XML_SCHEMAP_S4S_ELEM_MISSING, /* 3034 */ - XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, /* 3035 */ - XML_SCHEMAP_S4S_ATTR_MISSING, /* 3036 */ - XML_SCHEMAP_S4S_ATTR_INVALID_VALUE, /* 3037 */ - XML_SCHEMAP_SRC_ELEMENT_1, /* 3038 */ - XML_SCHEMAP_SRC_ELEMENT_2_1, /* 3039 */ - XML_SCHEMAP_SRC_ELEMENT_2_2, /* 3040 */ - XML_SCHEMAP_SRC_ELEMENT_3, /* 3041 */ - XML_SCHEMAP_P_PROPS_CORRECT_1, /* 3042 */ - XML_SCHEMAP_P_PROPS_CORRECT_2_1, /* 3043 */ - XML_SCHEMAP_P_PROPS_CORRECT_2_2, /* 3044 */ - XML_SCHEMAP_E_PROPS_CORRECT_2, /* 3045 */ - XML_SCHEMAP_E_PROPS_CORRECT_3, /* 3046 */ - XML_SCHEMAP_E_PROPS_CORRECT_4, /* 3047 */ - XML_SCHEMAP_E_PROPS_CORRECT_5, /* 3048 */ - XML_SCHEMAP_E_PROPS_CORRECT_6, /* 3049 */ - XML_SCHEMAP_SRC_INCLUDE, /* 3050 */ - XML_SCHEMAP_SRC_ATTRIBUTE_1, /* 3051 */ - XML_SCHEMAP_SRC_ATTRIBUTE_2, /* 3052 */ - XML_SCHEMAP_SRC_ATTRIBUTE_3_1, /* 3053 */ - XML_SCHEMAP_SRC_ATTRIBUTE_3_2, /* 3054 */ - XML_SCHEMAP_SRC_ATTRIBUTE_4, /* 3055 */ - XML_SCHEMAP_NO_XMLNS, /* 3056 */ - XML_SCHEMAP_NO_XSI, /* 3057 */ - XML_SCHEMAP_COS_VALID_DEFAULT_1, /* 3058 */ - XML_SCHEMAP_COS_VALID_DEFAULT_2_1, /* 3059 */ - XML_SCHEMAP_COS_VALID_DEFAULT_2_2_1, /* 3060 */ - XML_SCHEMAP_COS_VALID_DEFAULT_2_2_2, /* 3061 */ - XML_SCHEMAP_CVC_SIMPLE_TYPE, /* 3062 */ - XML_SCHEMAP_COS_CT_EXTENDS_1_1, /* 3063 */ - XML_SCHEMAP_SRC_IMPORT_1_1, /* 3064 */ - XML_SCHEMAP_SRC_IMPORT_1_2, /* 3065 */ - XML_SCHEMAP_SRC_IMPORT_2, /* 3066 */ - XML_SCHEMAP_SRC_IMPORT_2_1, /* 3067 */ - XML_SCHEMAP_SRC_IMPORT_2_2, /* 3068 */ - XML_SCHEMAP_INTERNAL, /* 3069 non-W3C */ - XML_SCHEMAP_NOT_DETERMINISTIC, /* 3070 non-W3C */ - XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_1, /* 3071 */ - XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_2, /* 3072 */ - XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_3, /* 3073 */ - XML_SCHEMAP_MG_PROPS_CORRECT_1, /* 3074 */ - XML_SCHEMAP_MG_PROPS_CORRECT_2, /* 3075 */ - XML_SCHEMAP_SRC_CT_1, /* 3076 */ - XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3, /* 3077 */ - XML_SCHEMAP_AU_PROPS_CORRECT_2, /* 3078 */ - XML_SCHEMAP_A_PROPS_CORRECT_2, /* 3079 */ - XML_SCHEMAP_C_PROPS_CORRECT, /* 3080 */ - XML_SCHEMAP_SRC_REDEFINE, /* 3081 */ - XML_SCHEMAP_SRC_IMPORT, /* 3082 */ - XML_SCHEMAP_WARN_SKIP_SCHEMA, /* 3083 */ - XML_SCHEMAP_WARN_UNLOCATED_SCHEMA, /* 3084 */ - XML_SCHEMAP_WARN_ATTR_REDECL_PROH, /* 3085 */ - XML_SCHEMAP_WARN_ATTR_POINTLESS_PROH, /* 3085 */ - XML_SCHEMAP_AG_PROPS_CORRECT, /* 3086 */ - XML_SCHEMAP_COS_CT_EXTENDS_1_2, /* 3087 */ - XML_SCHEMAP_AU_PROPS_CORRECT, /* 3088 */ - XML_SCHEMAP_A_PROPS_CORRECT_3, /* 3089 */ - XML_SCHEMAP_COS_ALL_LIMITED, /* 3090 */ - XML_SCHEMATRONV_ASSERT = 4000, /* 4000 */ - XML_SCHEMATRONV_REPORT, - XML_MODULE_OPEN = 4900, /* 4900 */ - XML_MODULE_CLOSE, /* 4901 */ - XML_CHECK_FOUND_ELEMENT = 5000, - XML_CHECK_FOUND_ATTRIBUTE, /* 5001 */ - XML_CHECK_FOUND_TEXT, /* 5002 */ - XML_CHECK_FOUND_CDATA, /* 5003 */ - XML_CHECK_FOUND_ENTITYREF, /* 5004 */ - XML_CHECK_FOUND_ENTITY, /* 5005 */ - XML_CHECK_FOUND_PI, /* 5006 */ - XML_CHECK_FOUND_COMMENT, /* 5007 */ - XML_CHECK_FOUND_DOCTYPE, /* 5008 */ - XML_CHECK_FOUND_FRAGMENT, /* 5009 */ - XML_CHECK_FOUND_NOTATION, /* 5010 */ - XML_CHECK_UNKNOWN_NODE, /* 5011 */ - XML_CHECK_ENTITY_TYPE, /* 5012 */ - XML_CHECK_NO_PARENT, /* 5013 */ - XML_CHECK_NO_DOC, /* 5014 */ - XML_CHECK_NO_NAME, /* 5015 */ - XML_CHECK_NO_ELEM, /* 5016 */ - XML_CHECK_WRONG_DOC, /* 5017 */ - XML_CHECK_NO_PREV, /* 5018 */ - XML_CHECK_WRONG_PREV, /* 5019 */ - XML_CHECK_NO_NEXT, /* 5020 */ - XML_CHECK_WRONG_NEXT, /* 5021 */ - XML_CHECK_NOT_DTD, /* 5022 */ - XML_CHECK_NOT_ATTR, /* 5023 */ - XML_CHECK_NOT_ATTR_DECL, /* 5024 */ - XML_CHECK_NOT_ELEM_DECL, /* 5025 */ - XML_CHECK_NOT_ENTITY_DECL, /* 5026 */ - XML_CHECK_NOT_NS_DECL, /* 5027 */ - XML_CHECK_NO_HREF, /* 5028 */ - XML_CHECK_WRONG_PARENT,/* 5029 */ - XML_CHECK_NS_SCOPE, /* 5030 */ - XML_CHECK_NS_ANCESTOR, /* 5031 */ - XML_CHECK_NOT_UTF8, /* 5032 */ - XML_CHECK_NO_DICT, /* 5033 */ - XML_CHECK_NOT_NCNAME, /* 5034 */ - XML_CHECK_OUTSIDE_DICT, /* 5035 */ - XML_CHECK_WRONG_NAME, /* 5036 */ - XML_CHECK_NAME_NOT_NULL, /* 5037 */ - XML_I18N_NO_NAME = 6000, - XML_I18N_NO_HANDLER, /* 6001 */ - XML_I18N_EXCESS_HANDLER, /* 6002 */ - XML_I18N_CONV_FAILED, /* 6003 */ - XML_I18N_NO_OUTPUT, /* 6004 */ - XML_BUF_OVERFLOW = 7000 -} xmlParserErrors; - -/** - * xmlGenericErrorFunc: - * @ctx: a parsing context - * @msg: the message - * @...: the extra arguments of the varags to format the message - * - * Signature of the function to use when there is an error and - * no parsing or validity context available . - */ -typedef void (XMLCDECL *xmlGenericErrorFunc) (void *ctx, - const char *msg, - ...) LIBXML_ATTR_FORMAT(2,3); -/** - * xmlStructuredErrorFunc: - * @userData: user provided data for the error callback - * @error: the error being raised. - * - * Signature of the function to use when there is an error and - * the module handles the new error reporting mechanism. - */ -typedef void (XMLCALL *xmlStructuredErrorFunc) (void *userData, xmlErrorPtr error); - -/* - * Use the following function to reset the two global variables - * xmlGenericError and xmlGenericErrorContext. - */ -XMLPUBFUN void XMLCALL - xmlSetGenericErrorFunc (void *ctx, - xmlGenericErrorFunc handler); -XMLPUBFUN void XMLCALL - initGenericErrorDefaultFunc (xmlGenericErrorFunc *handler); - -XMLPUBFUN void XMLCALL - xmlSetStructuredErrorFunc (void *ctx, - xmlStructuredErrorFunc handler); -/* - * Default message routines used by SAX and Valid context for error - * and warning reporting. - */ -XMLPUBFUN void XMLCDECL - xmlParserError (void *ctx, - const char *msg, - ...) LIBXML_ATTR_FORMAT(2,3); -XMLPUBFUN void XMLCDECL - xmlParserWarning (void *ctx, - const char *msg, - ...) LIBXML_ATTR_FORMAT(2,3); -XMLPUBFUN void XMLCDECL - xmlParserValidityError (void *ctx, - const char *msg, - ...) LIBXML_ATTR_FORMAT(2,3); -XMLPUBFUN void XMLCDECL - xmlParserValidityWarning (void *ctx, - const char *msg, - ...) LIBXML_ATTR_FORMAT(2,3); -XMLPUBFUN void XMLCALL - xmlParserPrintFileInfo (xmlParserInputPtr input); -XMLPUBFUN void XMLCALL - xmlParserPrintFileContext (xmlParserInputPtr input); - -/* - * Extended error information routines - */ -XMLPUBFUN xmlErrorPtr XMLCALL - xmlGetLastError (void); -XMLPUBFUN void XMLCALL - xmlResetLastError (void); -XMLPUBFUN xmlErrorPtr XMLCALL - xmlCtxtGetLastError (void *ctx); -XMLPUBFUN void XMLCALL - xmlCtxtResetLastError (void *ctx); -XMLPUBFUN void XMLCALL - xmlResetError (xmlErrorPtr err); -XMLPUBFUN int XMLCALL - xmlCopyError (xmlErrorPtr from, - xmlErrorPtr to); - -#ifdef IN_LIBXML -/* - * Internal callback reporting routine - */ -XMLPUBFUN void XMLCALL - __xmlRaiseError (xmlStructuredErrorFunc schannel, - xmlGenericErrorFunc channel, - void *data, - void *ctx, - void *node, - int domain, - int code, - xmlErrorLevel level, - const char *file, - int line, - const char *str1, - const char *str2, - const char *str3, - int int1, - int col, - const char *msg, - ...) LIBXML_ATTR_FORMAT(16,17); -XMLPUBFUN void XMLCALL - __xmlSimpleError (int domain, - int code, - xmlNodePtr node, - const char *msg, - const char *extra); -#endif -#ifdef __cplusplus -} -#endif -#endif /* __XML_ERROR_H__ */ diff --git a/cache/include/libxml/xmlexports.h b/cache/include/libxml/xmlexports.h deleted file mode 100644 index 2c79f81..0000000 --- a/cache/include/libxml/xmlexports.h +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Summary: macros for marking symbols as exportable/importable. - * Description: macros for marking symbols as exportable/importable. - * - * Copy: See Copyright for the status of this software. - * - * Author: Igor Zlatovic - */ - -#ifndef __XML_EXPORTS_H__ -#define __XML_EXPORTS_H__ - -/** - * XMLPUBFUN, XMLPUBVAR, XMLCALL - * - * Macros which declare an exportable function, an exportable variable and - * the calling convention used for functions. - * - * Please use an extra block for every platform/compiler combination when - * modifying this, rather than overlong #ifdef lines. This helps - * readability as well as the fact that different compilers on the same - * platform might need different definitions. - */ - -/** - * XMLPUBFUN: - * - * Macros which declare an exportable function - */ -#define XMLPUBFUN -/** - * XMLPUBVAR: - * - * Macros which declare an exportable variable - */ -#define XMLPUBVAR extern -/** - * XMLCALL: - * - * Macros which declare the called convention for exported functions - */ -#define XMLCALL -/** - * XMLCDECL: - * - * Macro which declares the calling convention for exported functions that - * use '...'. - */ -#define XMLCDECL - -/** DOC_DISABLE */ - -/* Windows platform with MS compiler */ -#if defined(_WIN32) && defined(_MSC_VER) - #undef XMLPUBFUN - #undef XMLPUBVAR - #undef XMLCALL - #undef XMLCDECL - #if defined(IN_LIBXML) && !defined(LIBXML_STATIC) - #define XMLPUBFUN __declspec(dllexport) - #define XMLPUBVAR __declspec(dllexport) - #else - #define XMLPUBFUN - #if !defined(LIBXML_STATIC) - #define XMLPUBVAR __declspec(dllimport) extern - #else - #define XMLPUBVAR extern - #endif - #endif - #if defined(LIBXML_FASTCALL) - #define XMLCALL __fastcall - #else - #define XMLCALL __cdecl - #endif - #define XMLCDECL __cdecl - #if !defined _REENTRANT - #define _REENTRANT - #endif -#endif - -/* Windows platform with Borland compiler */ -#if defined(_WIN32) && defined(__BORLANDC__) - #undef XMLPUBFUN - #undef XMLPUBVAR - #undef XMLCALL - #undef XMLCDECL - #if defined(IN_LIBXML) && !defined(LIBXML_STATIC) - #define XMLPUBFUN __declspec(dllexport) - #define XMLPUBVAR __declspec(dllexport) extern - #else - #define XMLPUBFUN - #if !defined(LIBXML_STATIC) - #define XMLPUBVAR __declspec(dllimport) extern - #else - #define XMLPUBVAR extern - #endif - #endif - #define XMLCALL __cdecl - #define XMLCDECL __cdecl - #if !defined _REENTRANT - #define _REENTRANT - #endif -#endif - -/* Windows platform with GNU compiler (Mingw) */ -#if defined(_WIN32) && defined(__MINGW32__) - #undef XMLPUBFUN - #undef XMLPUBVAR - #undef XMLCALL - #undef XMLCDECL - /* - * if defined(IN_LIBXML) this raises problems on mingw with msys - * _imp__xmlFree listed as missing. Try to workaround the problem - * by also making that declaration when compiling client code. - */ - #if defined(IN_LIBXML) && !defined(LIBXML_STATIC) - #define XMLPUBFUN __declspec(dllexport) - #define XMLPUBVAR __declspec(dllexport) extern - #else - #define XMLPUBFUN - #if !defined(LIBXML_STATIC) - #define XMLPUBVAR __declspec(dllimport) extern - #else - #define XMLPUBVAR extern - #endif - #endif - #define XMLCALL __cdecl - #define XMLCDECL __cdecl - #if !defined _REENTRANT - #define _REENTRANT - #endif -#endif - -/* Cygwin platform, GNU compiler */ -#if defined(_WIN32) && defined(__CYGWIN__) - #undef XMLPUBFUN - #undef XMLPUBVAR - #undef XMLCALL - #undef XMLCDECL - #if defined(IN_LIBXML) && !defined(LIBXML_STATIC) - #define XMLPUBFUN __declspec(dllexport) - #define XMLPUBVAR __declspec(dllexport) - #else - #define XMLPUBFUN - #if !defined(LIBXML_STATIC) - #define XMLPUBVAR __declspec(dllimport) extern - #else - #define XMLPUBVAR - #endif - #endif - #define XMLCALL __cdecl - #define XMLCDECL __cdecl -#endif - -/* Compatibility */ -#if !defined(LIBXML_DLL_IMPORT) -#define LIBXML_DLL_IMPORT XMLPUBVAR -#endif - -#endif /* __XML_EXPORTS_H__ */ - - diff --git a/cache/include/libxml/xmlmemory.h b/cache/include/libxml/xmlmemory.h deleted file mode 100644 index 17e375a..0000000 --- a/cache/include/libxml/xmlmemory.h +++ /dev/null @@ -1,224 +0,0 @@ -/* - * Summary: interface for the memory allocator - * Description: provides interfaces for the memory allocator, - * including debugging capabilities. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - - -#ifndef __DEBUG_MEMORY_ALLOC__ -#define __DEBUG_MEMORY_ALLOC__ - -#include -#include - -/** - * DEBUG_MEMORY: - * - * DEBUG_MEMORY replaces the allocator with a collect and debug - * shell to the libc allocator. - * DEBUG_MEMORY should only be activated when debugging - * libxml i.e. if libxml has been configured with --with-debug-mem too. - */ -/* #define DEBUG_MEMORY_FREED */ -/* #define DEBUG_MEMORY_LOCATION */ - -#ifdef DEBUG -#ifndef DEBUG_MEMORY -#define DEBUG_MEMORY -#endif -#endif - -/** - * DEBUG_MEMORY_LOCATION: - * - * DEBUG_MEMORY_LOCATION should be activated only when debugging - * libxml i.e. if libxml has been configured with --with-debug-mem too. - */ -#ifdef DEBUG_MEMORY_LOCATION -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * The XML memory wrapper support 4 basic overloadable functions. - */ -/** - * xmlFreeFunc: - * @mem: an already allocated block of memory - * - * Signature for a free() implementation. - */ -typedef void (XMLCALL *xmlFreeFunc)(void *mem); -/** - * xmlMallocFunc: - * @size: the size requested in bytes - * - * Signature for a malloc() implementation. - * - * Returns a pointer to the newly allocated block or NULL in case of error. - */ -typedef void *(LIBXML_ATTR_ALLOC_SIZE(1) XMLCALL *xmlMallocFunc)(size_t size); - -/** - * xmlReallocFunc: - * @mem: an already allocated block of memory - * @size: the new size requested in bytes - * - * Signature for a realloc() implementation. - * - * Returns a pointer to the newly reallocated block or NULL in case of error. - */ -typedef void *(XMLCALL *xmlReallocFunc)(void *mem, size_t size); - -/** - * xmlStrdupFunc: - * @str: a zero terminated string - * - * Signature for an strdup() implementation. - * - * Returns the copy of the string or NULL in case of error. - */ -typedef char *(XMLCALL *xmlStrdupFunc)(const char *str); - -/* - * The 4 interfaces used for all memory handling within libxml. -LIBXML_DLL_IMPORT xmlFreeFunc xmlFree; -LIBXML_DLL_IMPORT xmlMallocFunc xmlMalloc; -LIBXML_DLL_IMPORT xmlMallocFunc xmlMallocAtomic; -LIBXML_DLL_IMPORT xmlReallocFunc xmlRealloc; -LIBXML_DLL_IMPORT xmlStrdupFunc xmlMemStrdup; - */ - -/* - * The way to overload the existing functions. - * The xmlGc function have an extra entry for atomic block - * allocations useful for garbage collected memory allocators - */ -XMLPUBFUN int XMLCALL - xmlMemSetup (xmlFreeFunc freeFunc, - xmlMallocFunc mallocFunc, - xmlReallocFunc reallocFunc, - xmlStrdupFunc strdupFunc); -XMLPUBFUN int XMLCALL - xmlMemGet (xmlFreeFunc *freeFunc, - xmlMallocFunc *mallocFunc, - xmlReallocFunc *reallocFunc, - xmlStrdupFunc *strdupFunc); -XMLPUBFUN int XMLCALL - xmlGcMemSetup (xmlFreeFunc freeFunc, - xmlMallocFunc mallocFunc, - xmlMallocFunc mallocAtomicFunc, - xmlReallocFunc reallocFunc, - xmlStrdupFunc strdupFunc); -XMLPUBFUN int XMLCALL - xmlGcMemGet (xmlFreeFunc *freeFunc, - xmlMallocFunc *mallocFunc, - xmlMallocFunc *mallocAtomicFunc, - xmlReallocFunc *reallocFunc, - xmlStrdupFunc *strdupFunc); - -/* - * Initialization of the memory layer. - */ -XMLPUBFUN int XMLCALL - xmlInitMemory (void); - -/* - * Cleanup of the memory layer. - */ -XMLPUBFUN void XMLCALL - xmlCleanupMemory (void); -/* - * These are specific to the XML debug memory wrapper. - */ -XMLPUBFUN int XMLCALL - xmlMemUsed (void); -XMLPUBFUN int XMLCALL - xmlMemBlocks (void); -XMLPUBFUN void XMLCALL - xmlMemDisplay (FILE *fp); -XMLPUBFUN void XMLCALL - xmlMemDisplayLast(FILE *fp, long nbBytes); -XMLPUBFUN void XMLCALL - xmlMemShow (FILE *fp, int nr); -XMLPUBFUN void XMLCALL - xmlMemoryDump (void); -XMLPUBFUN void * XMLCALL - xmlMemMalloc (size_t size) LIBXML_ATTR_ALLOC_SIZE(1); -XMLPUBFUN void * XMLCALL - xmlMemRealloc (void *ptr,size_t size); -XMLPUBFUN void XMLCALL - xmlMemFree (void *ptr); -XMLPUBFUN char * XMLCALL - xmlMemoryStrdup (const char *str); -XMLPUBFUN void * XMLCALL - xmlMallocLoc (size_t size, const char *file, int line) LIBXML_ATTR_ALLOC_SIZE(1); -XMLPUBFUN void * XMLCALL - xmlReallocLoc (void *ptr, size_t size, const char *file, int line); -XMLPUBFUN void * XMLCALL - xmlMallocAtomicLoc (size_t size, const char *file, int line) LIBXML_ATTR_ALLOC_SIZE(1); -XMLPUBFUN char * XMLCALL - xmlMemStrdupLoc (const char *str, const char *file, int line); - - -#ifdef DEBUG_MEMORY_LOCATION -/** - * xmlMalloc: - * @size: number of bytes to allocate - * - * Wrapper for the malloc() function used in the XML library. - * - * Returns the pointer to the allocated area or NULL in case of error. - */ -#define xmlMalloc(size) xmlMallocLoc((size), __FILE__, __LINE__) -/** - * xmlMallocAtomic: - * @size: number of bytes to allocate - * - * Wrapper for the malloc() function used in the XML library for allocation - * of block not containing pointers to other areas. - * - * Returns the pointer to the allocated area or NULL in case of error. - */ -#define xmlMallocAtomic(size) xmlMallocAtomicLoc((size), __FILE__, __LINE__) -/** - * xmlRealloc: - * @ptr: pointer to the existing allocated area - * @size: number of bytes to allocate - * - * Wrapper for the realloc() function used in the XML library. - * - * Returns the pointer to the allocated area or NULL in case of error. - */ -#define xmlRealloc(ptr, size) xmlReallocLoc((ptr), (size), __FILE__, __LINE__) -/** - * xmlMemStrdup: - * @str: pointer to the existing string - * - * Wrapper for the strdup() function, xmlStrdup() is usually preferred. - * - * Returns the pointer to the allocated area or NULL in case of error. - */ -#define xmlMemStrdup(str) xmlMemStrdupLoc((str), __FILE__, __LINE__) - -#endif /* DEBUG_MEMORY_LOCATION */ - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#ifndef __XML_GLOBALS_H -#ifndef __XML_THREADS_H__ -#include -#include -#endif -#endif - -#endif /* __DEBUG_MEMORY_ALLOC__ */ - diff --git a/cache/include/libxml/xmlmodule.h b/cache/include/libxml/xmlmodule.h deleted file mode 100644 index 9667820..0000000 --- a/cache/include/libxml/xmlmodule.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Summary: dynamic module loading - * Description: basic API for dynamic module loading, used by - * libexslt added in 2.6.17 - * - * Copy: See Copyright for the status of this software. - * - * Author: Joel W. Reed - */ - -#ifndef __XML_MODULE_H__ -#define __XML_MODULE_H__ - -#include - -#ifdef LIBXML_MODULES_ENABLED - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * xmlModulePtr: - * - * A handle to a dynamically loaded module - */ -typedef struct _xmlModule xmlModule; -typedef xmlModule *xmlModulePtr; - -/** - * xmlModuleOption: - * - * enumeration of options that can be passed down to xmlModuleOpen() - */ -typedef enum { - XML_MODULE_LAZY = 1, /* lazy binding */ - XML_MODULE_LOCAL= 2 /* local binding */ -} xmlModuleOption; - -XMLPUBFUN xmlModulePtr XMLCALL xmlModuleOpen (const char *filename, - int options); - -XMLPUBFUN int XMLCALL xmlModuleSymbol (xmlModulePtr module, - const char* name, - void **result); - -XMLPUBFUN int XMLCALL xmlModuleClose (xmlModulePtr module); - -XMLPUBFUN int XMLCALL xmlModuleFree (xmlModulePtr module); - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_MODULES_ENABLED */ - -#endif /*__XML_MODULE_H__ */ diff --git a/cache/include/libxml/xmlreader.h b/cache/include/libxml/xmlreader.h deleted file mode 100644 index 2c99e3a..0000000 --- a/cache/include/libxml/xmlreader.h +++ /dev/null @@ -1,428 +0,0 @@ -/* - * Summary: the XMLReader implementation - * Description: API of the XML streaming API based on C# interfaces. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_XMLREADER_H__ -#define __XML_XMLREADER_H__ - -#include -#include -#include -#ifdef LIBXML_SCHEMAS_ENABLED -#include -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * xmlParserSeverities: - * - * How severe an error callback is when the per-reader error callback API - * is used. - */ -typedef enum { - XML_PARSER_SEVERITY_VALIDITY_WARNING = 1, - XML_PARSER_SEVERITY_VALIDITY_ERROR = 2, - XML_PARSER_SEVERITY_WARNING = 3, - XML_PARSER_SEVERITY_ERROR = 4 -} xmlParserSeverities; - -#ifdef LIBXML_READER_ENABLED - -/** - * xmlTextReaderMode: - * - * Internal state values for the reader. - */ -typedef enum { - XML_TEXTREADER_MODE_INITIAL = 0, - XML_TEXTREADER_MODE_INTERACTIVE = 1, - XML_TEXTREADER_MODE_ERROR = 2, - XML_TEXTREADER_MODE_EOF =3, - XML_TEXTREADER_MODE_CLOSED = 4, - XML_TEXTREADER_MODE_READING = 5 -} xmlTextReaderMode; - -/** - * xmlParserProperties: - * - * Some common options to use with xmlTextReaderSetParserProp, but it - * is better to use xmlParserOption and the xmlReaderNewxxx and - * xmlReaderForxxx APIs now. - */ -typedef enum { - XML_PARSER_LOADDTD = 1, - XML_PARSER_DEFAULTATTRS = 2, - XML_PARSER_VALIDATE = 3, - XML_PARSER_SUBST_ENTITIES = 4 -} xmlParserProperties; - -/** - * xmlReaderTypes: - * - * Predefined constants for the different types of nodes. - */ -typedef enum { - XML_READER_TYPE_NONE = 0, - XML_READER_TYPE_ELEMENT = 1, - XML_READER_TYPE_ATTRIBUTE = 2, - XML_READER_TYPE_TEXT = 3, - XML_READER_TYPE_CDATA = 4, - XML_READER_TYPE_ENTITY_REFERENCE = 5, - XML_READER_TYPE_ENTITY = 6, - XML_READER_TYPE_PROCESSING_INSTRUCTION = 7, - XML_READER_TYPE_COMMENT = 8, - XML_READER_TYPE_DOCUMENT = 9, - XML_READER_TYPE_DOCUMENT_TYPE = 10, - XML_READER_TYPE_DOCUMENT_FRAGMENT = 11, - XML_READER_TYPE_NOTATION = 12, - XML_READER_TYPE_WHITESPACE = 13, - XML_READER_TYPE_SIGNIFICANT_WHITESPACE = 14, - XML_READER_TYPE_END_ELEMENT = 15, - XML_READER_TYPE_END_ENTITY = 16, - XML_READER_TYPE_XML_DECLARATION = 17 -} xmlReaderTypes; - -/** - * xmlTextReader: - * - * Structure for an xmlReader context. - */ -typedef struct _xmlTextReader xmlTextReader; - -/** - * xmlTextReaderPtr: - * - * Pointer to an xmlReader context. - */ -typedef xmlTextReader *xmlTextReaderPtr; - -/* - * Constructors & Destructor - */ -XMLPUBFUN xmlTextReaderPtr XMLCALL - xmlNewTextReader (xmlParserInputBufferPtr input, - const char *URI); -XMLPUBFUN xmlTextReaderPtr XMLCALL - xmlNewTextReaderFilename(const char *URI); - -XMLPUBFUN void XMLCALL - xmlFreeTextReader (xmlTextReaderPtr reader); - -XMLPUBFUN int XMLCALL - xmlTextReaderSetup(xmlTextReaderPtr reader, - xmlParserInputBufferPtr input, const char *URL, - const char *encoding, int options); - -/* - * Iterators - */ -XMLPUBFUN int XMLCALL - xmlTextReaderRead (xmlTextReaderPtr reader); - -#ifdef LIBXML_WRITER_ENABLED -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderReadInnerXml(xmlTextReaderPtr reader); - -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderReadOuterXml(xmlTextReaderPtr reader); -#endif - -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderReadString (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderReadAttributeValue(xmlTextReaderPtr reader); - -/* - * Attributes of the node - */ -XMLPUBFUN int XMLCALL - xmlTextReaderAttributeCount(xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderDepth (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderHasAttributes(xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderHasValue(xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderIsDefault (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderIsEmptyElement(xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderNodeType (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderQuoteChar (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderReadState (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderIsNamespaceDecl(xmlTextReaderPtr reader); - -XMLPUBFUN const xmlChar * XMLCALL - xmlTextReaderConstBaseUri (xmlTextReaderPtr reader); -XMLPUBFUN const xmlChar * XMLCALL - xmlTextReaderConstLocalName (xmlTextReaderPtr reader); -XMLPUBFUN const xmlChar * XMLCALL - xmlTextReaderConstName (xmlTextReaderPtr reader); -XMLPUBFUN const xmlChar * XMLCALL - xmlTextReaderConstNamespaceUri(xmlTextReaderPtr reader); -XMLPUBFUN const xmlChar * XMLCALL - xmlTextReaderConstPrefix (xmlTextReaderPtr reader); -XMLPUBFUN const xmlChar * XMLCALL - xmlTextReaderConstXmlLang (xmlTextReaderPtr reader); -XMLPUBFUN const xmlChar * XMLCALL - xmlTextReaderConstString (xmlTextReaderPtr reader, - const xmlChar *str); -XMLPUBFUN const xmlChar * XMLCALL - xmlTextReaderConstValue (xmlTextReaderPtr reader); - -/* - * use the Const version of the routine for - * better performance and simpler code - */ -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderBaseUri (xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderLocalName (xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderName (xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderNamespaceUri(xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderPrefix (xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderXmlLang (xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderValue (xmlTextReaderPtr reader); - -/* - * Methods of the XmlTextReader - */ -XMLPUBFUN int XMLCALL - xmlTextReaderClose (xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderGetAttributeNo (xmlTextReaderPtr reader, - int no); -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderGetAttribute (xmlTextReaderPtr reader, - const xmlChar *name); -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderGetAttributeNs (xmlTextReaderPtr reader, - const xmlChar *localName, - const xmlChar *namespaceURI); -XMLPUBFUN xmlParserInputBufferPtr XMLCALL - xmlTextReaderGetRemainder (xmlTextReaderPtr reader); -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderLookupNamespace(xmlTextReaderPtr reader, - const xmlChar *prefix); -XMLPUBFUN int XMLCALL - xmlTextReaderMoveToAttributeNo(xmlTextReaderPtr reader, - int no); -XMLPUBFUN int XMLCALL - xmlTextReaderMoveToAttribute(xmlTextReaderPtr reader, - const xmlChar *name); -XMLPUBFUN int XMLCALL - xmlTextReaderMoveToAttributeNs(xmlTextReaderPtr reader, - const xmlChar *localName, - const xmlChar *namespaceURI); -XMLPUBFUN int XMLCALL - xmlTextReaderMoveToFirstAttribute(xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderMoveToNextAttribute(xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderMoveToElement (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderNormalization (xmlTextReaderPtr reader); -XMLPUBFUN const xmlChar * XMLCALL - xmlTextReaderConstEncoding (xmlTextReaderPtr reader); - -/* - * Extensions - */ -XMLPUBFUN int XMLCALL - xmlTextReaderSetParserProp (xmlTextReaderPtr reader, - int prop, - int value); -XMLPUBFUN int XMLCALL - xmlTextReaderGetParserProp (xmlTextReaderPtr reader, - int prop); -XMLPUBFUN xmlNodePtr XMLCALL - xmlTextReaderCurrentNode (xmlTextReaderPtr reader); - -XMLPUBFUN int XMLCALL - xmlTextReaderGetParserLineNumber(xmlTextReaderPtr reader); - -XMLPUBFUN int XMLCALL - xmlTextReaderGetParserColumnNumber(xmlTextReaderPtr reader); - -XMLPUBFUN xmlNodePtr XMLCALL - xmlTextReaderPreserve (xmlTextReaderPtr reader); -#ifdef LIBXML_PATTERN_ENABLED -XMLPUBFUN int XMLCALL - xmlTextReaderPreservePattern(xmlTextReaderPtr reader, - const xmlChar *pattern, - const xmlChar **namespaces); -#endif /* LIBXML_PATTERN_ENABLED */ -XMLPUBFUN xmlDocPtr XMLCALL - xmlTextReaderCurrentDoc (xmlTextReaderPtr reader); -XMLPUBFUN xmlNodePtr XMLCALL - xmlTextReaderExpand (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderNext (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderNextSibling (xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderIsValid (xmlTextReaderPtr reader); -#ifdef LIBXML_SCHEMAS_ENABLED -XMLPUBFUN int XMLCALL - xmlTextReaderRelaxNGValidate(xmlTextReaderPtr reader, - const char *rng); -XMLPUBFUN int XMLCALL - xmlTextReaderRelaxNGValidateCtxt(xmlTextReaderPtr reader, - xmlRelaxNGValidCtxtPtr ctxt, - int options); - -XMLPUBFUN int XMLCALL - xmlTextReaderRelaxNGSetSchema(xmlTextReaderPtr reader, - xmlRelaxNGPtr schema); -XMLPUBFUN int XMLCALL - xmlTextReaderSchemaValidate (xmlTextReaderPtr reader, - const char *xsd); -XMLPUBFUN int XMLCALL - xmlTextReaderSchemaValidateCtxt(xmlTextReaderPtr reader, - xmlSchemaValidCtxtPtr ctxt, - int options); -XMLPUBFUN int XMLCALL - xmlTextReaderSetSchema (xmlTextReaderPtr reader, - xmlSchemaPtr schema); -#endif -XMLPUBFUN const xmlChar * XMLCALL - xmlTextReaderConstXmlVersion(xmlTextReaderPtr reader); -XMLPUBFUN int XMLCALL - xmlTextReaderStandalone (xmlTextReaderPtr reader); - - -/* - * Index lookup - */ -XMLPUBFUN long XMLCALL - xmlTextReaderByteConsumed (xmlTextReaderPtr reader); - -/* - * New more complete APIs for simpler creation and reuse of readers - */ -XMLPUBFUN xmlTextReaderPtr XMLCALL - xmlReaderWalker (xmlDocPtr doc); -XMLPUBFUN xmlTextReaderPtr XMLCALL - xmlReaderForDoc (const xmlChar * cur, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN xmlTextReaderPtr XMLCALL - xmlReaderForFile (const char *filename, - const char *encoding, - int options); -XMLPUBFUN xmlTextReaderPtr XMLCALL - xmlReaderForMemory (const char *buffer, - int size, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN xmlTextReaderPtr XMLCALL - xmlReaderForFd (int fd, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN xmlTextReaderPtr XMLCALL - xmlReaderForIO (xmlInputReadCallback ioread, - xmlInputCloseCallback ioclose, - void *ioctx, - const char *URL, - const char *encoding, - int options); - -XMLPUBFUN int XMLCALL - xmlReaderNewWalker (xmlTextReaderPtr reader, - xmlDocPtr doc); -XMLPUBFUN int XMLCALL - xmlReaderNewDoc (xmlTextReaderPtr reader, - const xmlChar * cur, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN int XMLCALL - xmlReaderNewFile (xmlTextReaderPtr reader, - const char *filename, - const char *encoding, - int options); -XMLPUBFUN int XMLCALL - xmlReaderNewMemory (xmlTextReaderPtr reader, - const char *buffer, - int size, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN int XMLCALL - xmlReaderNewFd (xmlTextReaderPtr reader, - int fd, - const char *URL, - const char *encoding, - int options); -XMLPUBFUN int XMLCALL - xmlReaderNewIO (xmlTextReaderPtr reader, - xmlInputReadCallback ioread, - xmlInputCloseCallback ioclose, - void *ioctx, - const char *URL, - const char *encoding, - int options); -/* - * Error handling extensions - */ -typedef void * xmlTextReaderLocatorPtr; - -/** - * xmlTextReaderErrorFunc: - * @arg: the user argument - * @msg: the message - * @severity: the severity of the error - * @locator: a locator indicating where the error occured - * - * Signature of an error callback from a reader parser - */ -typedef void (XMLCALL *xmlTextReaderErrorFunc)(void *arg, - const char *msg, - xmlParserSeverities severity, - xmlTextReaderLocatorPtr locator); -XMLPUBFUN int XMLCALL - xmlTextReaderLocatorLineNumber(xmlTextReaderLocatorPtr locator); -XMLPUBFUN xmlChar * XMLCALL - xmlTextReaderLocatorBaseURI (xmlTextReaderLocatorPtr locator); -XMLPUBFUN void XMLCALL - xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader, - xmlTextReaderErrorFunc f, - void *arg); -XMLPUBFUN void XMLCALL - xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader, - xmlStructuredErrorFunc f, - void *arg); -XMLPUBFUN void XMLCALL - xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader, - xmlTextReaderErrorFunc *f, - void **arg); - -#endif /* LIBXML_READER_ENABLED */ - -#ifdef __cplusplus -} -#endif - -#endif /* __XML_XMLREADER_H__ */ - diff --git a/cache/include/libxml/xmlregexp.h b/cache/include/libxml/xmlregexp.h deleted file mode 100644 index 7009645..0000000 --- a/cache/include/libxml/xmlregexp.h +++ /dev/null @@ -1,222 +0,0 @@ -/* - * Summary: regular expressions handling - * Description: basic API for libxml regular expressions handling used - * for XML Schemas and validation. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_REGEXP_H__ -#define __XML_REGEXP_H__ - -#include - -#ifdef LIBXML_REGEXP_ENABLED - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * xmlRegexpPtr: - * - * A libxml regular expression, they can actually be far more complex - * thank the POSIX regex expressions. - */ -typedef struct _xmlRegexp xmlRegexp; -typedef xmlRegexp *xmlRegexpPtr; - -/** - * xmlRegExecCtxtPtr: - * - * A libxml progressive regular expression evaluation context - */ -typedef struct _xmlRegExecCtxt xmlRegExecCtxt; -typedef xmlRegExecCtxt *xmlRegExecCtxtPtr; - -#ifdef __cplusplus -} -#endif -#include -#include -#ifdef __cplusplus -extern "C" { -#endif - -/* - * The POSIX like API - */ -XMLPUBFUN xmlRegexpPtr XMLCALL - xmlRegexpCompile (const xmlChar *regexp); -XMLPUBFUN void XMLCALL xmlRegFreeRegexp(xmlRegexpPtr regexp); -XMLPUBFUN int XMLCALL - xmlRegexpExec (xmlRegexpPtr comp, - const xmlChar *value); -XMLPUBFUN void XMLCALL - xmlRegexpPrint (FILE *output, - xmlRegexpPtr regexp); -XMLPUBFUN int XMLCALL - xmlRegexpIsDeterminist(xmlRegexpPtr comp); - -/** - * xmlRegExecCallbacks: - * @exec: the regular expression context - * @token: the current token string - * @transdata: transition data - * @inputdata: input data - * - * Callback function when doing a transition in the automata - */ -typedef void (*xmlRegExecCallbacks) (xmlRegExecCtxtPtr exec, - const xmlChar *token, - void *transdata, - void *inputdata); - -/* - * The progressive API - */ -XMLPUBFUN xmlRegExecCtxtPtr XMLCALL - xmlRegNewExecCtxt (xmlRegexpPtr comp, - xmlRegExecCallbacks callback, - void *data); -XMLPUBFUN void XMLCALL - xmlRegFreeExecCtxt (xmlRegExecCtxtPtr exec); -XMLPUBFUN int XMLCALL - xmlRegExecPushString(xmlRegExecCtxtPtr exec, - const xmlChar *value, - void *data); -XMLPUBFUN int XMLCALL - xmlRegExecPushString2(xmlRegExecCtxtPtr exec, - const xmlChar *value, - const xmlChar *value2, - void *data); - -XMLPUBFUN int XMLCALL - xmlRegExecNextValues(xmlRegExecCtxtPtr exec, - int *nbval, - int *nbneg, - xmlChar **values, - int *terminal); -XMLPUBFUN int XMLCALL - xmlRegExecErrInfo (xmlRegExecCtxtPtr exec, - const xmlChar **string, - int *nbval, - int *nbneg, - xmlChar **values, - int *terminal); -#ifdef LIBXML_EXPR_ENABLED -/* - * Formal regular expression handling - * Its goal is to do some formal work on content models - */ - -/* expressions are used within a context */ -typedef struct _xmlExpCtxt xmlExpCtxt; -typedef xmlExpCtxt *xmlExpCtxtPtr; - -XMLPUBFUN void XMLCALL - xmlExpFreeCtxt (xmlExpCtxtPtr ctxt); -XMLPUBFUN xmlExpCtxtPtr XMLCALL - xmlExpNewCtxt (int maxNodes, - xmlDictPtr dict); - -XMLPUBFUN int XMLCALL - xmlExpCtxtNbNodes(xmlExpCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlExpCtxtNbCons(xmlExpCtxtPtr ctxt); - -/* Expressions are trees but the tree is opaque */ -typedef struct _xmlExpNode xmlExpNode; -typedef xmlExpNode *xmlExpNodePtr; - -typedef enum { - XML_EXP_EMPTY = 0, - XML_EXP_FORBID = 1, - XML_EXP_ATOM = 2, - XML_EXP_SEQ = 3, - XML_EXP_OR = 4, - XML_EXP_COUNT = 5 -} xmlExpNodeType; - -/* - * 2 core expressions shared by all for the empty language set - * and for the set with just the empty token - */ -XMLPUBVAR xmlExpNodePtr forbiddenExp; -XMLPUBVAR xmlExpNodePtr emptyExp; - -/* - * Expressions are reference counted internally - */ -XMLPUBFUN void XMLCALL - xmlExpFree (xmlExpCtxtPtr ctxt, - xmlExpNodePtr expr); -XMLPUBFUN void XMLCALL - xmlExpRef (xmlExpNodePtr expr); - -/* - * constructors can be either manual or from a string - */ -XMLPUBFUN xmlExpNodePtr XMLCALL - xmlExpParse (xmlExpCtxtPtr ctxt, - const char *expr); -XMLPUBFUN xmlExpNodePtr XMLCALL - xmlExpNewAtom (xmlExpCtxtPtr ctxt, - const xmlChar *name, - int len); -XMLPUBFUN xmlExpNodePtr XMLCALL - xmlExpNewOr (xmlExpCtxtPtr ctxt, - xmlExpNodePtr left, - xmlExpNodePtr right); -XMLPUBFUN xmlExpNodePtr XMLCALL - xmlExpNewSeq (xmlExpCtxtPtr ctxt, - xmlExpNodePtr left, - xmlExpNodePtr right); -XMLPUBFUN xmlExpNodePtr XMLCALL - xmlExpNewRange (xmlExpCtxtPtr ctxt, - xmlExpNodePtr subset, - int min, - int max); -/* - * The really interesting APIs - */ -XMLPUBFUN int XMLCALL - xmlExpIsNillable(xmlExpNodePtr expr); -XMLPUBFUN int XMLCALL - xmlExpMaxToken (xmlExpNodePtr expr); -XMLPUBFUN int XMLCALL - xmlExpGetLanguage(xmlExpCtxtPtr ctxt, - xmlExpNodePtr expr, - const xmlChar**langList, - int len); -XMLPUBFUN int XMLCALL - xmlExpGetStart (xmlExpCtxtPtr ctxt, - xmlExpNodePtr expr, - const xmlChar**tokList, - int len); -XMLPUBFUN xmlExpNodePtr XMLCALL - xmlExpStringDerive(xmlExpCtxtPtr ctxt, - xmlExpNodePtr expr, - const xmlChar *str, - int len); -XMLPUBFUN xmlExpNodePtr XMLCALL - xmlExpExpDerive (xmlExpCtxtPtr ctxt, - xmlExpNodePtr expr, - xmlExpNodePtr sub); -XMLPUBFUN int XMLCALL - xmlExpSubsume (xmlExpCtxtPtr ctxt, - xmlExpNodePtr expr, - xmlExpNodePtr sub); -XMLPUBFUN void XMLCALL - xmlExpDump (xmlBufferPtr buf, - xmlExpNodePtr expr); -#endif /* LIBXML_EXPR_ENABLED */ -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_REGEXP_ENABLED */ - -#endif /*__XML_REGEXP_H__ */ diff --git a/cache/include/libxml/xmlsave.h b/cache/include/libxml/xmlsave.h deleted file mode 100644 index fb329b2..0000000 --- a/cache/include/libxml/xmlsave.h +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Summary: the XML document serializer - * Description: API to save document or subtree of document - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_XMLSAVE_H__ -#define __XML_XMLSAVE_H__ - -#include -#include -#include -#include - -#ifdef LIBXML_OUTPUT_ENABLED -#ifdef __cplusplus -extern "C" { -#endif - -/** - * xmlSaveOption: - * - * This is the set of XML save options that can be passed down - * to the xmlSaveToFd() and similar calls. - */ -typedef enum { - XML_SAVE_FORMAT = 1<<0, /* format save output */ - XML_SAVE_NO_DECL = 1<<1, /* drop the xml declaration */ - XML_SAVE_NO_EMPTY = 1<<2, /* no empty tags */ - XML_SAVE_NO_XHTML = 1<<3, /* disable XHTML1 specific rules */ - XML_SAVE_XHTML = 1<<4, /* force XHTML1 specific rules */ - XML_SAVE_AS_XML = 1<<5, /* force XML serialization on HTML doc */ - XML_SAVE_AS_HTML = 1<<6, /* force HTML serialization on XML doc */ - XML_SAVE_WSNONSIG = 1<<7 /* format with non-significant whitespace */ -} xmlSaveOption; - - -typedef struct _xmlSaveCtxt xmlSaveCtxt; -typedef xmlSaveCtxt *xmlSaveCtxtPtr; - -XMLPUBFUN xmlSaveCtxtPtr XMLCALL - xmlSaveToFd (int fd, - const char *encoding, - int options); -XMLPUBFUN xmlSaveCtxtPtr XMLCALL - xmlSaveToFilename (const char *filename, - const char *encoding, - int options); - -XMLPUBFUN xmlSaveCtxtPtr XMLCALL - xmlSaveToBuffer (xmlBufferPtr buffer, - const char *encoding, - int options); - -XMLPUBFUN xmlSaveCtxtPtr XMLCALL - xmlSaveToIO (xmlOutputWriteCallback iowrite, - xmlOutputCloseCallback ioclose, - void *ioctx, - const char *encoding, - int options); - -XMLPUBFUN long XMLCALL - xmlSaveDoc (xmlSaveCtxtPtr ctxt, - xmlDocPtr doc); -XMLPUBFUN long XMLCALL - xmlSaveTree (xmlSaveCtxtPtr ctxt, - xmlNodePtr node); - -XMLPUBFUN int XMLCALL - xmlSaveFlush (xmlSaveCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlSaveClose (xmlSaveCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlSaveSetEscape (xmlSaveCtxtPtr ctxt, - xmlCharEncodingOutputFunc escape); -XMLPUBFUN int XMLCALL - xmlSaveSetAttrEscape (xmlSaveCtxtPtr ctxt, - xmlCharEncodingOutputFunc escape); -#ifdef __cplusplus -} -#endif -#endif /* LIBXML_OUTPUT_ENABLED */ -#endif /* __XML_XMLSAVE_H__ */ - - diff --git a/cache/include/libxml/xmlschemas.h b/cache/include/libxml/xmlschemas.h deleted file mode 100644 index 97930c7..0000000 --- a/cache/include/libxml/xmlschemas.h +++ /dev/null @@ -1,246 +0,0 @@ -/* - * Summary: incomplete XML Schemas structure implementation - * Description: interface to the XML Schemas handling and schema validity - * checking, it is incomplete right now. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - - -#ifndef __XML_SCHEMA_H__ -#define __XML_SCHEMA_H__ - -#include - -#ifdef LIBXML_SCHEMAS_ENABLED - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * This error codes are obsolete; not used any more. - */ -typedef enum { - XML_SCHEMAS_ERR_OK = 0, - XML_SCHEMAS_ERR_NOROOT = 1, - XML_SCHEMAS_ERR_UNDECLAREDELEM, - XML_SCHEMAS_ERR_NOTTOPLEVEL, - XML_SCHEMAS_ERR_MISSING, - XML_SCHEMAS_ERR_WRONGELEM, - XML_SCHEMAS_ERR_NOTYPE, - XML_SCHEMAS_ERR_NOROLLBACK, - XML_SCHEMAS_ERR_ISABSTRACT, - XML_SCHEMAS_ERR_NOTEMPTY, - XML_SCHEMAS_ERR_ELEMCONT, - XML_SCHEMAS_ERR_HAVEDEFAULT, - XML_SCHEMAS_ERR_NOTNILLABLE, - XML_SCHEMAS_ERR_EXTRACONTENT, - XML_SCHEMAS_ERR_INVALIDATTR, - XML_SCHEMAS_ERR_INVALIDELEM, - XML_SCHEMAS_ERR_NOTDETERMINIST, - XML_SCHEMAS_ERR_CONSTRUCT, - XML_SCHEMAS_ERR_INTERNAL, - XML_SCHEMAS_ERR_NOTSIMPLE, - XML_SCHEMAS_ERR_ATTRUNKNOWN, - XML_SCHEMAS_ERR_ATTRINVALID, - XML_SCHEMAS_ERR_VALUE, - XML_SCHEMAS_ERR_FACET, - XML_SCHEMAS_ERR_, - XML_SCHEMAS_ERR_XXX -} xmlSchemaValidError; - -/* -* ATTENTION: Change xmlSchemaSetValidOptions's check -* for invalid values, if adding to the validation -* options below. -*/ -/** - * xmlSchemaValidOption: - * - * This is the set of XML Schema validation options. - */ -typedef enum { - XML_SCHEMA_VAL_VC_I_CREATE = 1<<0 - /* Default/fixed: create an attribute node - * or an element's text node on the instance. - */ -} xmlSchemaValidOption; - -/* - XML_SCHEMA_VAL_XSI_ASSEMBLE = 1<<1, - * assemble schemata using - * xsi:schemaLocation and - * xsi:noNamespaceSchemaLocation -*/ - -/** - * The schemas related types are kept internal - */ -typedef struct _xmlSchema xmlSchema; -typedef xmlSchema *xmlSchemaPtr; - -/** - * xmlSchemaValidityErrorFunc: - * @ctx: the validation context - * @msg: the message - * @...: extra arguments - * - * Signature of an error callback from an XSD validation - */ -typedef void (XMLCDECL *xmlSchemaValidityErrorFunc) - (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3); - -/** - * xmlSchemaValidityWarningFunc: - * @ctx: the validation context - * @msg: the message - * @...: extra arguments - * - * Signature of a warning callback from an XSD validation - */ -typedef void (XMLCDECL *xmlSchemaValidityWarningFunc) - (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3); - -/** - * A schemas validation context - */ -typedef struct _xmlSchemaParserCtxt xmlSchemaParserCtxt; -typedef xmlSchemaParserCtxt *xmlSchemaParserCtxtPtr; - -typedef struct _xmlSchemaValidCtxt xmlSchemaValidCtxt; -typedef xmlSchemaValidCtxt *xmlSchemaValidCtxtPtr; - -/** - * xmlSchemaValidityLocatorFunc: - * @ctx: user provided context - * @file: returned file information - * @line: returned line information - * - * A schemas validation locator, a callback called by the validator. - * This is used when file or node informations are not available - * to find out what file and line number are affected - * - * Returns: 0 in case of success and -1 in case of error - */ - -typedef int (XMLCDECL *xmlSchemaValidityLocatorFunc) (void *ctx, - const char **file, unsigned long *line); - -/* - * Interfaces for parsing. - */ -XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL - xmlSchemaNewParserCtxt (const char *URL); -XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL - xmlSchemaNewMemParserCtxt (const char *buffer, - int size); -XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL - xmlSchemaNewDocParserCtxt (xmlDocPtr doc); -XMLPUBFUN void XMLCALL - xmlSchemaFreeParserCtxt (xmlSchemaParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlSchemaSetParserErrors (xmlSchemaParserCtxtPtr ctxt, - xmlSchemaValidityErrorFunc err, - xmlSchemaValidityWarningFunc warn, - void *ctx); -XMLPUBFUN void XMLCALL - xmlSchemaSetParserStructuredErrors(xmlSchemaParserCtxtPtr ctxt, - xmlStructuredErrorFunc serror, - void *ctx); -XMLPUBFUN int XMLCALL - xmlSchemaGetParserErrors(xmlSchemaParserCtxtPtr ctxt, - xmlSchemaValidityErrorFunc * err, - xmlSchemaValidityWarningFunc * warn, - void **ctx); -XMLPUBFUN int XMLCALL - xmlSchemaIsValid (xmlSchemaValidCtxtPtr ctxt); - -XMLPUBFUN xmlSchemaPtr XMLCALL - xmlSchemaParse (xmlSchemaParserCtxtPtr ctxt); -XMLPUBFUN void XMLCALL - xmlSchemaFree (xmlSchemaPtr schema); -#ifdef LIBXML_OUTPUT_ENABLED -XMLPUBFUN void XMLCALL - xmlSchemaDump (FILE *output, - xmlSchemaPtr schema); -#endif /* LIBXML_OUTPUT_ENABLED */ -/* - * Interfaces for validating - */ -XMLPUBFUN void XMLCALL - xmlSchemaSetValidErrors (xmlSchemaValidCtxtPtr ctxt, - xmlSchemaValidityErrorFunc err, - xmlSchemaValidityWarningFunc warn, - void *ctx); -XMLPUBFUN void XMLCALL - xmlSchemaSetValidStructuredErrors(xmlSchemaValidCtxtPtr ctxt, - xmlStructuredErrorFunc serror, - void *ctx); -XMLPUBFUN int XMLCALL - xmlSchemaGetValidErrors (xmlSchemaValidCtxtPtr ctxt, - xmlSchemaValidityErrorFunc *err, - xmlSchemaValidityWarningFunc *warn, - void **ctx); -XMLPUBFUN int XMLCALL - xmlSchemaSetValidOptions (xmlSchemaValidCtxtPtr ctxt, - int options); -XMLPUBFUN void XMLCALL - xmlSchemaValidateSetFilename(xmlSchemaValidCtxtPtr vctxt, - const char *filename); -XMLPUBFUN int XMLCALL - xmlSchemaValidCtxtGetOptions(xmlSchemaValidCtxtPtr ctxt); - -XMLPUBFUN xmlSchemaValidCtxtPtr XMLCALL - xmlSchemaNewValidCtxt (xmlSchemaPtr schema); -XMLPUBFUN void XMLCALL - xmlSchemaFreeValidCtxt (xmlSchemaValidCtxtPtr ctxt); -XMLPUBFUN int XMLCALL - xmlSchemaValidateDoc (xmlSchemaValidCtxtPtr ctxt, - xmlDocPtr instance); -XMLPUBFUN int XMLCALL - xmlSchemaValidateOneElement (xmlSchemaValidCtxtPtr ctxt, - xmlNodePtr elem); -XMLPUBFUN int XMLCALL - xmlSchemaValidateStream (xmlSchemaValidCtxtPtr ctxt, - xmlParserInputBufferPtr input, - xmlCharEncoding enc, - xmlSAXHandlerPtr sax, - void *user_data); -XMLPUBFUN int XMLCALL - xmlSchemaValidateFile (xmlSchemaValidCtxtPtr ctxt, - const char * filename, - int options); - -XMLPUBFUN xmlParserCtxtPtr XMLCALL - xmlSchemaValidCtxtGetParserCtxt(xmlSchemaValidCtxtPtr ctxt); - -/* - * Interface to insert Schemas SAX validation in a SAX stream - */ -typedef struct _xmlSchemaSAXPlug xmlSchemaSAXPlugStruct; -typedef xmlSchemaSAXPlugStruct *xmlSchemaSAXPlugPtr; - -XMLPUBFUN xmlSchemaSAXPlugPtr XMLCALL - xmlSchemaSAXPlug (xmlSchemaValidCtxtPtr ctxt, - xmlSAXHandlerPtr *sax, - void **user_data); -XMLPUBFUN int XMLCALL - xmlSchemaSAXUnplug (xmlSchemaSAXPlugPtr plug); - - -XMLPUBFUN void XMLCALL - xmlSchemaValidateSetLocator (xmlSchemaValidCtxtPtr vctxt, - xmlSchemaValidityLocatorFunc f, - void *ctxt); - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_SCHEMAS_ENABLED */ -#endif /* __XML_SCHEMA_H__ */ diff --git a/cache/include/libxml/xmlschemastypes.h b/cache/include/libxml/xmlschemastypes.h deleted file mode 100644 index 35d48d4..0000000 --- a/cache/include/libxml/xmlschemastypes.h +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Summary: implementation of XML Schema Datatypes - * Description: module providing the XML Schema Datatypes implementation - * both definition and validity checking - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - - -#ifndef __XML_SCHEMA_TYPES_H__ -#define __XML_SCHEMA_TYPES_H__ - -#include - -#ifdef LIBXML_SCHEMAS_ENABLED - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - XML_SCHEMA_WHITESPACE_UNKNOWN = 0, - XML_SCHEMA_WHITESPACE_PRESERVE = 1, - XML_SCHEMA_WHITESPACE_REPLACE = 2, - XML_SCHEMA_WHITESPACE_COLLAPSE = 3 -} xmlSchemaWhitespaceValueType; - -XMLPUBFUN void XMLCALL - xmlSchemaInitTypes (void); -XMLPUBFUN void XMLCALL - xmlSchemaCleanupTypes (void); -XMLPUBFUN xmlSchemaTypePtr XMLCALL - xmlSchemaGetPredefinedType (const xmlChar *name, - const xmlChar *ns); -XMLPUBFUN int XMLCALL - xmlSchemaValidatePredefinedType (xmlSchemaTypePtr type, - const xmlChar *value, - xmlSchemaValPtr *val); -XMLPUBFUN int XMLCALL - xmlSchemaValPredefTypeNode (xmlSchemaTypePtr type, - const xmlChar *value, - xmlSchemaValPtr *val, - xmlNodePtr node); -XMLPUBFUN int XMLCALL - xmlSchemaValidateFacet (xmlSchemaTypePtr base, - xmlSchemaFacetPtr facet, - const xmlChar *value, - xmlSchemaValPtr val); -XMLPUBFUN int XMLCALL - xmlSchemaValidateFacetWhtsp (xmlSchemaFacetPtr facet, - xmlSchemaWhitespaceValueType fws, - xmlSchemaValType valType, - const xmlChar *value, - xmlSchemaValPtr val, - xmlSchemaWhitespaceValueType ws); -XMLPUBFUN void XMLCALL - xmlSchemaFreeValue (xmlSchemaValPtr val); -XMLPUBFUN xmlSchemaFacetPtr XMLCALL - xmlSchemaNewFacet (void); -XMLPUBFUN int XMLCALL - xmlSchemaCheckFacet (xmlSchemaFacetPtr facet, - xmlSchemaTypePtr typeDecl, - xmlSchemaParserCtxtPtr ctxt, - const xmlChar *name); -XMLPUBFUN void XMLCALL - xmlSchemaFreeFacet (xmlSchemaFacetPtr facet); -XMLPUBFUN int XMLCALL - xmlSchemaCompareValues (xmlSchemaValPtr x, - xmlSchemaValPtr y); -XMLPUBFUN xmlSchemaTypePtr XMLCALL - xmlSchemaGetBuiltInListSimpleTypeItemType (xmlSchemaTypePtr type); -XMLPUBFUN int XMLCALL - xmlSchemaValidateListSimpleTypeFacet (xmlSchemaFacetPtr facet, - const xmlChar *value, - unsigned long actualLen, - unsigned long *expectedLen); -XMLPUBFUN xmlSchemaTypePtr XMLCALL - xmlSchemaGetBuiltInType (xmlSchemaValType type); -XMLPUBFUN int XMLCALL - xmlSchemaIsBuiltInTypeFacet (xmlSchemaTypePtr type, - int facetType); -XMLPUBFUN xmlChar * XMLCALL - xmlSchemaCollapseString (const xmlChar *value); -XMLPUBFUN xmlChar * XMLCALL - xmlSchemaWhiteSpaceReplace (const xmlChar *value); -XMLPUBFUN unsigned long XMLCALL - xmlSchemaGetFacetValueAsULong (xmlSchemaFacetPtr facet); -XMLPUBFUN int XMLCALL - xmlSchemaValidateLengthFacet (xmlSchemaTypePtr type, - xmlSchemaFacetPtr facet, - const xmlChar *value, - xmlSchemaValPtr val, - unsigned long *length); -XMLPUBFUN int XMLCALL - xmlSchemaValidateLengthFacetWhtsp(xmlSchemaFacetPtr facet, - xmlSchemaValType valType, - const xmlChar *value, - xmlSchemaValPtr val, - unsigned long *length, - xmlSchemaWhitespaceValueType ws); -XMLPUBFUN int XMLCALL - xmlSchemaValPredefTypeNodeNoNorm(xmlSchemaTypePtr type, - const xmlChar *value, - xmlSchemaValPtr *val, - xmlNodePtr node); -XMLPUBFUN int XMLCALL - xmlSchemaGetCanonValue (xmlSchemaValPtr val, - const xmlChar **retValue); -XMLPUBFUN int XMLCALL - xmlSchemaGetCanonValueWhtsp (xmlSchemaValPtr val, - const xmlChar **retValue, - xmlSchemaWhitespaceValueType ws); -XMLPUBFUN int XMLCALL - xmlSchemaValueAppend (xmlSchemaValPtr prev, - xmlSchemaValPtr cur); -XMLPUBFUN xmlSchemaValPtr XMLCALL - xmlSchemaValueGetNext (xmlSchemaValPtr cur); -XMLPUBFUN const xmlChar * XMLCALL - xmlSchemaValueGetAsString (xmlSchemaValPtr val); -XMLPUBFUN int XMLCALL - xmlSchemaValueGetAsBoolean (xmlSchemaValPtr val); -XMLPUBFUN xmlSchemaValPtr XMLCALL - xmlSchemaNewStringValue (xmlSchemaValType type, - const xmlChar *value); -XMLPUBFUN xmlSchemaValPtr XMLCALL - xmlSchemaNewNOTATIONValue (const xmlChar *name, - const xmlChar *ns); -XMLPUBFUN xmlSchemaValPtr XMLCALL - xmlSchemaNewQNameValue (const xmlChar *namespaceName, - const xmlChar *localName); -XMLPUBFUN int XMLCALL - xmlSchemaCompareValuesWhtsp (xmlSchemaValPtr x, - xmlSchemaWhitespaceValueType xws, - xmlSchemaValPtr y, - xmlSchemaWhitespaceValueType yws); -XMLPUBFUN xmlSchemaValPtr XMLCALL - xmlSchemaCopyValue (xmlSchemaValPtr val); -XMLPUBFUN xmlSchemaValType XMLCALL - xmlSchemaGetValType (xmlSchemaValPtr val); - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_SCHEMAS_ENABLED */ -#endif /* __XML_SCHEMA_TYPES_H__ */ diff --git a/cache/include/libxml/xmlstring.h b/cache/include/libxml/xmlstring.h deleted file mode 100644 index 2036236..0000000 --- a/cache/include/libxml/xmlstring.h +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Summary: set of routines to process strings - * Description: type and interfaces needed for the internal string handling - * of the library, especially UTF8 processing. - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_STRING_H__ -#define __XML_STRING_H__ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * xmlChar: - * - * This is a basic byte in an UTF-8 encoded string. - * It's unsigned allowing to pinpoint case where char * are assigned - * to xmlChar * (possibly making serialization back impossible). - */ -typedef unsigned char xmlChar; - -/** - * BAD_CAST: - * - * Macro to cast a string to an xmlChar * when one know its safe. - */ -#define BAD_CAST (xmlChar *) - -/* - * xmlChar handling - */ -XMLPUBFUN xmlChar * XMLCALL - xmlStrdup (const xmlChar *cur); -XMLPUBFUN xmlChar * XMLCALL - xmlStrndup (const xmlChar *cur, - int len); -XMLPUBFUN xmlChar * XMLCALL - xmlCharStrndup (const char *cur, - int len); -XMLPUBFUN xmlChar * XMLCALL - xmlCharStrdup (const char *cur); -XMLPUBFUN xmlChar * XMLCALL - xmlStrsub (const xmlChar *str, - int start, - int len); -XMLPUBFUN const xmlChar * XMLCALL - xmlStrchr (const xmlChar *str, - xmlChar val); -XMLPUBFUN const xmlChar * XMLCALL - xmlStrstr (const xmlChar *str, - const xmlChar *val); -XMLPUBFUN const xmlChar * XMLCALL - xmlStrcasestr (const xmlChar *str, - const xmlChar *val); -XMLPUBFUN int XMLCALL - xmlStrcmp (const xmlChar *str1, - const xmlChar *str2); -XMLPUBFUN int XMLCALL - xmlStrncmp (const xmlChar *str1, - const xmlChar *str2, - int len); -XMLPUBFUN int XMLCALL - xmlStrcasecmp (const xmlChar *str1, - const xmlChar *str2); -XMLPUBFUN int XMLCALL - xmlStrncasecmp (const xmlChar *str1, - const xmlChar *str2, - int len); -XMLPUBFUN int XMLCALL - xmlStrEqual (const xmlChar *str1, - const xmlChar *str2); -XMLPUBFUN int XMLCALL - xmlStrQEqual (const xmlChar *pref, - const xmlChar *name, - const xmlChar *str); -XMLPUBFUN int XMLCALL - xmlStrlen (const xmlChar *str); -XMLPUBFUN xmlChar * XMLCALL - xmlStrcat (xmlChar *cur, - const xmlChar *add); -XMLPUBFUN xmlChar * XMLCALL - xmlStrncat (xmlChar *cur, - const xmlChar *add, - int len); -XMLPUBFUN xmlChar * XMLCALL - xmlStrncatNew (const xmlChar *str1, - const xmlChar *str2, - int len); -XMLPUBFUN int XMLCALL - xmlStrPrintf (xmlChar *buf, - int len, - const xmlChar *msg, - ...); -XMLPUBFUN int XMLCALL - xmlStrVPrintf (xmlChar *buf, - int len, - const xmlChar *msg, - va_list ap); - -XMLPUBFUN int XMLCALL - xmlGetUTF8Char (const unsigned char *utf, - int *len); -XMLPUBFUN int XMLCALL - xmlCheckUTF8 (const unsigned char *utf); -XMLPUBFUN int XMLCALL - xmlUTF8Strsize (const xmlChar *utf, - int len); -XMLPUBFUN xmlChar * XMLCALL - xmlUTF8Strndup (const xmlChar *utf, - int len); -XMLPUBFUN const xmlChar * XMLCALL - xmlUTF8Strpos (const xmlChar *utf, - int pos); -XMLPUBFUN int XMLCALL - xmlUTF8Strloc (const xmlChar *utf, - const xmlChar *utfchar); -XMLPUBFUN xmlChar * XMLCALL - xmlUTF8Strsub (const xmlChar *utf, - int start, - int len); -XMLPUBFUN int XMLCALL - xmlUTF8Strlen (const xmlChar *utf); -XMLPUBFUN int XMLCALL - xmlUTF8Size (const xmlChar *utf); -XMLPUBFUN int XMLCALL - xmlUTF8Charcmp (const xmlChar *utf1, - const xmlChar *utf2); - -#ifdef __cplusplus -} -#endif -#endif /* __XML_STRING_H__ */ diff --git a/cache/include/libxml/xmlunicode.h b/cache/include/libxml/xmlunicode.h deleted file mode 100644 index 01ac8b6..0000000 --- a/cache/include/libxml/xmlunicode.h +++ /dev/null @@ -1,202 +0,0 @@ -/* - * Summary: Unicode character APIs - * Description: API for the Unicode character APIs - * - * This file is automatically generated from the - * UCS description files of the Unicode Character Database - * http://www.unicode.org/Public/4.0-Update1/UCD-4.0.1.html - * using the genUnicode.py Python script. - * - * Generation date: Mon Mar 27 11:09:52 2006 - * Sources: Blocks-4.0.1.txt UnicodeData-4.0.1.txt - * Author: Daniel Veillard - */ - -#ifndef __XML_UNICODE_H__ -#define __XML_UNICODE_H__ - -#include - -#ifdef LIBXML_UNICODE_ENABLED - -#ifdef __cplusplus -extern "C" { -#endif - -XMLPUBFUN int XMLCALL xmlUCSIsAegeanNumbers (int code); -XMLPUBFUN int XMLCALL xmlUCSIsAlphabeticPresentationForms (int code); -XMLPUBFUN int XMLCALL xmlUCSIsArabic (int code); -XMLPUBFUN int XMLCALL xmlUCSIsArabicPresentationFormsA (int code); -XMLPUBFUN int XMLCALL xmlUCSIsArabicPresentationFormsB (int code); -XMLPUBFUN int XMLCALL xmlUCSIsArmenian (int code); -XMLPUBFUN int XMLCALL xmlUCSIsArrows (int code); -XMLPUBFUN int XMLCALL xmlUCSIsBasicLatin (int code); -XMLPUBFUN int XMLCALL xmlUCSIsBengali (int code); -XMLPUBFUN int XMLCALL xmlUCSIsBlockElements (int code); -XMLPUBFUN int XMLCALL xmlUCSIsBopomofo (int code); -XMLPUBFUN int XMLCALL xmlUCSIsBopomofoExtended (int code); -XMLPUBFUN int XMLCALL xmlUCSIsBoxDrawing (int code); -XMLPUBFUN int XMLCALL xmlUCSIsBraillePatterns (int code); -XMLPUBFUN int XMLCALL xmlUCSIsBuhid (int code); -XMLPUBFUN int XMLCALL xmlUCSIsByzantineMusicalSymbols (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCJKCompatibility (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCJKCompatibilityForms (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCJKCompatibilityIdeographs (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCJKCompatibilityIdeographsSupplement (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCJKRadicalsSupplement (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCJKSymbolsandPunctuation (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCJKUnifiedIdeographs (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCJKUnifiedIdeographsExtensionA (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCJKUnifiedIdeographsExtensionB (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCherokee (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCombiningDiacriticalMarks (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCombiningDiacriticalMarksforSymbols (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCombiningHalfMarks (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCombiningMarksforSymbols (int code); -XMLPUBFUN int XMLCALL xmlUCSIsControlPictures (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCurrencySymbols (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCypriotSyllabary (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCyrillic (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCyrillicSupplement (int code); -XMLPUBFUN int XMLCALL xmlUCSIsDeseret (int code); -XMLPUBFUN int XMLCALL xmlUCSIsDevanagari (int code); -XMLPUBFUN int XMLCALL xmlUCSIsDingbats (int code); -XMLPUBFUN int XMLCALL xmlUCSIsEnclosedAlphanumerics (int code); -XMLPUBFUN int XMLCALL xmlUCSIsEnclosedCJKLettersandMonths (int code); -XMLPUBFUN int XMLCALL xmlUCSIsEthiopic (int code); -XMLPUBFUN int XMLCALL xmlUCSIsGeneralPunctuation (int code); -XMLPUBFUN int XMLCALL xmlUCSIsGeometricShapes (int code); -XMLPUBFUN int XMLCALL xmlUCSIsGeorgian (int code); -XMLPUBFUN int XMLCALL xmlUCSIsGothic (int code); -XMLPUBFUN int XMLCALL xmlUCSIsGreek (int code); -XMLPUBFUN int XMLCALL xmlUCSIsGreekExtended (int code); -XMLPUBFUN int XMLCALL xmlUCSIsGreekandCoptic (int code); -XMLPUBFUN int XMLCALL xmlUCSIsGujarati (int code); -XMLPUBFUN int XMLCALL xmlUCSIsGurmukhi (int code); -XMLPUBFUN int XMLCALL xmlUCSIsHalfwidthandFullwidthForms (int code); -XMLPUBFUN int XMLCALL xmlUCSIsHangulCompatibilityJamo (int code); -XMLPUBFUN int XMLCALL xmlUCSIsHangulJamo (int code); -XMLPUBFUN int XMLCALL xmlUCSIsHangulSyllables (int code); -XMLPUBFUN int XMLCALL xmlUCSIsHanunoo (int code); -XMLPUBFUN int XMLCALL xmlUCSIsHebrew (int code); -XMLPUBFUN int XMLCALL xmlUCSIsHighPrivateUseSurrogates (int code); -XMLPUBFUN int XMLCALL xmlUCSIsHighSurrogates (int code); -XMLPUBFUN int XMLCALL xmlUCSIsHiragana (int code); -XMLPUBFUN int XMLCALL xmlUCSIsIPAExtensions (int code); -XMLPUBFUN int XMLCALL xmlUCSIsIdeographicDescriptionCharacters (int code); -XMLPUBFUN int XMLCALL xmlUCSIsKanbun (int code); -XMLPUBFUN int XMLCALL xmlUCSIsKangxiRadicals (int code); -XMLPUBFUN int XMLCALL xmlUCSIsKannada (int code); -XMLPUBFUN int XMLCALL xmlUCSIsKatakana (int code); -XMLPUBFUN int XMLCALL xmlUCSIsKatakanaPhoneticExtensions (int code); -XMLPUBFUN int XMLCALL xmlUCSIsKhmer (int code); -XMLPUBFUN int XMLCALL xmlUCSIsKhmerSymbols (int code); -XMLPUBFUN int XMLCALL xmlUCSIsLao (int code); -XMLPUBFUN int XMLCALL xmlUCSIsLatin1Supplement (int code); -XMLPUBFUN int XMLCALL xmlUCSIsLatinExtendedA (int code); -XMLPUBFUN int XMLCALL xmlUCSIsLatinExtendedB (int code); -XMLPUBFUN int XMLCALL xmlUCSIsLatinExtendedAdditional (int code); -XMLPUBFUN int XMLCALL xmlUCSIsLetterlikeSymbols (int code); -XMLPUBFUN int XMLCALL xmlUCSIsLimbu (int code); -XMLPUBFUN int XMLCALL xmlUCSIsLinearBIdeograms (int code); -XMLPUBFUN int XMLCALL xmlUCSIsLinearBSyllabary (int code); -XMLPUBFUN int XMLCALL xmlUCSIsLowSurrogates (int code); -XMLPUBFUN int XMLCALL xmlUCSIsMalayalam (int code); -XMLPUBFUN int XMLCALL xmlUCSIsMathematicalAlphanumericSymbols (int code); -XMLPUBFUN int XMLCALL xmlUCSIsMathematicalOperators (int code); -XMLPUBFUN int XMLCALL xmlUCSIsMiscellaneousMathematicalSymbolsA (int code); -XMLPUBFUN int XMLCALL xmlUCSIsMiscellaneousMathematicalSymbolsB (int code); -XMLPUBFUN int XMLCALL xmlUCSIsMiscellaneousSymbols (int code); -XMLPUBFUN int XMLCALL xmlUCSIsMiscellaneousSymbolsandArrows (int code); -XMLPUBFUN int XMLCALL xmlUCSIsMiscellaneousTechnical (int code); -XMLPUBFUN int XMLCALL xmlUCSIsMongolian (int code); -XMLPUBFUN int XMLCALL xmlUCSIsMusicalSymbols (int code); -XMLPUBFUN int XMLCALL xmlUCSIsMyanmar (int code); -XMLPUBFUN int XMLCALL xmlUCSIsNumberForms (int code); -XMLPUBFUN int XMLCALL xmlUCSIsOgham (int code); -XMLPUBFUN int XMLCALL xmlUCSIsOldItalic (int code); -XMLPUBFUN int XMLCALL xmlUCSIsOpticalCharacterRecognition (int code); -XMLPUBFUN int XMLCALL xmlUCSIsOriya (int code); -XMLPUBFUN int XMLCALL xmlUCSIsOsmanya (int code); -XMLPUBFUN int XMLCALL xmlUCSIsPhoneticExtensions (int code); -XMLPUBFUN int XMLCALL xmlUCSIsPrivateUse (int code); -XMLPUBFUN int XMLCALL xmlUCSIsPrivateUseArea (int code); -XMLPUBFUN int XMLCALL xmlUCSIsRunic (int code); -XMLPUBFUN int XMLCALL xmlUCSIsShavian (int code); -XMLPUBFUN int XMLCALL xmlUCSIsSinhala (int code); -XMLPUBFUN int XMLCALL xmlUCSIsSmallFormVariants (int code); -XMLPUBFUN int XMLCALL xmlUCSIsSpacingModifierLetters (int code); -XMLPUBFUN int XMLCALL xmlUCSIsSpecials (int code); -XMLPUBFUN int XMLCALL xmlUCSIsSuperscriptsandSubscripts (int code); -XMLPUBFUN int XMLCALL xmlUCSIsSupplementalArrowsA (int code); -XMLPUBFUN int XMLCALL xmlUCSIsSupplementalArrowsB (int code); -XMLPUBFUN int XMLCALL xmlUCSIsSupplementalMathematicalOperators (int code); -XMLPUBFUN int XMLCALL xmlUCSIsSupplementaryPrivateUseAreaA (int code); -XMLPUBFUN int XMLCALL xmlUCSIsSupplementaryPrivateUseAreaB (int code); -XMLPUBFUN int XMLCALL xmlUCSIsSyriac (int code); -XMLPUBFUN int XMLCALL xmlUCSIsTagalog (int code); -XMLPUBFUN int XMLCALL xmlUCSIsTagbanwa (int code); -XMLPUBFUN int XMLCALL xmlUCSIsTags (int code); -XMLPUBFUN int XMLCALL xmlUCSIsTaiLe (int code); -XMLPUBFUN int XMLCALL xmlUCSIsTaiXuanJingSymbols (int code); -XMLPUBFUN int XMLCALL xmlUCSIsTamil (int code); -XMLPUBFUN int XMLCALL xmlUCSIsTelugu (int code); -XMLPUBFUN int XMLCALL xmlUCSIsThaana (int code); -XMLPUBFUN int XMLCALL xmlUCSIsThai (int code); -XMLPUBFUN int XMLCALL xmlUCSIsTibetan (int code); -XMLPUBFUN int XMLCALL xmlUCSIsUgaritic (int code); -XMLPUBFUN int XMLCALL xmlUCSIsUnifiedCanadianAboriginalSyllabics (int code); -XMLPUBFUN int XMLCALL xmlUCSIsVariationSelectors (int code); -XMLPUBFUN int XMLCALL xmlUCSIsVariationSelectorsSupplement (int code); -XMLPUBFUN int XMLCALL xmlUCSIsYiRadicals (int code); -XMLPUBFUN int XMLCALL xmlUCSIsYiSyllables (int code); -XMLPUBFUN int XMLCALL xmlUCSIsYijingHexagramSymbols (int code); - -XMLPUBFUN int XMLCALL xmlUCSIsBlock (int code, const char *block); - -XMLPUBFUN int XMLCALL xmlUCSIsCatC (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatCc (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatCf (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatCo (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatCs (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatL (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatLl (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatLm (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatLo (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatLt (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatLu (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatM (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatMc (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatMe (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatMn (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatN (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatNd (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatNl (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatNo (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatP (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatPc (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatPd (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatPe (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatPf (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatPi (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatPo (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatPs (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatS (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatSc (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatSk (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatSm (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatSo (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatZ (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatZl (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatZp (int code); -XMLPUBFUN int XMLCALL xmlUCSIsCatZs (int code); - -XMLPUBFUN int XMLCALL xmlUCSIsCat (int code, const char *cat); - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_UNICODE_ENABLED */ - -#endif /* __XML_UNICODE_H__ */ diff --git a/cache/include/libxml/xmlversion.h b/cache/include/libxml/xmlversion.h deleted file mode 100644 index 661e864..0000000 --- a/cache/include/libxml/xmlversion.h +++ /dev/null @@ -1,489 +0,0 @@ -/* - * Summary: compile-time version informations - * Description: compile-time version informations for the XML library - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_VERSION_H__ -#define __XML_VERSION_H__ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * use those to be sure nothing nasty will happen if - * your library and includes mismatch - */ -#ifndef LIBXML2_COMPILING_MSCCDEF -XMLPUBFUN void XMLCALL xmlCheckVersion(int version); -#endif /* LIBXML2_COMPILING_MSCCDEF */ - -/** - * LIBXML_DOTTED_VERSION: - * - * the version string like "1.2.3" - */ -#define LIBXML_DOTTED_VERSION "2.9.2" - -/** - * LIBXML_VERSION: - * - * the version number: 1.2.3 value is 10203 - */ -#define LIBXML_VERSION 20902 - -/** - * LIBXML_VERSION_STRING: - * - * the version number string, 1.2.3 value is "10203" - */ -#define LIBXML_VERSION_STRING "20902" - -/** - * LIBXML_VERSION_EXTRA: - * - * extra version information, used to show a CVS compilation - */ -#define LIBXML_VERSION_EXTRA "" - -/** - * LIBXML_TEST_VERSION: - * - * Macro to check that the libxml version in use is compatible with - * the version the software has been compiled against - */ -#define LIBXML_TEST_VERSION xmlCheckVersion(20902); - -#ifndef VMS -#if 0 -/** - * WITH_TRIO: - * - * defined if the trio support need to be configured in - */ -#define WITH_TRIO -#else -/** - * WITHOUT_TRIO: - * - * defined if the trio support should not be configured in - */ -#define WITHOUT_TRIO -#endif -#else /* VMS */ -/** - * WITH_TRIO: - * - * defined if the trio support need to be configured in - */ -#define WITH_TRIO 1 -#endif /* VMS */ - -/** - * LIBXML_THREAD_ENABLED: - * - * Whether the thread support is configured in - */ -#if 1 -#if defined(_REENTRANT) || defined(__MT__) || \ - (defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE - 0 >= 199506L)) -#define LIBXML_THREAD_ENABLED -#endif -#endif - -/** - * LIBXML_THREAD_ALLOC_ENABLED: - * - * Whether the allocation hooks are per-thread - */ -#if 0 -#define LIBXML_THREAD_ALLOC_ENABLED -#endif - -/** - * LIBXML_TREE_ENABLED: - * - * Whether the DOM like tree manipulation API support is configured in - */ -#if 1 -#define LIBXML_TREE_ENABLED -#endif - -/** - * LIBXML_OUTPUT_ENABLED: - * - * Whether the serialization/saving support is configured in - */ -#if 1 -#define LIBXML_OUTPUT_ENABLED -#endif - -/** - * LIBXML_PUSH_ENABLED: - * - * Whether the push parsing interfaces are configured in - */ -#if 1 -#define LIBXML_PUSH_ENABLED -#endif - -/** - * LIBXML_READER_ENABLED: - * - * Whether the xmlReader parsing interface is configured in - */ -#if 1 -#define LIBXML_READER_ENABLED -#endif - -/** - * LIBXML_PATTERN_ENABLED: - * - * Whether the xmlPattern node selection interface is configured in - */ -#if 1 -#define LIBXML_PATTERN_ENABLED -#endif - -/** - * LIBXML_WRITER_ENABLED: - * - * Whether the xmlWriter saving interface is configured in - */ -#if 1 -#define LIBXML_WRITER_ENABLED -#endif - -/** - * LIBXML_SAX1_ENABLED: - * - * Whether the older SAX1 interface is configured in - */ -#if 1 -#define LIBXML_SAX1_ENABLED -#endif - -/** - * LIBXML_FTP_ENABLED: - * - * Whether the FTP support is configured in - */ -#if 1 -#define LIBXML_FTP_ENABLED -#endif - -/** - * LIBXML_HTTP_ENABLED: - * - * Whether the HTTP support is configured in - */ -#if 1 -#define LIBXML_HTTP_ENABLED -#endif - -/** - * LIBXML_VALID_ENABLED: - * - * Whether the DTD validation support is configured in - */ -#if 1 -#define LIBXML_VALID_ENABLED -#endif - -/** - * LIBXML_HTML_ENABLED: - * - * Whether the HTML support is configured in - */ -#if 1 -#define LIBXML_HTML_ENABLED -#endif - -/** - * LIBXML_LEGACY_ENABLED: - * - * Whether the deprecated APIs are compiled in for compatibility - */ -#if 1 -#define LIBXML_LEGACY_ENABLED -#endif - -/** - * LIBXML_C14N_ENABLED: - * - * Whether the Canonicalization support is configured in - */ -#if 1 -#define LIBXML_C14N_ENABLED -#endif - -/** - * LIBXML_CATALOG_ENABLED: - * - * Whether the Catalog support is configured in - */ -#if 1 -#define LIBXML_CATALOG_ENABLED -#endif - -/** - * LIBXML_DOCB_ENABLED: - * - * Whether the SGML Docbook support is configured in - */ -#if 1 -#define LIBXML_DOCB_ENABLED -#endif - -/** - * LIBXML_XPATH_ENABLED: - * - * Whether XPath is configured in - */ -#if 1 -#define LIBXML_XPATH_ENABLED -#endif - -/** - * LIBXML_XPTR_ENABLED: - * - * Whether XPointer is configured in - */ -#if 1 -#define LIBXML_XPTR_ENABLED -#endif - -/** - * LIBXML_XINCLUDE_ENABLED: - * - * Whether XInclude is configured in - */ -#if 1 -#define LIBXML_XINCLUDE_ENABLED -#endif - -/** - * LIBXML_ICONV_ENABLED: - * - * Whether iconv support is available - */ -#if 1 -#define LIBXML_ICONV_ENABLED -#endif - -/** - * LIBXML_ICU_ENABLED: - * - * Whether icu support is available - */ -#if 0 -#define LIBXML_ICU_ENABLED -#endif - -/** - * LIBXML_ISO8859X_ENABLED: - * - * Whether ISO-8859-* support is made available in case iconv is not - */ -#if 1 -#define LIBXML_ISO8859X_ENABLED -#endif - -/** - * LIBXML_DEBUG_ENABLED: - * - * Whether Debugging module is configured in - */ -#if 1 -#define LIBXML_DEBUG_ENABLED -#endif - -/** - * DEBUG_MEMORY_LOCATION: - * - * Whether the memory debugging is configured in - */ -#if 0 -#define DEBUG_MEMORY_LOCATION -#endif - -/** - * LIBXML_DEBUG_RUNTIME: - * - * Whether the runtime debugging is configured in - */ -#if 0 -#define LIBXML_DEBUG_RUNTIME -#endif - -/** - * LIBXML_UNICODE_ENABLED: - * - * Whether the Unicode related interfaces are compiled in - */ -#if 1 -#define LIBXML_UNICODE_ENABLED -#endif - -/** - * LIBXML_REGEXP_ENABLED: - * - * Whether the regular expressions interfaces are compiled in - */ -#if 1 -#define LIBXML_REGEXP_ENABLED -#endif - -/** - * LIBXML_AUTOMATA_ENABLED: - * - * Whether the automata interfaces are compiled in - */ -#if 1 -#define LIBXML_AUTOMATA_ENABLED -#endif - -/** - * LIBXML_EXPR_ENABLED: - * - * Whether the formal expressions interfaces are compiled in - */ -#if 1 -#define LIBXML_EXPR_ENABLED -#endif - -/** - * LIBXML_SCHEMAS_ENABLED: - * - * Whether the Schemas validation interfaces are compiled in - */ -#if 1 -#define LIBXML_SCHEMAS_ENABLED -#endif - -/** - * LIBXML_SCHEMATRON_ENABLED: - * - * Whether the Schematron validation interfaces are compiled in - */ -#if 1 -#define LIBXML_SCHEMATRON_ENABLED -#endif - -/** - * LIBXML_MODULES_ENABLED: - * - * Whether the module interfaces are compiled in - */ -#if 1 -#define LIBXML_MODULES_ENABLED -/** - * LIBXML_MODULE_EXTENSION: - * - * the string suffix used by dynamic modules (usually shared libraries) - */ -#define LIBXML_MODULE_EXTENSION ".so" -#endif - -/** - * LIBXML_ZLIB_ENABLED: - * - * Whether the Zlib support is compiled in - */ -#if 1 -#define LIBXML_ZLIB_ENABLED -#endif - -/** - * LIBXML_LZMA_ENABLED: - * - * Whether the Lzma support is compiled in - */ -#if 1 -#define LIBXML_LZMA_ENABLED -#endif - -#ifdef __GNUC__ -#ifdef HAVE_ANSIDECL_H -#include -#endif - -/** - * ATTRIBUTE_UNUSED: - * - * Macro used to signal to GCC unused function parameters - */ - -#ifndef ATTRIBUTE_UNUSED -# if ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 7))) -# define ATTRIBUTE_UNUSED __attribute__((unused)) -# else -# define ATTRIBUTE_UNUSED -# endif -#endif - -/** - * LIBXML_ATTR_ALLOC_SIZE: - * - * Macro used to indicate to GCC this is an allocator function - */ - -#ifndef LIBXML_ATTR_ALLOC_SIZE -# if ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3))) -# define LIBXML_ATTR_ALLOC_SIZE(x) __attribute__((alloc_size(x))) -# else -# define LIBXML_ATTR_ALLOC_SIZE(x) -# endif -#else -# define LIBXML_ATTR_ALLOC_SIZE(x) -#endif - -/** - * LIBXML_ATTR_FORMAT: - * - * Macro used to indicate to GCC the parameter are printf like - */ - -#ifndef LIBXML_ATTR_FORMAT -# if ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3))) -# define LIBXML_ATTR_FORMAT(fmt,args) __attribute__((__format__(__printf__,fmt,args))) -# else -# define LIBXML_ATTR_FORMAT(fmt,args) -# endif -#else -# define LIBXML_ATTR_FORMAT(fmt,args) -#endif - -#else /* ! __GNUC__ */ -/** - * ATTRIBUTE_UNUSED: - * - * Macro used to signal to GCC unused function parameters - */ -#define ATTRIBUTE_UNUSED -/** - * LIBXML_ATTR_ALLOC_SIZE: - * - * Macro used to indicate to GCC this is an allocator function - */ -#define LIBXML_ATTR_ALLOC_SIZE(x) -/** - * LIBXML_ATTR_FORMAT: - * - * Macro used to indicate to GCC the parameter are printf like - */ -#define LIBXML_ATTR_FORMAT(fmt,args) -#endif /* __GNUC__ */ - -#ifdef __cplusplus -} -#endif /* __cplusplus */ -#endif - - diff --git a/cache/include/libxml/xmlwriter.h b/cache/include/libxml/xmlwriter.h deleted file mode 100644 index dd5add3..0000000 --- a/cache/include/libxml/xmlwriter.h +++ /dev/null @@ -1,488 +0,0 @@ -/* - * Summary: text writing API for XML - * Description: text writing API for XML - * - * Copy: See Copyright for the status of this software. - * - * Author: Alfred Mickautsch - */ - -#ifndef __XML_XMLWRITER_H__ -#define __XML_XMLWRITER_H__ - -#include - -#ifdef LIBXML_WRITER_ENABLED - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - - typedef struct _xmlTextWriter xmlTextWriter; - typedef xmlTextWriter *xmlTextWriterPtr; - -/* - * Constructors & Destructor - */ - XMLPUBFUN xmlTextWriterPtr XMLCALL - xmlNewTextWriter(xmlOutputBufferPtr out); - XMLPUBFUN xmlTextWriterPtr XMLCALL - xmlNewTextWriterFilename(const char *uri, int compression); - XMLPUBFUN xmlTextWriterPtr XMLCALL - xmlNewTextWriterMemory(xmlBufferPtr buf, int compression); - XMLPUBFUN xmlTextWriterPtr XMLCALL - xmlNewTextWriterPushParser(xmlParserCtxtPtr ctxt, int compression); - XMLPUBFUN xmlTextWriterPtr XMLCALL - xmlNewTextWriterDoc(xmlDocPtr * doc, int compression); - XMLPUBFUN xmlTextWriterPtr XMLCALL - xmlNewTextWriterTree(xmlDocPtr doc, xmlNodePtr node, - int compression); - XMLPUBFUN void XMLCALL xmlFreeTextWriter(xmlTextWriterPtr writer); - -/* - * Functions - */ - - -/* - * Document - */ - XMLPUBFUN int XMLCALL - xmlTextWriterStartDocument(xmlTextWriterPtr writer, - const char *version, - const char *encoding, - const char *standalone); - XMLPUBFUN int XMLCALL xmlTextWriterEndDocument(xmlTextWriterPtr - writer); - -/* - * Comments - */ - XMLPUBFUN int XMLCALL xmlTextWriterStartComment(xmlTextWriterPtr - writer); - XMLPUBFUN int XMLCALL xmlTextWriterEndComment(xmlTextWriterPtr writer); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteFormatComment(xmlTextWriterPtr writer, - const char *format, ...) - LIBXML_ATTR_FORMAT(2,3); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteVFormatComment(xmlTextWriterPtr writer, - const char *format, - va_list argptr) - LIBXML_ATTR_FORMAT(2,0); - XMLPUBFUN int XMLCALL xmlTextWriterWriteComment(xmlTextWriterPtr - writer, - const xmlChar * - content); - -/* - * Elements - */ - XMLPUBFUN int XMLCALL - xmlTextWriterStartElement(xmlTextWriterPtr writer, - const xmlChar * name); - XMLPUBFUN int XMLCALL xmlTextWriterStartElementNS(xmlTextWriterPtr - writer, - const xmlChar * - prefix, - const xmlChar * name, - const xmlChar * - namespaceURI); - XMLPUBFUN int XMLCALL xmlTextWriterEndElement(xmlTextWriterPtr writer); - XMLPUBFUN int XMLCALL xmlTextWriterFullEndElement(xmlTextWriterPtr - writer); - -/* - * Elements conveniency functions - */ - XMLPUBFUN int XMLCALL - xmlTextWriterWriteFormatElement(xmlTextWriterPtr writer, - const xmlChar * name, - const char *format, ...) - LIBXML_ATTR_FORMAT(3,4); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteVFormatElement(xmlTextWriterPtr writer, - const xmlChar * name, - const char *format, - va_list argptr) - LIBXML_ATTR_FORMAT(3,0); - XMLPUBFUN int XMLCALL xmlTextWriterWriteElement(xmlTextWriterPtr - writer, - const xmlChar * name, - const xmlChar * - content); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteFormatElementNS(xmlTextWriterPtr writer, - const xmlChar * prefix, - const xmlChar * name, - const xmlChar * namespaceURI, - const char *format, ...) - LIBXML_ATTR_FORMAT(5,6); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteVFormatElementNS(xmlTextWriterPtr writer, - const xmlChar * prefix, - const xmlChar * name, - const xmlChar * namespaceURI, - const char *format, - va_list argptr) - LIBXML_ATTR_FORMAT(5,0); - XMLPUBFUN int XMLCALL xmlTextWriterWriteElementNS(xmlTextWriterPtr - writer, - const xmlChar * - prefix, - const xmlChar * name, - const xmlChar * - namespaceURI, - const xmlChar * - content); - -/* - * Text - */ - XMLPUBFUN int XMLCALL - xmlTextWriterWriteFormatRaw(xmlTextWriterPtr writer, - const char *format, ...) - LIBXML_ATTR_FORMAT(2,3); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteVFormatRaw(xmlTextWriterPtr writer, - const char *format, va_list argptr) - LIBXML_ATTR_FORMAT(2,0); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteRawLen(xmlTextWriterPtr writer, - const xmlChar * content, int len); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteRaw(xmlTextWriterPtr writer, - const xmlChar * content); - XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatString(xmlTextWriterPtr - writer, - const char - *format, ...) - LIBXML_ATTR_FORMAT(2,3); - XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatString(xmlTextWriterPtr - writer, - const char - *format, - va_list argptr) - LIBXML_ATTR_FORMAT(2,0); - XMLPUBFUN int XMLCALL xmlTextWriterWriteString(xmlTextWriterPtr writer, - const xmlChar * - content); - XMLPUBFUN int XMLCALL xmlTextWriterWriteBase64(xmlTextWriterPtr writer, - const char *data, - int start, int len); - XMLPUBFUN int XMLCALL xmlTextWriterWriteBinHex(xmlTextWriterPtr writer, - const char *data, - int start, int len); - -/* - * Attributes - */ - XMLPUBFUN int XMLCALL - xmlTextWriterStartAttribute(xmlTextWriterPtr writer, - const xmlChar * name); - XMLPUBFUN int XMLCALL xmlTextWriterStartAttributeNS(xmlTextWriterPtr - writer, - const xmlChar * - prefix, - const xmlChar * - name, - const xmlChar * - namespaceURI); - XMLPUBFUN int XMLCALL xmlTextWriterEndAttribute(xmlTextWriterPtr - writer); - -/* - * Attributes conveniency functions - */ - XMLPUBFUN int XMLCALL - xmlTextWriterWriteFormatAttribute(xmlTextWriterPtr writer, - const xmlChar * name, - const char *format, ...) - LIBXML_ATTR_FORMAT(3,4); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteVFormatAttribute(xmlTextWriterPtr writer, - const xmlChar * name, - const char *format, - va_list argptr) - LIBXML_ATTR_FORMAT(3,0); - XMLPUBFUN int XMLCALL xmlTextWriterWriteAttribute(xmlTextWriterPtr - writer, - const xmlChar * name, - const xmlChar * - content); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteFormatAttributeNS(xmlTextWriterPtr writer, - const xmlChar * prefix, - const xmlChar * name, - const xmlChar * namespaceURI, - const char *format, ...) - LIBXML_ATTR_FORMAT(5,6); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteVFormatAttributeNS(xmlTextWriterPtr writer, - const xmlChar * prefix, - const xmlChar * name, - const xmlChar * namespaceURI, - const char *format, - va_list argptr) - LIBXML_ATTR_FORMAT(5,0); - XMLPUBFUN int XMLCALL xmlTextWriterWriteAttributeNS(xmlTextWriterPtr - writer, - const xmlChar * - prefix, - const xmlChar * - name, - const xmlChar * - namespaceURI, - const xmlChar * - content); - -/* - * PI's - */ - XMLPUBFUN int XMLCALL - xmlTextWriterStartPI(xmlTextWriterPtr writer, - const xmlChar * target); - XMLPUBFUN int XMLCALL xmlTextWriterEndPI(xmlTextWriterPtr writer); - -/* - * PI conveniency functions - */ - XMLPUBFUN int XMLCALL - xmlTextWriterWriteFormatPI(xmlTextWriterPtr writer, - const xmlChar * target, - const char *format, ...) - LIBXML_ATTR_FORMAT(3,4); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteVFormatPI(xmlTextWriterPtr writer, - const xmlChar * target, - const char *format, va_list argptr) - LIBXML_ATTR_FORMAT(3,0); - XMLPUBFUN int XMLCALL - xmlTextWriterWritePI(xmlTextWriterPtr writer, - const xmlChar * target, - const xmlChar * content); - -/** - * xmlTextWriterWriteProcessingInstruction: - * - * This macro maps to xmlTextWriterWritePI - */ -#define xmlTextWriterWriteProcessingInstruction xmlTextWriterWritePI - -/* - * CDATA - */ - XMLPUBFUN int XMLCALL xmlTextWriterStartCDATA(xmlTextWriterPtr writer); - XMLPUBFUN int XMLCALL xmlTextWriterEndCDATA(xmlTextWriterPtr writer); - -/* - * CDATA conveniency functions - */ - XMLPUBFUN int XMLCALL - xmlTextWriterWriteFormatCDATA(xmlTextWriterPtr writer, - const char *format, ...) - LIBXML_ATTR_FORMAT(2,3); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteVFormatCDATA(xmlTextWriterPtr writer, - const char *format, va_list argptr) - LIBXML_ATTR_FORMAT(2,0); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteCDATA(xmlTextWriterPtr writer, - const xmlChar * content); - -/* - * DTD - */ - XMLPUBFUN int XMLCALL - xmlTextWriterStartDTD(xmlTextWriterPtr writer, - const xmlChar * name, - const xmlChar * pubid, - const xmlChar * sysid); - XMLPUBFUN int XMLCALL xmlTextWriterEndDTD(xmlTextWriterPtr writer); - -/* - * DTD conveniency functions - */ - XMLPUBFUN int XMLCALL - xmlTextWriterWriteFormatDTD(xmlTextWriterPtr writer, - const xmlChar * name, - const xmlChar * pubid, - const xmlChar * sysid, - const char *format, ...) - LIBXML_ATTR_FORMAT(5,6); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteVFormatDTD(xmlTextWriterPtr writer, - const xmlChar * name, - const xmlChar * pubid, - const xmlChar * sysid, - const char *format, va_list argptr) - LIBXML_ATTR_FORMAT(5,0); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteDTD(xmlTextWriterPtr writer, - const xmlChar * name, - const xmlChar * pubid, - const xmlChar * sysid, - const xmlChar * subset); - -/** - * xmlTextWriterWriteDocType: - * - * this macro maps to xmlTextWriterWriteDTD - */ -#define xmlTextWriterWriteDocType xmlTextWriterWriteDTD - -/* - * DTD element definition - */ - XMLPUBFUN int XMLCALL - xmlTextWriterStartDTDElement(xmlTextWriterPtr writer, - const xmlChar * name); - XMLPUBFUN int XMLCALL xmlTextWriterEndDTDElement(xmlTextWriterPtr - writer); - -/* - * DTD element definition conveniency functions - */ - XMLPUBFUN int XMLCALL - xmlTextWriterWriteFormatDTDElement(xmlTextWriterPtr writer, - const xmlChar * name, - const char *format, ...) - LIBXML_ATTR_FORMAT(3,4); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteVFormatDTDElement(xmlTextWriterPtr writer, - const xmlChar * name, - const char *format, - va_list argptr) - LIBXML_ATTR_FORMAT(3,0); - XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDElement(xmlTextWriterPtr - writer, - const xmlChar * - name, - const xmlChar * - content); - -/* - * DTD attribute list definition - */ - XMLPUBFUN int XMLCALL - xmlTextWriterStartDTDAttlist(xmlTextWriterPtr writer, - const xmlChar * name); - XMLPUBFUN int XMLCALL xmlTextWriterEndDTDAttlist(xmlTextWriterPtr - writer); - -/* - * DTD attribute list definition conveniency functions - */ - XMLPUBFUN int XMLCALL - xmlTextWriterWriteFormatDTDAttlist(xmlTextWriterPtr writer, - const xmlChar * name, - const char *format, ...) - LIBXML_ATTR_FORMAT(3,4); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteVFormatDTDAttlist(xmlTextWriterPtr writer, - const xmlChar * name, - const char *format, - va_list argptr) - LIBXML_ATTR_FORMAT(3,0); - XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDAttlist(xmlTextWriterPtr - writer, - const xmlChar * - name, - const xmlChar * - content); - -/* - * DTD entity definition - */ - XMLPUBFUN int XMLCALL - xmlTextWriterStartDTDEntity(xmlTextWriterPtr writer, - int pe, const xmlChar * name); - XMLPUBFUN int XMLCALL xmlTextWriterEndDTDEntity(xmlTextWriterPtr - writer); - -/* - * DTD entity definition conveniency functions - */ - XMLPUBFUN int XMLCALL - xmlTextWriterWriteFormatDTDInternalEntity(xmlTextWriterPtr writer, - int pe, - const xmlChar * name, - const char *format, ...) - LIBXML_ATTR_FORMAT(4,5); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteVFormatDTDInternalEntity(xmlTextWriterPtr writer, - int pe, - const xmlChar * name, - const char *format, - va_list argptr) - LIBXML_ATTR_FORMAT(4,0); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteDTDInternalEntity(xmlTextWriterPtr writer, - int pe, - const xmlChar * name, - const xmlChar * content); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteDTDExternalEntity(xmlTextWriterPtr writer, - int pe, - const xmlChar * name, - const xmlChar * pubid, - const xmlChar * sysid, - const xmlChar * ndataid); - XMLPUBFUN int XMLCALL - xmlTextWriterWriteDTDExternalEntityContents(xmlTextWriterPtr - writer, - const xmlChar * pubid, - const xmlChar * sysid, - const xmlChar * - ndataid); - XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDEntity(xmlTextWriterPtr - writer, int pe, - const xmlChar * name, - const xmlChar * - pubid, - const xmlChar * - sysid, - const xmlChar * - ndataid, - const xmlChar * - content); - -/* - * DTD notation definition - */ - XMLPUBFUN int XMLCALL - xmlTextWriterWriteDTDNotation(xmlTextWriterPtr writer, - const xmlChar * name, - const xmlChar * pubid, - const xmlChar * sysid); - -/* - * Indentation - */ - XMLPUBFUN int XMLCALL - xmlTextWriterSetIndent(xmlTextWriterPtr writer, int indent); - XMLPUBFUN int XMLCALL - xmlTextWriterSetIndentString(xmlTextWriterPtr writer, - const xmlChar * str); - - XMLPUBFUN int XMLCALL - xmlTextWriterSetQuoteChar(xmlTextWriterPtr writer, xmlChar quotechar); - - -/* - * misc - */ - XMLPUBFUN int XMLCALL xmlTextWriterFlush(xmlTextWriterPtr writer); - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_WRITER_ENABLED */ - -#endif /* __XML_XMLWRITER_H__ */ diff --git a/cache/include/libxml/xpath.h b/cache/include/libxml/xpath.h deleted file mode 100644 index d96776c..0000000 --- a/cache/include/libxml/xpath.h +++ /dev/null @@ -1,557 +0,0 @@ -/* - * Summary: XML Path Language implementation - * Description: API for the XML Path Language implementation - * - * XML Path Language implementation - * XPath is a language for addressing parts of an XML document, - * designed to be used by both XSLT and XPointer - * http://www.w3.org/TR/xpath - * - * Implements - * W3C Recommendation 16 November 1999 - * http://www.w3.org/TR/1999/REC-xpath-19991116 - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_XPATH_H__ -#define __XML_XPATH_H__ - -#include - -#ifdef LIBXML_XPATH_ENABLED - -#include -#include -#include -#endif /* LIBXML_XPATH_ENABLED */ - -#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) -#ifdef __cplusplus -extern "C" { -#endif -#endif /* LIBXML_XPATH_ENABLED or LIBXML_SCHEMAS_ENABLED */ - -#ifdef LIBXML_XPATH_ENABLED - -typedef struct _xmlXPathContext xmlXPathContext; -typedef xmlXPathContext *xmlXPathContextPtr; -typedef struct _xmlXPathParserContext xmlXPathParserContext; -typedef xmlXPathParserContext *xmlXPathParserContextPtr; - -/** - * The set of XPath error codes. - */ - -typedef enum { - XPATH_EXPRESSION_OK = 0, - XPATH_NUMBER_ERROR, - XPATH_UNFINISHED_LITERAL_ERROR, - XPATH_START_LITERAL_ERROR, - XPATH_VARIABLE_REF_ERROR, - XPATH_UNDEF_VARIABLE_ERROR, - XPATH_INVALID_PREDICATE_ERROR, - XPATH_EXPR_ERROR, - XPATH_UNCLOSED_ERROR, - XPATH_UNKNOWN_FUNC_ERROR, - XPATH_INVALID_OPERAND, - XPATH_INVALID_TYPE, - XPATH_INVALID_ARITY, - XPATH_INVALID_CTXT_SIZE, - XPATH_INVALID_CTXT_POSITION, - XPATH_MEMORY_ERROR, - XPTR_SYNTAX_ERROR, - XPTR_RESOURCE_ERROR, - XPTR_SUB_RESOURCE_ERROR, - XPATH_UNDEF_PREFIX_ERROR, - XPATH_ENCODING_ERROR, - XPATH_INVALID_CHAR_ERROR, - XPATH_INVALID_CTXT, - XPATH_STACK_ERROR, - XPATH_FORBID_VARIABLE_ERROR -} xmlXPathError; - -/* - * A node-set (an unordered collection of nodes without duplicates). - */ -typedef struct _xmlNodeSet xmlNodeSet; -typedef xmlNodeSet *xmlNodeSetPtr; -struct _xmlNodeSet { - int nodeNr; /* number of nodes in the set */ - int nodeMax; /* size of the array as allocated */ - xmlNodePtr *nodeTab; /* array of nodes in no particular order */ - /* @@ with_ns to check wether namespace nodes should be looked at @@ */ -}; - -/* - * An expression is evaluated to yield an object, which - * has one of the following four basic types: - * - node-set - * - boolean - * - number - * - string - * - * @@ XPointer will add more types ! - */ - -typedef enum { - XPATH_UNDEFINED = 0, - XPATH_NODESET = 1, - XPATH_BOOLEAN = 2, - XPATH_NUMBER = 3, - XPATH_STRING = 4, - XPATH_POINT = 5, - XPATH_RANGE = 6, - XPATH_LOCATIONSET = 7, - XPATH_USERS = 8, - XPATH_XSLT_TREE = 9 /* An XSLT value tree, non modifiable */ -} xmlXPathObjectType; - -typedef struct _xmlXPathObject xmlXPathObject; -typedef xmlXPathObject *xmlXPathObjectPtr; -struct _xmlXPathObject { - xmlXPathObjectType type; - xmlNodeSetPtr nodesetval; - int boolval; - double floatval; - xmlChar *stringval; - void *user; - int index; - void *user2; - int index2; -}; - -/** - * xmlXPathConvertFunc: - * @obj: an XPath object - * @type: the number of the target type - * - * A conversion function is associated to a type and used to cast - * the new type to primitive values. - * - * Returns -1 in case of error, 0 otherwise - */ -typedef int (*xmlXPathConvertFunc) (xmlXPathObjectPtr obj, int type); - -/* - * Extra type: a name and a conversion function. - */ - -typedef struct _xmlXPathType xmlXPathType; -typedef xmlXPathType *xmlXPathTypePtr; -struct _xmlXPathType { - const xmlChar *name; /* the type name */ - xmlXPathConvertFunc func; /* the conversion function */ -}; - -/* - * Extra variable: a name and a value. - */ - -typedef struct _xmlXPathVariable xmlXPathVariable; -typedef xmlXPathVariable *xmlXPathVariablePtr; -struct _xmlXPathVariable { - const xmlChar *name; /* the variable name */ - xmlXPathObjectPtr value; /* the value */ -}; - -/** - * xmlXPathEvalFunc: - * @ctxt: an XPath parser context - * @nargs: the number of arguments passed to the function - * - * An XPath evaluation function, the parameters are on the XPath context stack. - */ - -typedef void (*xmlXPathEvalFunc)(xmlXPathParserContextPtr ctxt, - int nargs); - -/* - * Extra function: a name and a evaluation function. - */ - -typedef struct _xmlXPathFunct xmlXPathFunct; -typedef xmlXPathFunct *xmlXPathFuncPtr; -struct _xmlXPathFunct { - const xmlChar *name; /* the function name */ - xmlXPathEvalFunc func; /* the evaluation function */ -}; - -/** - * xmlXPathAxisFunc: - * @ctxt: the XPath interpreter context - * @cur: the previous node being explored on that axis - * - * An axis traversal function. To traverse an axis, the engine calls - * the first time with cur == NULL and repeat until the function returns - * NULL indicating the end of the axis traversal. - * - * Returns the next node in that axis or NULL if at the end of the axis. - */ - -typedef xmlXPathObjectPtr (*xmlXPathAxisFunc) (xmlXPathParserContextPtr ctxt, - xmlXPathObjectPtr cur); - -/* - * Extra axis: a name and an axis function. - */ - -typedef struct _xmlXPathAxis xmlXPathAxis; -typedef xmlXPathAxis *xmlXPathAxisPtr; -struct _xmlXPathAxis { - const xmlChar *name; /* the axis name */ - xmlXPathAxisFunc func; /* the search function */ -}; - -/** - * xmlXPathFunction: - * @ctxt: the XPath interprestation context - * @nargs: the number of arguments - * - * An XPath function. - * The arguments (if any) are popped out from the context stack - * and the result is pushed on the stack. - */ - -typedef void (*xmlXPathFunction) (xmlXPathParserContextPtr ctxt, int nargs); - -/* - * Function and Variable Lookup. - */ - -/** - * xmlXPathVariableLookupFunc: - * @ctxt: an XPath context - * @name: name of the variable - * @ns_uri: the namespace name hosting this variable - * - * Prototype for callbacks used to plug variable lookup in the XPath - * engine. - * - * Returns the XPath object value or NULL if not found. - */ -typedef xmlXPathObjectPtr (*xmlXPathVariableLookupFunc) (void *ctxt, - const xmlChar *name, - const xmlChar *ns_uri); - -/** - * xmlXPathFuncLookupFunc: - * @ctxt: an XPath context - * @name: name of the function - * @ns_uri: the namespace name hosting this function - * - * Prototype for callbacks used to plug function lookup in the XPath - * engine. - * - * Returns the XPath function or NULL if not found. - */ -typedef xmlXPathFunction (*xmlXPathFuncLookupFunc) (void *ctxt, - const xmlChar *name, - const xmlChar *ns_uri); - -/** - * xmlXPathFlags: - * Flags for XPath engine compilation and runtime - */ -/** - * XML_XPATH_CHECKNS: - * - * check namespaces at compilation - */ -#define XML_XPATH_CHECKNS (1<<0) -/** - * XML_XPATH_NOVAR: - * - * forbid variables in expression - */ -#define XML_XPATH_NOVAR (1<<1) - -/** - * xmlXPathContext: - * - * Expression evaluation occurs with respect to a context. - * he context consists of: - * - a node (the context node) - * - a node list (the context node list) - * - a set of variable bindings - * - a function library - * - the set of namespace declarations in scope for the expression - * Following the switch to hash tables, this need to be trimmed up at - * the next binary incompatible release. - * The node may be modified when the context is passed to libxml2 - * for an XPath evaluation so you may need to initialize it again - * before the next call. - */ - -struct _xmlXPathContext { - xmlDocPtr doc; /* The current document */ - xmlNodePtr node; /* The current node */ - - int nb_variables_unused; /* unused (hash table) */ - int max_variables_unused; /* unused (hash table) */ - xmlHashTablePtr varHash; /* Hash table of defined variables */ - - int nb_types; /* number of defined types */ - int max_types; /* max number of types */ - xmlXPathTypePtr types; /* Array of defined types */ - - int nb_funcs_unused; /* unused (hash table) */ - int max_funcs_unused; /* unused (hash table) */ - xmlHashTablePtr funcHash; /* Hash table of defined funcs */ - - int nb_axis; /* number of defined axis */ - int max_axis; /* max number of axis */ - xmlXPathAxisPtr axis; /* Array of defined axis */ - - /* the namespace nodes of the context node */ - xmlNsPtr *namespaces; /* Array of namespaces */ - int nsNr; /* number of namespace in scope */ - void *user; /* function to free */ - - /* extra variables */ - int contextSize; /* the context size */ - int proximityPosition; /* the proximity position */ - - /* extra stuff for XPointer */ - int xptr; /* is this an XPointer context? */ - xmlNodePtr here; /* for here() */ - xmlNodePtr origin; /* for origin() */ - - /* the set of namespace declarations in scope for the expression */ - xmlHashTablePtr nsHash; /* The namespaces hash table */ - xmlXPathVariableLookupFunc varLookupFunc;/* variable lookup func */ - void *varLookupData; /* variable lookup data */ - - /* Possibility to link in an extra item */ - void *extra; /* needed for XSLT */ - - /* The function name and URI when calling a function */ - const xmlChar *function; - const xmlChar *functionURI; - - /* function lookup function and data */ - xmlXPathFuncLookupFunc funcLookupFunc;/* function lookup func */ - void *funcLookupData; /* function lookup data */ - - /* temporary namespace lists kept for walking the namespace axis */ - xmlNsPtr *tmpNsList; /* Array of namespaces */ - int tmpNsNr; /* number of namespaces in scope */ - - /* error reporting mechanism */ - void *userData; /* user specific data block */ - xmlStructuredErrorFunc error; /* the callback in case of errors */ - xmlError lastError; /* the last error */ - xmlNodePtr debugNode; /* the source node XSLT */ - - /* dictionary */ - xmlDictPtr dict; /* dictionary if any */ - - int flags; /* flags to control compilation */ - - /* Cache for reusal of XPath objects */ - void *cache; -}; - -/* - * The structure of a compiled expression form is not public. - */ - -typedef struct _xmlXPathCompExpr xmlXPathCompExpr; -typedef xmlXPathCompExpr *xmlXPathCompExprPtr; - -/** - * xmlXPathParserContext: - * - * An XPath parser context. It contains pure parsing informations, - * an xmlXPathContext, and the stack of objects. - */ -struct _xmlXPathParserContext { - const xmlChar *cur; /* the current char being parsed */ - const xmlChar *base; /* the full expression */ - - int error; /* error code */ - - xmlXPathContextPtr context; /* the evaluation context */ - xmlXPathObjectPtr value; /* the current value */ - int valueNr; /* number of values stacked */ - int valueMax; /* max number of values stacked */ - xmlXPathObjectPtr *valueTab; /* stack of values */ - - xmlXPathCompExprPtr comp; /* the precompiled expression */ - int xptr; /* it this an XPointer expression */ - xmlNodePtr ancestor; /* used for walking preceding axis */ - - int valueFrame; /* used to limit Pop on the stack */ -}; - -/************************************************************************ - * * - * Public API * - * * - ************************************************************************/ - -/** - * Objects and Nodesets handling - */ - -XMLPUBVAR double xmlXPathNAN; -XMLPUBVAR double xmlXPathPINF; -XMLPUBVAR double xmlXPathNINF; - -/* These macros may later turn into functions */ -/** - * xmlXPathNodeSetGetLength: - * @ns: a node-set - * - * Implement a functionality similar to the DOM NodeList.length. - * - * Returns the number of nodes in the node-set. - */ -#define xmlXPathNodeSetGetLength(ns) ((ns) ? (ns)->nodeNr : 0) -/** - * xmlXPathNodeSetItem: - * @ns: a node-set - * @index: index of a node in the set - * - * Implements a functionality similar to the DOM NodeList.item(). - * - * Returns the xmlNodePtr at the given @index in @ns or NULL if - * @index is out of range (0 to length-1) - */ -#define xmlXPathNodeSetItem(ns, index) \ - ((((ns) != NULL) && \ - ((index) >= 0) && ((index) < (ns)->nodeNr)) ? \ - (ns)->nodeTab[(index)] \ - : NULL) -/** - * xmlXPathNodeSetIsEmpty: - * @ns: a node-set - * - * Checks whether @ns is empty or not. - * - * Returns %TRUE if @ns is an empty node-set. - */ -#define xmlXPathNodeSetIsEmpty(ns) \ - (((ns) == NULL) || ((ns)->nodeNr == 0) || ((ns)->nodeTab == NULL)) - - -XMLPUBFUN void XMLCALL - xmlXPathFreeObject (xmlXPathObjectPtr obj); -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathNodeSetCreate (xmlNodePtr val); -XMLPUBFUN void XMLCALL - xmlXPathFreeNodeSetList (xmlXPathObjectPtr obj); -XMLPUBFUN void XMLCALL - xmlXPathFreeNodeSet (xmlNodeSetPtr obj); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathObjectCopy (xmlXPathObjectPtr val); -XMLPUBFUN int XMLCALL - xmlXPathCmpNodes (xmlNodePtr node1, - xmlNodePtr node2); -/** - * Conversion functions to basic types. - */ -XMLPUBFUN int XMLCALL - xmlXPathCastNumberToBoolean (double val); -XMLPUBFUN int XMLCALL - xmlXPathCastStringToBoolean (const xmlChar * val); -XMLPUBFUN int XMLCALL - xmlXPathCastNodeSetToBoolean(xmlNodeSetPtr ns); -XMLPUBFUN int XMLCALL - xmlXPathCastToBoolean (xmlXPathObjectPtr val); - -XMLPUBFUN double XMLCALL - xmlXPathCastBooleanToNumber (int val); -XMLPUBFUN double XMLCALL - xmlXPathCastStringToNumber (const xmlChar * val); -XMLPUBFUN double XMLCALL - xmlXPathCastNodeToNumber (xmlNodePtr node); -XMLPUBFUN double XMLCALL - xmlXPathCastNodeSetToNumber (xmlNodeSetPtr ns); -XMLPUBFUN double XMLCALL - xmlXPathCastToNumber (xmlXPathObjectPtr val); - -XMLPUBFUN xmlChar * XMLCALL - xmlXPathCastBooleanToString (int val); -XMLPUBFUN xmlChar * XMLCALL - xmlXPathCastNumberToString (double val); -XMLPUBFUN xmlChar * XMLCALL - xmlXPathCastNodeToString (xmlNodePtr node); -XMLPUBFUN xmlChar * XMLCALL - xmlXPathCastNodeSetToString (xmlNodeSetPtr ns); -XMLPUBFUN xmlChar * XMLCALL - xmlXPathCastToString (xmlXPathObjectPtr val); - -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathConvertBoolean (xmlXPathObjectPtr val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathConvertNumber (xmlXPathObjectPtr val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathConvertString (xmlXPathObjectPtr val); - -/** - * Context handling. - */ -XMLPUBFUN xmlXPathContextPtr XMLCALL - xmlXPathNewContext (xmlDocPtr doc); -XMLPUBFUN void XMLCALL - xmlXPathFreeContext (xmlXPathContextPtr ctxt); -XMLPUBFUN int XMLCALL - xmlXPathContextSetCache(xmlXPathContextPtr ctxt, - int active, - int value, - int options); -/** - * Evaluation functions. - */ -XMLPUBFUN long XMLCALL - xmlXPathOrderDocElems (xmlDocPtr doc); -XMLPUBFUN int XMLCALL - xmlXPathSetContextNode (xmlNodePtr node, - xmlXPathContextPtr ctx); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathNodeEval (xmlNodePtr node, - const xmlChar *str, - xmlXPathContextPtr ctx); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathEval (const xmlChar *str, - xmlXPathContextPtr ctx); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathEvalExpression (const xmlChar *str, - xmlXPathContextPtr ctxt); -XMLPUBFUN int XMLCALL - xmlXPathEvalPredicate (xmlXPathContextPtr ctxt, - xmlXPathObjectPtr res); -/** - * Separate compilation/evaluation entry points. - */ -XMLPUBFUN xmlXPathCompExprPtr XMLCALL - xmlXPathCompile (const xmlChar *str); -XMLPUBFUN xmlXPathCompExprPtr XMLCALL - xmlXPathCtxtCompile (xmlXPathContextPtr ctxt, - const xmlChar *str); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathCompiledEval (xmlXPathCompExprPtr comp, - xmlXPathContextPtr ctx); -XMLPUBFUN int XMLCALL - xmlXPathCompiledEvalToBoolean(xmlXPathCompExprPtr comp, - xmlXPathContextPtr ctxt); -XMLPUBFUN void XMLCALL - xmlXPathFreeCompExpr (xmlXPathCompExprPtr comp); -#endif /* LIBXML_XPATH_ENABLED */ -#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) -XMLPUBFUN void XMLCALL - xmlXPathInit (void); -XMLPUBFUN int XMLCALL - xmlXPathIsNaN (double val); -XMLPUBFUN int XMLCALL - xmlXPathIsInf (double val); - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_XPATH_ENABLED or LIBXML_SCHEMAS_ENABLED*/ -#endif /* ! __XML_XPATH_H__ */ diff --git a/cache/include/libxml/xpathInternals.h b/cache/include/libxml/xpathInternals.h deleted file mode 100644 index 70c9db9..0000000 --- a/cache/include/libxml/xpathInternals.h +++ /dev/null @@ -1,632 +0,0 @@ -/* - * Summary: internal interfaces for XML Path Language implementation - * Description: internal interfaces for XML Path Language implementation - * used to build new modules on top of XPath like XPointer and - * XSLT - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_XPATH_INTERNALS_H__ -#define __XML_XPATH_INTERNALS_H__ - -#include -#include - -#ifdef LIBXML_XPATH_ENABLED - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************ - * * - * Helpers * - * * - ************************************************************************/ - -/* - * Many of these macros may later turn into functions. They - * shouldn't be used in #ifdef's preprocessor instructions. - */ -/** - * xmlXPathSetError: - * @ctxt: an XPath parser context - * @err: an xmlXPathError code - * - * Raises an error. - */ -#define xmlXPathSetError(ctxt, err) \ - { xmlXPatherror((ctxt), __FILE__, __LINE__, (err)); \ - if ((ctxt) != NULL) (ctxt)->error = (err); } - -/** - * xmlXPathSetArityError: - * @ctxt: an XPath parser context - * - * Raises an XPATH_INVALID_ARITY error. - */ -#define xmlXPathSetArityError(ctxt) \ - xmlXPathSetError((ctxt), XPATH_INVALID_ARITY) - -/** - * xmlXPathSetTypeError: - * @ctxt: an XPath parser context - * - * Raises an XPATH_INVALID_TYPE error. - */ -#define xmlXPathSetTypeError(ctxt) \ - xmlXPathSetError((ctxt), XPATH_INVALID_TYPE) - -/** - * xmlXPathGetError: - * @ctxt: an XPath parser context - * - * Get the error code of an XPath context. - * - * Returns the context error. - */ -#define xmlXPathGetError(ctxt) ((ctxt)->error) - -/** - * xmlXPathCheckError: - * @ctxt: an XPath parser context - * - * Check if an XPath error was raised. - * - * Returns true if an error has been raised, false otherwise. - */ -#define xmlXPathCheckError(ctxt) ((ctxt)->error != XPATH_EXPRESSION_OK) - -/** - * xmlXPathGetDocument: - * @ctxt: an XPath parser context - * - * Get the document of an XPath context. - * - * Returns the context document. - */ -#define xmlXPathGetDocument(ctxt) ((ctxt)->context->doc) - -/** - * xmlXPathGetContextNode: - * @ctxt: an XPath parser context - * - * Get the context node of an XPath context. - * - * Returns the context node. - */ -#define xmlXPathGetContextNode(ctxt) ((ctxt)->context->node) - -XMLPUBFUN int XMLCALL - xmlXPathPopBoolean (xmlXPathParserContextPtr ctxt); -XMLPUBFUN double XMLCALL - xmlXPathPopNumber (xmlXPathParserContextPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL - xmlXPathPopString (xmlXPathParserContextPtr ctxt); -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathPopNodeSet (xmlXPathParserContextPtr ctxt); -XMLPUBFUN void * XMLCALL - xmlXPathPopExternal (xmlXPathParserContextPtr ctxt); - -/** - * xmlXPathReturnBoolean: - * @ctxt: an XPath parser context - * @val: a boolean - * - * Pushes the boolean @val on the context stack. - */ -#define xmlXPathReturnBoolean(ctxt, val) \ - valuePush((ctxt), xmlXPathNewBoolean(val)) - -/** - * xmlXPathReturnTrue: - * @ctxt: an XPath parser context - * - * Pushes true on the context stack. - */ -#define xmlXPathReturnTrue(ctxt) xmlXPathReturnBoolean((ctxt), 1) - -/** - * xmlXPathReturnFalse: - * @ctxt: an XPath parser context - * - * Pushes false on the context stack. - */ -#define xmlXPathReturnFalse(ctxt) xmlXPathReturnBoolean((ctxt), 0) - -/** - * xmlXPathReturnNumber: - * @ctxt: an XPath parser context - * @val: a double - * - * Pushes the double @val on the context stack. - */ -#define xmlXPathReturnNumber(ctxt, val) \ - valuePush((ctxt), xmlXPathNewFloat(val)) - -/** - * xmlXPathReturnString: - * @ctxt: an XPath parser context - * @str: a string - * - * Pushes the string @str on the context stack. - */ -#define xmlXPathReturnString(ctxt, str) \ - valuePush((ctxt), xmlXPathWrapString(str)) - -/** - * xmlXPathReturnEmptyString: - * @ctxt: an XPath parser context - * - * Pushes an empty string on the stack. - */ -#define xmlXPathReturnEmptyString(ctxt) \ - valuePush((ctxt), xmlXPathNewCString("")) - -/** - * xmlXPathReturnNodeSet: - * @ctxt: an XPath parser context - * @ns: a node-set - * - * Pushes the node-set @ns on the context stack. - */ -#define xmlXPathReturnNodeSet(ctxt, ns) \ - valuePush((ctxt), xmlXPathWrapNodeSet(ns)) - -/** - * xmlXPathReturnEmptyNodeSet: - * @ctxt: an XPath parser context - * - * Pushes an empty node-set on the context stack. - */ -#define xmlXPathReturnEmptyNodeSet(ctxt) \ - valuePush((ctxt), xmlXPathNewNodeSet(NULL)) - -/** - * xmlXPathReturnExternal: - * @ctxt: an XPath parser context - * @val: user data - * - * Pushes user data on the context stack. - */ -#define xmlXPathReturnExternal(ctxt, val) \ - valuePush((ctxt), xmlXPathWrapExternal(val)) - -/** - * xmlXPathStackIsNodeSet: - * @ctxt: an XPath parser context - * - * Check if the current value on the XPath stack is a node set or - * an XSLT value tree. - * - * Returns true if the current object on the stack is a node-set. - */ -#define xmlXPathStackIsNodeSet(ctxt) \ - (((ctxt)->value != NULL) \ - && (((ctxt)->value->type == XPATH_NODESET) \ - || ((ctxt)->value->type == XPATH_XSLT_TREE))) - -/** - * xmlXPathStackIsExternal: - * @ctxt: an XPath parser context - * - * Checks if the current value on the XPath stack is an external - * object. - * - * Returns true if the current object on the stack is an external - * object. - */ -#define xmlXPathStackIsExternal(ctxt) \ - ((ctxt->value != NULL) && (ctxt->value->type == XPATH_USERS)) - -/** - * xmlXPathEmptyNodeSet: - * @ns: a node-set - * - * Empties a node-set. - */ -#define xmlXPathEmptyNodeSet(ns) \ - { while ((ns)->nodeNr > 0) (ns)->nodeTab[(ns)->nodeNr--] = NULL; } - -/** - * CHECK_ERROR: - * - * Macro to return from the function if an XPath error was detected. - */ -#define CHECK_ERROR \ - if (ctxt->error != XPATH_EXPRESSION_OK) return - -/** - * CHECK_ERROR0: - * - * Macro to return 0 from the function if an XPath error was detected. - */ -#define CHECK_ERROR0 \ - if (ctxt->error != XPATH_EXPRESSION_OK) return(0) - -/** - * XP_ERROR: - * @X: the error code - * - * Macro to raise an XPath error and return. - */ -#define XP_ERROR(X) \ - { xmlXPathErr(ctxt, X); return; } - -/** - * XP_ERROR0: - * @X: the error code - * - * Macro to raise an XPath error and return 0. - */ -#define XP_ERROR0(X) \ - { xmlXPathErr(ctxt, X); return(0); } - -/** - * CHECK_TYPE: - * @typeval: the XPath type - * - * Macro to check that the value on top of the XPath stack is of a given - * type. - */ -#define CHECK_TYPE(typeval) \ - if ((ctxt->value == NULL) || (ctxt->value->type != typeval)) \ - XP_ERROR(XPATH_INVALID_TYPE) - -/** - * CHECK_TYPE0: - * @typeval: the XPath type - * - * Macro to check that the value on top of the XPath stack is of a given - * type. Return(0) in case of failure - */ -#define CHECK_TYPE0(typeval) \ - if ((ctxt->value == NULL) || (ctxt->value->type != typeval)) \ - XP_ERROR0(XPATH_INVALID_TYPE) - -/** - * CHECK_ARITY: - * @x: the number of expected args - * - * Macro to check that the number of args passed to an XPath function matches. - */ -#define CHECK_ARITY(x) \ - if (ctxt == NULL) return; \ - if (nargs != (x)) \ - XP_ERROR(XPATH_INVALID_ARITY); \ - if (ctxt->valueNr < ctxt->valueFrame + (x)) \ - XP_ERROR(XPATH_STACK_ERROR); - -/** - * CAST_TO_STRING: - * - * Macro to try to cast the value on the top of the XPath stack to a string. - */ -#define CAST_TO_STRING \ - if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_STRING)) \ - xmlXPathStringFunction(ctxt, 1); - -/** - * CAST_TO_NUMBER: - * - * Macro to try to cast the value on the top of the XPath stack to a number. - */ -#define CAST_TO_NUMBER \ - if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_NUMBER)) \ - xmlXPathNumberFunction(ctxt, 1); - -/** - * CAST_TO_BOOLEAN: - * - * Macro to try to cast the value on the top of the XPath stack to a boolean. - */ -#define CAST_TO_BOOLEAN \ - if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_BOOLEAN)) \ - xmlXPathBooleanFunction(ctxt, 1); - -/* - * Variable Lookup forwarding. - */ - -XMLPUBFUN void XMLCALL - xmlXPathRegisterVariableLookup (xmlXPathContextPtr ctxt, - xmlXPathVariableLookupFunc f, - void *data); - -/* - * Function Lookup forwarding. - */ - -XMLPUBFUN void XMLCALL - xmlXPathRegisterFuncLookup (xmlXPathContextPtr ctxt, - xmlXPathFuncLookupFunc f, - void *funcCtxt); - -/* - * Error reporting. - */ -XMLPUBFUN void XMLCALL - xmlXPatherror (xmlXPathParserContextPtr ctxt, - const char *file, - int line, - int no); - -XMLPUBFUN void XMLCALL - xmlXPathErr (xmlXPathParserContextPtr ctxt, - int error); - -#ifdef LIBXML_DEBUG_ENABLED -XMLPUBFUN void XMLCALL - xmlXPathDebugDumpObject (FILE *output, - xmlXPathObjectPtr cur, - int depth); -XMLPUBFUN void XMLCALL - xmlXPathDebugDumpCompExpr(FILE *output, - xmlXPathCompExprPtr comp, - int depth); -#endif -/** - * NodeSet handling. - */ -XMLPUBFUN int XMLCALL - xmlXPathNodeSetContains (xmlNodeSetPtr cur, - xmlNodePtr val); -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathDifference (xmlNodeSetPtr nodes1, - xmlNodeSetPtr nodes2); -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathIntersection (xmlNodeSetPtr nodes1, - xmlNodeSetPtr nodes2); - -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathDistinctSorted (xmlNodeSetPtr nodes); -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathDistinct (xmlNodeSetPtr nodes); - -XMLPUBFUN int XMLCALL - xmlXPathHasSameNodes (xmlNodeSetPtr nodes1, - xmlNodeSetPtr nodes2); - -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathNodeLeadingSorted (xmlNodeSetPtr nodes, - xmlNodePtr node); -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathLeadingSorted (xmlNodeSetPtr nodes1, - xmlNodeSetPtr nodes2); -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathNodeLeading (xmlNodeSetPtr nodes, - xmlNodePtr node); -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathLeading (xmlNodeSetPtr nodes1, - xmlNodeSetPtr nodes2); - -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathNodeTrailingSorted (xmlNodeSetPtr nodes, - xmlNodePtr node); -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathTrailingSorted (xmlNodeSetPtr nodes1, - xmlNodeSetPtr nodes2); -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathNodeTrailing (xmlNodeSetPtr nodes, - xmlNodePtr node); -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathTrailing (xmlNodeSetPtr nodes1, - xmlNodeSetPtr nodes2); - - -/** - * Extending a context. - */ - -XMLPUBFUN int XMLCALL - xmlXPathRegisterNs (xmlXPathContextPtr ctxt, - const xmlChar *prefix, - const xmlChar *ns_uri); -XMLPUBFUN const xmlChar * XMLCALL - xmlXPathNsLookup (xmlXPathContextPtr ctxt, - const xmlChar *prefix); -XMLPUBFUN void XMLCALL - xmlXPathRegisteredNsCleanup (xmlXPathContextPtr ctxt); - -XMLPUBFUN int XMLCALL - xmlXPathRegisterFunc (xmlXPathContextPtr ctxt, - const xmlChar *name, - xmlXPathFunction f); -XMLPUBFUN int XMLCALL - xmlXPathRegisterFuncNS (xmlXPathContextPtr ctxt, - const xmlChar *name, - const xmlChar *ns_uri, - xmlXPathFunction f); -XMLPUBFUN int XMLCALL - xmlXPathRegisterVariable (xmlXPathContextPtr ctxt, - const xmlChar *name, - xmlXPathObjectPtr value); -XMLPUBFUN int XMLCALL - xmlXPathRegisterVariableNS (xmlXPathContextPtr ctxt, - const xmlChar *name, - const xmlChar *ns_uri, - xmlXPathObjectPtr value); -XMLPUBFUN xmlXPathFunction XMLCALL - xmlXPathFunctionLookup (xmlXPathContextPtr ctxt, - const xmlChar *name); -XMLPUBFUN xmlXPathFunction XMLCALL - xmlXPathFunctionLookupNS (xmlXPathContextPtr ctxt, - const xmlChar *name, - const xmlChar *ns_uri); -XMLPUBFUN void XMLCALL - xmlXPathRegisteredFuncsCleanup (xmlXPathContextPtr ctxt); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathVariableLookup (xmlXPathContextPtr ctxt, - const xmlChar *name); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathVariableLookupNS (xmlXPathContextPtr ctxt, - const xmlChar *name, - const xmlChar *ns_uri); -XMLPUBFUN void XMLCALL - xmlXPathRegisteredVariablesCleanup(xmlXPathContextPtr ctxt); - -/** - * Utilities to extend XPath. - */ -XMLPUBFUN xmlXPathParserContextPtr XMLCALL - xmlXPathNewParserContext (const xmlChar *str, - xmlXPathContextPtr ctxt); -XMLPUBFUN void XMLCALL - xmlXPathFreeParserContext (xmlXPathParserContextPtr ctxt); - -/* TODO: remap to xmlXPathValuePop and Push. */ -XMLPUBFUN xmlXPathObjectPtr XMLCALL - valuePop (xmlXPathParserContextPtr ctxt); -XMLPUBFUN int XMLCALL - valuePush (xmlXPathParserContextPtr ctxt, - xmlXPathObjectPtr value); - -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathNewString (const xmlChar *val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathNewCString (const char *val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathWrapString (xmlChar *val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathWrapCString (char * val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathNewFloat (double val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathNewBoolean (int val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathNewNodeSet (xmlNodePtr val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathNewValueTree (xmlNodePtr val); -XMLPUBFUN int XMLCALL - xmlXPathNodeSetAdd (xmlNodeSetPtr cur, - xmlNodePtr val); -XMLPUBFUN int XMLCALL - xmlXPathNodeSetAddUnique (xmlNodeSetPtr cur, - xmlNodePtr val); -XMLPUBFUN int XMLCALL - xmlXPathNodeSetAddNs (xmlNodeSetPtr cur, - xmlNodePtr node, - xmlNsPtr ns); -XMLPUBFUN void XMLCALL - xmlXPathNodeSetSort (xmlNodeSetPtr set); - -XMLPUBFUN void XMLCALL - xmlXPathRoot (xmlXPathParserContextPtr ctxt); -XMLPUBFUN void XMLCALL - xmlXPathEvalExpr (xmlXPathParserContextPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL - xmlXPathParseName (xmlXPathParserContextPtr ctxt); -XMLPUBFUN xmlChar * XMLCALL - xmlXPathParseNCName (xmlXPathParserContextPtr ctxt); - -/* - * Existing functions. - */ -XMLPUBFUN double XMLCALL - xmlXPathStringEvalNumber (const xmlChar *str); -XMLPUBFUN int XMLCALL - xmlXPathEvaluatePredicateResult (xmlXPathParserContextPtr ctxt, - xmlXPathObjectPtr res); -XMLPUBFUN void XMLCALL - xmlXPathRegisterAllFunctions (xmlXPathContextPtr ctxt); -XMLPUBFUN xmlNodeSetPtr XMLCALL - xmlXPathNodeSetMerge (xmlNodeSetPtr val1, - xmlNodeSetPtr val2); -XMLPUBFUN void XMLCALL - xmlXPathNodeSetDel (xmlNodeSetPtr cur, - xmlNodePtr val); -XMLPUBFUN void XMLCALL - xmlXPathNodeSetRemove (xmlNodeSetPtr cur, - int val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathNewNodeSetList (xmlNodeSetPtr val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathWrapNodeSet (xmlNodeSetPtr val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPathWrapExternal (void *val); - -XMLPUBFUN int XMLCALL xmlXPathEqualValues(xmlXPathParserContextPtr ctxt); -XMLPUBFUN int XMLCALL xmlXPathNotEqualValues(xmlXPathParserContextPtr ctxt); -XMLPUBFUN int XMLCALL xmlXPathCompareValues(xmlXPathParserContextPtr ctxt, int inf, int strict); -XMLPUBFUN void XMLCALL xmlXPathValueFlipSign(xmlXPathParserContextPtr ctxt); -XMLPUBFUN void XMLCALL xmlXPathAddValues(xmlXPathParserContextPtr ctxt); -XMLPUBFUN void XMLCALL xmlXPathSubValues(xmlXPathParserContextPtr ctxt); -XMLPUBFUN void XMLCALL xmlXPathMultValues(xmlXPathParserContextPtr ctxt); -XMLPUBFUN void XMLCALL xmlXPathDivValues(xmlXPathParserContextPtr ctxt); -XMLPUBFUN void XMLCALL xmlXPathModValues(xmlXPathParserContextPtr ctxt); - -XMLPUBFUN int XMLCALL xmlXPathIsNodeType(const xmlChar *name); - -/* - * Some of the axis navigation routines. - */ -XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextSelf(xmlXPathParserContextPtr ctxt, - xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextChild(xmlXPathParserContextPtr ctxt, - xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextDescendant(xmlXPathParserContextPtr ctxt, - xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextDescendantOrSelf(xmlXPathParserContextPtr ctxt, - xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextParent(xmlXPathParserContextPtr ctxt, - xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAncestorOrSelf(xmlXPathParserContextPtr ctxt, - xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextFollowingSibling(xmlXPathParserContextPtr ctxt, - xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextFollowing(xmlXPathParserContextPtr ctxt, - xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextNamespace(xmlXPathParserContextPtr ctxt, - xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAttribute(xmlXPathParserContextPtr ctxt, - xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextPreceding(xmlXPathParserContextPtr ctxt, - xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAncestor(xmlXPathParserContextPtr ctxt, - xmlNodePtr cur); -XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextPrecedingSibling(xmlXPathParserContextPtr ctxt, - xmlNodePtr cur); -/* - * The official core of XPath functions. - */ -XMLPUBFUN void XMLCALL xmlXPathLastFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathPositionFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathCountFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathIdFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathLocalNameFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathNamespaceURIFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathStringFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathStringLengthFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathConcatFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathContainsFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathStartsWithFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathSubstringFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathSubstringBeforeFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathSubstringAfterFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathNormalizeFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathTranslateFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathNotFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathTrueFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathFalseFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathLangFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathNumberFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathSumFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathFloorFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathCeilingFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathRoundFunction(xmlXPathParserContextPtr ctxt, int nargs); -XMLPUBFUN void XMLCALL xmlXPathBooleanFunction(xmlXPathParserContextPtr ctxt, int nargs); - -/** - * Really internal functions - */ -XMLPUBFUN void XMLCALL xmlXPathNodeSetFreeNs(xmlNsPtr ns); - -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_XPATH_ENABLED */ -#endif /* ! __XML_XPATH_INTERNALS_H__ */ diff --git a/cache/include/libxml/xpointer.h b/cache/include/libxml/xpointer.h deleted file mode 100644 index b99112b..0000000 --- a/cache/include/libxml/xpointer.h +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Summary: API to handle XML Pointers - * Description: API to handle XML Pointers - * Base implementation was made accordingly to - * W3C Candidate Recommendation 7 June 2000 - * http://www.w3.org/TR/2000/CR-xptr-20000607 - * - * Added support for the element() scheme described in: - * W3C Proposed Recommendation 13 November 2002 - * http://www.w3.org/TR/2002/PR-xptr-element-20021113/ - * - * Copy: See Copyright for the status of this software. - * - * Author: Daniel Veillard - */ - -#ifndef __XML_XPTR_H__ -#define __XML_XPTR_H__ - -#include - -#ifdef LIBXML_XPTR_ENABLED - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * A Location Set - */ -typedef struct _xmlLocationSet xmlLocationSet; -typedef xmlLocationSet *xmlLocationSetPtr; -struct _xmlLocationSet { - int locNr; /* number of locations in the set */ - int locMax; /* size of the array as allocated */ - xmlXPathObjectPtr *locTab;/* array of locations */ -}; - -/* - * Handling of location sets. - */ - -XMLPUBFUN xmlLocationSetPtr XMLCALL - xmlXPtrLocationSetCreate (xmlXPathObjectPtr val); -XMLPUBFUN void XMLCALL - xmlXPtrFreeLocationSet (xmlLocationSetPtr obj); -XMLPUBFUN xmlLocationSetPtr XMLCALL - xmlXPtrLocationSetMerge (xmlLocationSetPtr val1, - xmlLocationSetPtr val2); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPtrNewRange (xmlNodePtr start, - int startindex, - xmlNodePtr end, - int endindex); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPtrNewRangePoints (xmlXPathObjectPtr start, - xmlXPathObjectPtr end); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPtrNewRangeNodePoint (xmlNodePtr start, - xmlXPathObjectPtr end); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPtrNewRangePointNode (xmlXPathObjectPtr start, - xmlNodePtr end); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPtrNewRangeNodes (xmlNodePtr start, - xmlNodePtr end); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPtrNewLocationSetNodes (xmlNodePtr start, - xmlNodePtr end); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPtrNewLocationSetNodeSet(xmlNodeSetPtr set); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPtrNewRangeNodeObject (xmlNodePtr start, - xmlXPathObjectPtr end); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPtrNewCollapsedRange (xmlNodePtr start); -XMLPUBFUN void XMLCALL - xmlXPtrLocationSetAdd (xmlLocationSetPtr cur, - xmlXPathObjectPtr val); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPtrWrapLocationSet (xmlLocationSetPtr val); -XMLPUBFUN void XMLCALL - xmlXPtrLocationSetDel (xmlLocationSetPtr cur, - xmlXPathObjectPtr val); -XMLPUBFUN void XMLCALL - xmlXPtrLocationSetRemove (xmlLocationSetPtr cur, - int val); - -/* - * Functions. - */ -XMLPUBFUN xmlXPathContextPtr XMLCALL - xmlXPtrNewContext (xmlDocPtr doc, - xmlNodePtr here, - xmlNodePtr origin); -XMLPUBFUN xmlXPathObjectPtr XMLCALL - xmlXPtrEval (const xmlChar *str, - xmlXPathContextPtr ctx); -XMLPUBFUN void XMLCALL - xmlXPtrRangeToFunction (xmlXPathParserContextPtr ctxt, - int nargs); -XMLPUBFUN xmlNodePtr XMLCALL - xmlXPtrBuildNodeList (xmlXPathObjectPtr obj); -XMLPUBFUN void XMLCALL - xmlXPtrEvalRangePredicate (xmlXPathParserContextPtr ctxt); -#ifdef __cplusplus -} -#endif - -#endif /* LIBXML_XPTR_ENABLED */ -#endif /* __XML_XPTR_H__ */ diff --git a/cache/include/tango_cache_client.h b/cache/include/tango_cache_client.h index 268cdf5..5e3da6a 100644 --- a/cache/include/tango_cache_client.h +++ b/cache/include/tango_cache_client.h @@ -4,8 +4,8 @@ #include #include -#include "tfe_future.h" -#include "proxy_cache.h" +#include +#include "tango_cache_pending.h" #define USER_TAG_MAX_LEN 1518 @@ -105,9 +105,9 @@ struct tango_cache_instance *tango_cache_instance_new(struct event_base* evbase, //³É¹¦Ê±»Øµ÷promise_success, resultΪNULLʱ±íʾ½áÊø£» //ʧ°Üʱ»Øµ÷promise_failed(½öÒ»´Î)£¬Ê¹ÓÃget_last_error»ñÈ¡´íÎóÂ룻 //future²»¿ÉÒÔΪNULL -int tango_cache_fetch_object(struct tango_cache_instance *instance, struct future* future, struct tango_cache_meta *meta); +int tango_cache_fetch_object(struct tango_cache_instance *instance, struct future* f, struct tango_cache_meta *meta); //´Ópromise_successµÄresult²ÎÊýÌáÈ¡½á¹û -struct tango_cache_result *tango_cache_read_result(void *promise_result); +struct tango_cache_result *tango_cache_read_result(future_result_t *result); /* DELETE½Ó¿ÚµÄAPI*/ diff --git a/cache/include/tango_cache_pending.h b/cache/include/tango_cache_pending.h index 0b7728c..f295d90 100644 --- a/cache/include/tango_cache_pending.h +++ b/cache/include/tango_cache_pending.h @@ -43,7 +43,7 @@ ALLOWED ,//å…许使用缓存作为该请求的å“应 FORBIDDEN,//ç¦æ­¢ä½¿ç”¨ç¼“存作为该请求的å“应,需è¦å‘æºæœåŠ¡å™¨è¯·æ±‚ VERIFY,//ç¦æ­¢ä½¿ç”¨æœªéªŒè¯æœ‰æ•ˆæ€§çš„缓存作为该请求的å“应 */ -enum cache_pending_action tfe_cache_get_pending(const struct tfe_http_field *request, size_t n_fields,struct request_freshness* restrict); +enum cache_pending_action tfe_cache_get_pending(const struct tfe_http_half *request, struct request_freshness* restrict); @@ -59,4 +59,4 @@ UNDEFINED = 0,//å“应字段中未定义缓存的行为 ALLOWED ,//å…许缓存该å“应 FORBIDDEN,//ç¦æ­¢ç¼“存该å“应 */ -enum cache_pending_action tfe_cache_put_pending(const struct tfe_http_field *response, size_t n_fields, struct response_freshness* freshness); \ No newline at end of file +enum cache_pending_action tfe_cache_put_pending(const struct tfe_http_half *response, struct response_freshness* freshness); \ No newline at end of file diff --git a/cache/pangu_tango_cache.a b/cache/pangu_tango_cache.a deleted file mode 100644 index b39903ed4d7d17b16d9451221f8f1850edb2b7e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251776 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 diff --git a/cache/cache_evbase_client.cpp b/cache/src/cache_evbase_client.cpp similarity index 100% rename from cache/cache_evbase_client.cpp rename to cache/src/cache_evbase_client.cpp diff --git a/cache/tango_cache_client.cpp b/cache/src/tango_cache_client.cpp similarity index 100% rename from cache/tango_cache_client.cpp rename to cache/src/tango_cache_client.cpp diff --git a/cache/tango_cache_client_in.h b/cache/src/tango_cache_client_in.h similarity index 100% rename from cache/tango_cache_client_in.h rename to cache/src/tango_cache_client_in.h diff --git a/cache/src/tango_cache_pending.cpp b/cache/src/tango_cache_pending.cpp index 5786561..dc3eea0 100644 --- a/cache/src/tango_cache_pending.cpp +++ b/cache/src/tango_cache_pending.cpp @@ -1,4 +1,4 @@ -#include"proxy_cache.h" +#include"tango_cache_pending.h" #include #include #include @@ -63,19 +63,17 @@ enum cache_pending_action request_cache_control(const char* value, struct reques } -bool cache_vertify(const struct tfe_http_field *http_fields, size_t n_fields) +bool cache_vertify(const struct tfe_http_half *request) { int i = 0; - for (; i < n_fields; i++) - { - if ( http_fields[i].http_field == TLF_HTTP_IF_MATCH || - http_fields[i].http_field == TLF_HTTP_IF_NONE_MATCH || - http_fields[i].http_field == TLF_HTTP_IF_MODIFIED_SINCE || - http_fields[i].http_field == TLF_HTTP_IF_UNMODIFIED_SINCE ) - { - return true; - } - } + if( !tfe_http_std_field_read(request,TFE_HTTP_IF_MATCH) || + !tfe_http_std_field_read(request,TFE_HTTP_IF_NONE_MATCH) || + !tfe_http_std_field_read(request,TFE_HTTP_IF_MODIFIED_SINCE) || + !tfe_http_std_field_read(request,TFE_HTTP_IF_UNMODIFIED_SINCE) + ) + { + return true; + } return false; } @@ -105,28 +103,28 @@ enum cache_pending_action get_pragma_action(const char * value) } -enum cache_pending_action tfe_cache_get_pending(const struct tfe_http_field *request, size_t n_fields, struct request_freshness* restrict) +enum cache_pending_action tfe_cache_get_pending(const struct tfe_http_half *request, struct request_freshness* restrict) { enum cache_pending_action res = UNDEFINED; int i = 0; int index = 0; const char *value = NULL; memset(restrict,0,sizeof(struct request_freshness)); - value = get_head_value(request, n_fields, TFE_HTTP_PRAGMA); + value = tfe_http_std_field_read(request, TFE_HTTP_PRAGMA); if (value != NULL) { res = get_pragma_action(value); } else { - value = get_head_value(request, n_fields, TFE_HTTP_CACHE_CONTROL); + value = tfe_http_std_field_read(request, TFE_HTTP_CACHE_CONTROL); if (value != NULL) { res = request_cache_control(value, restrict); } else { - if (cache_vertify(request, n_fields)) + if (cache_vertify(request)) { res = VERIFY; } @@ -199,13 +197,13 @@ time_t get_response_maxage(const char* cache_ctl) } -void get_response_freshness(const struct tfe_http_field *response, size_t n_fields, struct response_freshness* freshness) +void get_response_freshness(const struct tfe_http_half *response, struct response_freshness* freshness) { time_t expire_rel_time = 0; time_t cur_rel_time = 0; struct tm cur_gmt_time; const char* field_value = NULL; - field_value = get_head_value(response, n_fields, TFE_HTTP_CACHE_CONTROL); + field_value = tfe_http_std_field_read(response, TFE_HTTP_CACHE_CONTROL); if (field_value != NULL) { freshness->timeout = get_response_s_maxage(field_value); @@ -216,7 +214,7 @@ void get_response_freshness(const struct tfe_http_field *response, size_t n_fiel } else { - field_value = get_head_value(response, n_fields, TFE_HTTP_EXPIRES); + field_value = tfe_http_std_field_read(response, TFE_HTTP_EXPIRES); if (field_value != NULL) { assert(is_standard_gmt_format(field_value)); @@ -230,13 +228,13 @@ void get_response_freshness(const struct tfe_http_field *response, size_t n_fiel freshness->timeout = expire_rel_time - cur_rel_time; } } - field_value = get_head_value(response, n_fields, TFE_HTTP_DATE); + field_value = tfe_http_std_field_read(response, TFE_HTTP_DATE); if (field_value != NULL) { assert(is_standard_gmt_format(field_value)); freshness->date = absolute_to_relative_time(field_value);; } - field_value = get_head_value(response, n_fields, TLF_HTTP_LAST_MODIFIED); + field_value = tfe_http_std_field_read(response, TFE_HTTP_LAST_MODIFIED); if (field_value != NULL) { assert(is_standard_gmt_format(field_value)); @@ -268,28 +266,28 @@ enum cache_pending_action response_cache_control(const char* value) } -enum cache_pending_action tfe_cache_put_pending(const struct tfe_http_field *response, size_t n_fields, struct response_freshness* freshness) +enum cache_pending_action tfe_cache_put_pending(const struct tfe_http_half *response, struct response_freshness* freshness) { enum cache_pending_action res = UNDEFINED; int i = 0; int index = 0; const char *value = NULL; memset(freshness,0,sizeof(struct response_freshness)); - value = get_head_value(response, n_fields, TFE_HTTP_PRAGMA); + value = tfe_http_std_field_read(response, TFE_HTTP_PRAGMA); if (value != NULL) { res = get_pragma_action(value); } else { - value = get_head_value(response, n_fields, TFE_HTTP_CACHE_CONTROL); + value = tfe_http_std_field_read(response, TFE_HTTP_CACHE_CONTROL); if (value != NULL) { res = response_cache_control(value); } else { - value = get_head_value(response, n_fields, TFE_HTTP_EXPIRES); + value = tfe_http_std_field_read(response, TFE_HTTP_EXPIRES); if (value != NULL) { res = ALLOWED; @@ -298,7 +296,7 @@ enum cache_pending_action tfe_cache_put_pending(const struct tfe_http_field *res } if (res == ALLOWED) { - get_response_freshness(response, n_fields, freshness); + get_response_freshness(response, freshness); } return res; } diff --git a/cache/tango_cache_tools.cpp b/cache/src/tango_cache_tools.cpp similarity index 100% rename from cache/tango_cache_tools.cpp rename to cache/src/tango_cache_tools.cpp diff --git a/cache/tango_cache_tools.h b/cache/src/tango_cache_tools.h similarity index 100% rename from cache/tango_cache_tools.h rename to cache/src/tango_cache_tools.h diff --git a/cache/tango_cache_transfer.cpp b/cache/src/tango_cache_transfer.cpp similarity index 100% rename from cache/tango_cache_transfer.cpp rename to cache/src/tango_cache_transfer.cpp diff --git a/cache/tango_cache_transfer.h b/cache/src/tango_cache_transfer.h similarity index 100% rename from cache/tango_cache_transfer.h rename to cache/src/tango_cache_transfer.h diff --git a/cache/tango_cache_xml.cpp b/cache/src/tango_cache_xml.cpp similarity index 100% rename from cache/tango_cache_xml.cpp rename to cache/src/tango_cache_xml.cpp diff --git a/cache/tango_cache_xml.h b/cache/src/tango_cache_xml.h similarity index 100% rename from cache/tango_cache_xml.h rename to cache/src/tango_cache_xml.h diff --git a/cache/support/libevent-2.1.8-stable.tar.gz b/cache/support/libevent-2.1.8-stable.tar.gz deleted file mode 100644 index 2004f84155c20b25001a96d01845be2a0b824011..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1026485 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 z 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 `vP+v$sQlq-?W>BkttMnhl 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[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

NcCAkR}_ z5~vRTZKbzPqBMF8X$5$(a0BZ=H)1EaqJ<7ZR%T2@4Rq157RrBx!uT3jBd-P zD;Y(WJ4O&q4thyAgz27osKXVZnDVc?NHh`VMMsZ=2U$R%^#FVsfCy(|h9qaZbEv6! z?vm4hj#Co?(OhkZq);H~S+cuZY(*)RVp7HzWoIiDT7whLG9Ktl3pDwmWW|K428%@D zn{^6lQ=}~zLHozklil*P>h&sK8HjJCTrQYS1#Q?Kdd-T+&`AIZH{8M+ijnm`g$;!wWPgY=7N=#m6cysSK2>Nh8!s>B~+2xbL^qwfGid?8sfHq zVfuY#MgLT7Q(3#os@JG&OR zP2FQz)z(AcQ7kvzJC8zDyYD!J24P~CBy{OaMYBOZ@}fy2f|k*S`sLg{htJCP9ouJ5 zz#d1vQ+Qt7DXLp3{lvW9k4+uBGMNy$pPdpfDb*1Y#JacZv3LkYW}|n8F(6x#TpQxH zDO=)oZYoyVgJotHUi(FRUv4TbwoFEUhV9;A`~|(!@b1(9ZenY&S;*EA;T3&C+Jt$U zge;jiH54=q_3oH)LvqwnISDk1t&+ZIs?9(Rx@u1*r)GDrJd%Lz)!g{Q_hYEZGtk}x zI`MUCr8^35I7fhxedZQd`Cb^gtLSnT&rnp=$qJ*X%1h1Z2`L>(gMe9svc|H(1mrXCiOZTjKj%Ox&aI(DgY(1$=4fiySpc0@0z#~+*aJaIyltH zO_ou#YLXmYlm#kd;M!GugZb6gL^X(^;Z(rqQ9Meapm=F)uS>%8SZDK)lm-!On;tc> zhF{jmUPa0BeAyXlZ3X3aW4l^%sG0IL8sq3VU)3-tQ5IkrgWi}5YEA2G@y$upX^pkk zg~o;|KsHab)&}ciYItDWu$UX$s^%SlfUQbtA+y_!0O74;Q?#Dm$mj1xmIX3vZjDCv zKIjP=2o`YY>8Hv;*JJ{@I}}wTPH#eyH9SBNICRKn#A03exsRTtDd*5R`k@?E!>Ho% z34~`)If7FKiS~|H4)Hs5ME7;u#(QAI@x7)g$U0Th;;32A9!4;yAK{PX9pnkwm>hZi z;DVLsqxgpRFI^ndT{d4}qsTz^OfbjCTY`;rzZ|A2Y=B5_jCa2QMz{1?OJ*|bt4g6g zoqHdJBfoN+O!j;XQba>e`#*QXLED2u?gjxn~z$LzxaRs8Gm1YwQ(MeHj=B=)i=9;Z||UW!)kP) zQhj)}YwwaQ9-eRX!|RO^<}7NZ-?vq0TdGVYS1+Q~Z}6wiyB$tyq;x50V-@@R*{i+x zO8<~FsWZIwq;w8OxqphTFB%^*< z3xSJ4FT7RG2q7`#cUrKRwZ@~`W~1JCvh98Cot^FhYhrqg?olwa@6ls)i^7tpad%!~ z76tL>!j@}RSk(O%Exb;e82GybP^iz$ylP@AOR2q2|+W_)C?mSVj>~Y=wm2` zR}x9!m|_Zf2P&#yqCyX0!YgbBD-?}+ThaolR4HDI>;lTcl=JOy5~d2Yg688Ch+Y+S z&eV)DCD#R4@i;dAE2BRf$1>J1P?+k1pPf`~7r( z(ITQSPe#Q7)a_YOQg~abZAj>+lQ2~Y>rw5Y{J0c$3x-mz49m%yF`hcbx-(f2JFQZn zQ~ePOy$|LU)o16SI;oB*;7sHe&#NI#V@k?enpqjS0}q~yq|YZ zUUh$6T|JqN)U&RK&*-vA(@3_DD4>w5843xIXpgR=Nj#zptm|MB;hCFYkV>dGM89(U z+gEMeaw=)gf6F<0O``4%?xD6Z5ozBgwApYf&GGx$U!P8U4=;BSO;Ip)k2sAJ={pIM6Z#86kCW##sn4rtt>UgcWUcqtf{6n^Tvjl*|#i@nfTJmAz=l|XKb^V(U z8z0vGvCW$pDsdJ1O@RAof-ad|Ttx3{NYTiS0F_>52!SH_Ie`bTBVPob41Tp{gAa;^ z{=fD0jSnBz_}9iS^`HN@4l~) znm9>sG%ymx`)Cj$S;#M0Ny?1RC%9xE2^C2r z$gW+LnlL9s4u2lmz2nJQy8x)9V=JW+E7WVF$1^AR*8C;~@L0Qu<9htm=&gQ5Bp7S$ z$E3YSD+dk)MF@cD$dyly%5f+aJntK(_jZHwmck!#8R!FR_Y}R=yPgSf_BVQw< z84d)VR zr0V^;UWKZ(_p0AipH|nL&3v>G6(0e_v+IP|jfVI5I==xh?{vgCzUx8P=#zqcR7xFJ z;pxuW${Llxiz~{)l)fGfcGgz$?ViqFIAK?>A<04Kp@JK<+`}b7u7NWadZcNf?ZN5# z%mkjuzSLJ|m^f%>_r>0R`{k?Go&WRqgExmq$N%@FdwTZ6+aG`WpH+g~PH^6Xx|dhc zZ|?@fQ9S{xZ{FYjYqbyD-89*0G+Ucnj~+ky?)z0rA-(g>@6`6kZ+@pHK9atM zQT<;GS7b|oEPgPaGKZ3R$g7?12iwY4GOk@!Obh2uW7dcw-SA%5{2z0Fr2P3h zWjP|bj!S0e8|T5K9((4G^WVJ7nC=*@9lUzJ6Nsmr&TBL6Z4@53r1CmaDk z|L-rq(DAkQ&F{=G)u^?PYa0(fY$qRnssB=@W8s&|Hy`T9zclgTF*NiI{0k@E$JG=I zp~v)x?o^?uoIG^Uq-}20Pk(7{U^}ZWv_^cC1fzg++O9cuOG=s1`s!t`hgZ%!UOz~# zhV&I1=prpg@Fx@}jY$vXVU>VC_=>NCkZsd>XtgErTReU+t@02vBV%q_8*BIMSA1{=cu=a+qc%e_pA7)Ap$ zoZjsv@>Bk7rzBs!+6?inR&oz@m|XXU$!#)sm{2G}^ZDL*OxSR<0j!NQ4}cma1F?0- z>i>t1Jj^aT5x*b2R2#rRYhlt0m=TmGY`ZVk8bAkbf=QnmG2cSl$;EAoOvt;*9_Pgqb^=5od1($0ML8#-!=8#lj2FgAM}jrc3!;k_BQq&KJ@lvJ0w_Q z+-^Qpupr`W7{Vjxabs zY$2lS^4gny_>ZUrDp4<{qKSkF0i^-q22+a+frWw^X9$VuY(x&(I&-7f`|f+PM;}iy z2`O2ClX*B#C?T(HtS-DRUFQ%}qBcJV#@xn`Jwac>zEKM*d}(-#_0wz$+;Xc<$~05V z1nLOnxgXzPtPir4XXAUS&T0=$RXJSnQ*3W2@(3Iq-@e@Kp2F$*Evo+})81^#2JE=> zWK%P_#D$JUn}gydJW>K?tyke#DkGQ@to+}ADSUHk9M=lm2wv-WgkR83$rG^?gwAY3 zb^($^i8H;5E~bFtRML9#jT-9+xkhY*6HZTeNE4uT%{TbStHF9S3=zT2m?}*IR$)#Q zc+~6MOpF>ZT*P@o`K&@f5R&DGK+J40uuT$DJiV~CS%2@n+S}7-SVDM+G>X#lP$UUV zpq>_BTGn~yPv<7k)!U^}g zQb-{lDW>5jTLSFpR@ys46z4=^!hV9v&9taGDwen0M^SJIuFB@jLjC}4rw+8&RFi0HIDGK>m8wQxI@>Oe@rH_K6ADfe`kgQAco&4>$<{Qa@&w9z3ZNrP!$2Tl|)@h9@kE zpqpX@sFn&7oX?le-dmtFq+0^cU$*QdJfB4aCXPIq3Ww2C`jm(gp}~=i`F5cZt>Cle zT8f@$%m($daSU8wpZ2gK^KfPo6A&em)>CgEf)t5%qO>NJ6xK!Z8Hk6y7zfj)e2V(z zqmiUu3(*#r+Ez>eRp3oYDQ~XGC+mhnB~Jji;YkcIRdWdy#Q|TofuS;q5+k730>Z*Dv9KM2BA8b;KecBi%h&V z_+ROp(IBT6la2Pl+=svXf(mE)wei2-Z1mSyW%i-IF0|pB4S%=5Z73lqSldPfkynfYankWj z+_`yCJMXZ;M)wBM7~K!qrT|rxcy})0hRP-tog&p^4ohsr&qHaXH=xBuo(MMVfQSaJ zzC?!Lr0!L`NAH|;exxTi)DWL((hABtQYQ^OikG$Tp?qp}u2r;&SKexT|5(WsUvuM+ z>n-e{>V4PzzJ*jno<34U8>tb8Vk0SwV*Fsw+tLcond%^4h4f5H3Cq0p^;3|K*7EVb zq`GnFV6&`KUxGqpXas7{$Lbr*2DxOa z3!X$@Q*mrk=kfIi&P)-xrv|5z9sfe*|2%RCLeGCWJq)7v70od2Q9;acv**%c@}ZgJ zT`sf(mF z?Tm{6n2ME6sBYc1)xDVJj_5Wuy&}&joxb*d5Yw&43;_Gq9^Dy$PSPp}b8Os&Ywd%) zNbi-+H%lBqDY`Xx@RFY{tLwAOyVj2T`6kt=L+h{uj1nTlpbpK%{-rxBe7Bi*b*s3U=oF^(8@}48BmnwaV?x1C_O?yHu;EPv2jYhYy zx}f}2Of1~p*F=xhjjRn@{{a_tID^qZ#JbiKDXZy zJH?wxFqR{_tTrQTJk&LBUq7342Ihzh$ytx+AnLw2Sg*hr~X>HrMq&U3 z(NvRXW(WXf8=K#6^@58h)K005kEAt(Fd#yS^c9N5%EahriLtR!oawoqiUctAw@QU5}LeAb!`;@BF@tfnkW5`=NNM8kX;T0 znjQ(NM`2sA%c>44ih4X;hrnB-;XhrYMlu5VZFN~|2pafEnGSj0`Y&Z*Un=nV%Qqi> zX+HfhUZf$J$ApO9gVS9peu0gQb<{rVCKJ~zLc2T6B3c!UBvT46M>Ea5JB|tbzW-8TM_AZ4qnW$HVPwoR~(D+gjUrb6rfcI;Op`bR1Z^FY9e8p)C zyCRwkyyGYAq)GK9x(YKkD$q?FPtD9WOdJ0?Hv))YJfA3V z)UBZ&yDyi03>TVQA8$P3x`T}qD;LX_RoJlpDj&?8spvPl0;BUZRsNAxwuud_vnEwh zdR5Q!pvL5`j9g*~xyR77Y(s`PzLK~u66i8TLA-Az4J9u-QziB%2MKsE2nReiwAVNz zTM6{*$5xXm3UQaWDVc-aIi%Q1@n}^ExilSvERlgOw18He0+Sm4CJh&$iy=#{p#eCI z4KEGw8Ymc4IhGH0F&hI8fEX&K-jg9T2sNbXHN*ZJPe-rmwY=u0*L(!OK+4D1=gCg9 z(ZDlt=Nt6|ezChVACi$*yPV<)*;giXLu{P2b3`D|rECpwzD9PVKcK#u0zX_~ zY;{yU8|Wv)g)=dTrn-6>yYfcju4-e*gk$qzVy%!;smHUa8lwU7THk~ju+Z*>AP5Y? za7?Sqf6>lA@E(H-d(D5yb78%OZE=;75`=s;3r{q&1Z4*{r<6Jh%MhG;Izmrhm999EZL4nO?{ zfRq=X;R=Aw{M0NwW)r`u{?e>&D~10y>H4=trN8)^;2tXeR;m#yU5!f=%KKk|1cT6Q z23Z8MaJIMSmG>S#tk6omK86D|3Lb9>R5bg>w{9FBcLe7On}ClgeIY_M#!$?hP>4Y( z+#8=X;u#`V?Fk|8Lljs0+vEg?Hh@X)IzC7lBoWBYv)NmJU# zjCVcl0|2+ys($mkJ~q{9y79l>`o>27vG>a_s5#HSK)reP>DYeoaczOrdOz)YenCim zh8rm*O{cuCGK%VbHVoqXhn&lDKrVUI1iR${!C3>2n)E8MD3FNlbSk=;ma~cjhzM{0 zU8UKh_{Z&pdY7yQ%P0}}be<9e(1sIi4qU`P~1NnDve6p>Q-Rg~n* zYy|sjQk>+NN6<|L#7Gj!fdDy%2Vwty^kq2$^R;&%29N2558j%gTrpLYG|>*GEwqoE z1UN>f^NG6b!qd?ZhD}l1f=iZC0gyPlnI|_8DaC!Q=Z8S zZa&C(d`Y_t*i$zh_ESuDXr;|3=9=3jGo@04y>HAnbgC99&o6-&MQ`7=|7H7bc9%o| zVA-eMTCVPYf|(yH%@fXdPC*68Ylb~edecM)m=+^H%9}*K1AKF9`VZi`iaUVt;-Vlo zn>X))Ws$#TT@#V03155|R$G|rc1Y=*5=x<@+)#-Kn-{3(R!zyjAJqIi{lVpsg84eS|5r$V5kD#M2a5&wxwOy2TI6-B|MpG%LypA_0>#WGbr zKcesbS3BO?kF^@P`^ZGr3}qqtV60l|K=p{vQ9Y(LVDp8h693+L+1)9TPI?JE(&(HL>-wF`)5NT2`IqE8OpGSQErlk%>Y3iT%DImYdBfH3jR1o+nfg|m*xl43 zPKuQZYt5WHY`KFAY&aW{l6D-JSeP!tT}rQ~3wcK;3vhr{{N zONYFgzC~FNIQAWMK?Xi|6c>{^DXPfbC^iXJskChoHPtRmE9WGqxneZB&(7RS$3g92 zAnVc0y2BAiPIACgw0D2~L#;EPgvtQba9|H&m>60hu{Gc%ZW>HFx_o;356H#qYRJ(l z31%EuQ`%!T!&XGWB;k;Aq-RR+cUkJKAt|jG5HJ8&(?qCpmm?!HU-K}az)wC$%h|~V zF;L+INENwJ$EYBNlmhdboFoj})q`3)j43z?``BED@5M1%oyb*+;g+D+&Xf-`AjWI;HKYu1;ti3X zNpFxavd=GNC3USo{iX8Zm*$7kA3^QKvh0t#Mru}D{j~y0Zyg7JCi%C2)z3-yfaJC} z9{-#8+Amz}e;60bYPYtHXCpzzuf3leweNqWf7ZPchC?Y~IFu4dzFzY5sYg=s({XC> z@1-7!P@V3*@79En%WvQvJpbnD)3xQ;#3d9sPEImY#-)znU5R(X-p0l@-Qj#gU+&C^ z84)eM?7v0(Z_zf(uq>ap(Mq*f!_tS+2K`%m714M6xAs3B{0{$CQd=2oGp3J?X0yMt z`+5G3UaBpd15x|fFpSdilTg>SU^miU{H2Neut070xprZJ!jI0jZ@q7S`NjM8QXPh3 zl0k#B6mvLErGYT8FHc>4%~!+yKcIyh0ajI3B>=o&IX))@W=NlnFpKO+ zI}@j&VC;xtMpRCE(!gL>2Nc!)hcqth*F@r;vPpD}r?rX}(zS@L---Wv>b2lmcpVI$ zdS#5{eg&ZM)`;@eD4G{ONW3*PiNiSS!!bsFPJh+NUFj*Xo>l%R7w1LE;@x;_H~N3lA}F&Kq=Yx=Bz@UFU3GR%mf7hb9KVFpAWUPcWk~d;Sj5 z1Q4~tXd=vE=sBfdKe~t{;4Rs%jL~R+%C>>=bwp7|Rj7%J7?Vxm(W8S1QKqthWB5G9 z@6CE6oC?-XH*K zJE8nnt^7dHbu@*D8i zT@RZcCcz9=bz-D!!K05LK z@sHguyk1-Lb`SR{Q9}F2;}cABaCCz0blw~vbfA``Pw2F}Rgd#$bq-%uy%%Sv-r>=y zchGs$IfY`UM^$P)Ukw{OdYQ|rfW0nCtKi`j_B-9ZgWb-X_CA5Wa|r!IZBUFsfM0pLIhoYYyjLtvszW+!LIr=6q2iud~H zEkFTAx(l`U37$uXIA_L!_R+~t*fhd}AYS#}zHYFk}F#h}a6 zqZ683I$!Uw{pz6es(rZE#sWv!(A!S8U4b>~bg@9^P||Hcw`VkWTo@RehoR*&h*_l- z1ewy?-T$G3*q(rrvMyKwOB}L;g zr(|_6kKenvyyFtVoI!{RE{T!waMpk2EanDyk15aFQ2@P>Qb#ydicgW@5OB5yQwD zRgy8Q{P8G;!WNa0z#*Srf(lEyz(Qx1?vo># zUM1SAWcJR}t4iqYsgWuxNGxKh7t_Q7&KR{e2_=pd>=U{y#LyR2IjPuvOoRDT*~rRir)aNr6=c4l6mV_}ga z0Z}SGwR}2}eZ>suacA@Hrv1P!p3&K;mU%z4lGg_qd=-N;5RBI-gV9JO$u^QHXXi_q z%ZEJDpkF?(jw+b`n3F26NZ#c0O6_@i{(7|?uRN-7Qe`_&a%NaeZa;Bc)X1EH8O(ql zS!Q6%WCmU>*8hap(<_=j<*BasK3z3Ztp8~>9=A3#`k$>Y`CtD{`kyblpD((fFS?&E zx}Pt)pZ|2-Peu{Lr#N$;sE{!W@Y5P>nQKhhhw2)|AH3}xZnm^0iGSk1ho`{YcyEB! z18LB9_v&c&Zw~{<^@2e+Br$Mz)bEa?(Ox`5W-jG)%vQa|`^HvdQ?Vd=l+S=(C2{Xv ztA6!dSLAvJ?cGBkmeqd)U+fzF_$HwWGaCN<^2u$oArWn;jxa--Ek@Q0o&L7-z-4Yo z0H@v!&HFJM;9S1oHQmCRuk?Jo$DKoe@8}G`1m|!A$40rpDCExis?C-8I2WI@0G74L ziw~!_;}CP*t?Zq2fRgMU_+8lXuvxryideGa4Tm7;!y(ZtqwpVJl(Qu(z;v%f7hd@* ztWg2Z6Hdz6WaJ&59URE3rSPDP^{d9rD&EeH*QlT_X9b3V*_){hc9`kpg&RKaYbdo1LhQteK^%*!d{kqOG{-5=V3yl`^j$o(IH z(&O3MwYDb|-97Gj<#l6QDAr8blK2;+O8Ge766~)XL3(NO#nI70+GH04Amv)y>r#8G zD~=Z7{LMnV>g~ThI@yQ)XLn_f{%!Cs+#L*-ANu0v?$Op9bVGjkI+&35BVAwMsP=)| z0cjQ$iSPkU!Q#FF_Hq!uCIwabwEg30x%3XmZa4s;wm%q@G?}9s+je+_ftu0T-g?e_baT?1RIdS6pvKy0iy2Ptp}RHkT^b%CO_u?o1}YW$y% zo9H1n2i4&9>I!9AF2)gTqG-)&V*yj~Bm8-7iE=0xA}T0el#p($Ptn{*A=-&T19%6- zNqC;JfHNEQwA2TJ%|B;hLXu2B>XU;i8nh|jwIASnAdxfH(36ZpEF8o^AD4_=iRIp5 z&RMIljt@;uMes4D%wigs!)R}vl;N%eH;?`L$i+JOBX|DVm8nunD)Hx{6H`sfI5hE* zzi2X4h%O)`CzEmv_A#J|FUfcV@(ennL%Aaq#V)8f{>wq1H^6sdE~c*$N^yRjnqQAlO;MS!I?AY zbtV8zP|8JAsJMX&{Cxt~{{Y*lJrX5%H^bKhJKi1%J9uSM(uHow%8JV{Fv(;-PQ_y|A*&@QEy~ev&ROJZjvX9J^`pqIEX5 z{Zdoj8^np?iVO&wlFhQzIZv8>7j3@744iUFW&$}nUbG(OW)#Bk@L{I#wp!qH@g6>e zhuv_>sFnedQ&Pzc@D69eCmjTLfa_uz(;`lOF!jkIUEZX)-;^hs#1n~C$BA(aAW`?@ zNpxvFqef3748IJt7r$)Vr;VyI_uN?yPtvtc(ZDf9$M#)ro#%_KxI8jfmJv>)-aDp` zI5@o6Ln1|hn_$8qBt1Ckw=me3@uW)$e2>Us#Y94NSS|$u0&RACASb^fH^Vm7`fA68 z158d=YPI~02I1P--4*FRb&9C3;j?d{j(i~;L=Juh32-0%rhIU5La9{ z?A*Amft#F-Fk!Bt)QqjRf+rgN2SezP1V$lhqNyZBSGEb1K16zF*4>FqsX8we2rwo? zd>;32d2}~dv5JsKRc7ODMEG!umC()s12`dOOE)Vg_|i#yao{lbr|@kVI;`)+Wgf+p zL+{yT&!4X{tA)g?c-%`76FD^$6aJBmE7CJ#mV~}2y?uU^q#BUyNx<4+;Pxm)lh->( z+#tQ5QXd{1?fu=~J?{8Fv`@OIAj-Zx{pq;vpS1VR;Pnq}d|j-8E_#d1M8P}9W7Z|Y zvH>*mQ_@$R=DhH9b4)IkkTNqYWUz}~7R6zQ|ZA;$55`>di1367w^#* z`=5X3`cJ}3)MkIG_16OXuh!Pq)}zO`{;ei_+1zZR{TCp@7yGY&qyOJ#4gPsz+kibA z)92rMK+Ed0Vbr^-hyB@eXZZab>NZAW{`_!I7|J{)`N@7Z8v%9f+s{Vfw14g#)kSYK9V~7X zS_CdH_biIDk0#18PCpALlToG^W^kHhrqaVTz()m(mo<+|-}o%^&MAQ5nF4o#X>jR$ z&ORk`Ud?M%IkaY8+|Sf+5MM5D1gPIB##{EG6WMg3%Wy<3%kB|wZFf(bDQE^RM zk8nxpz6T~l##JHSZ7Kj@AO;56S$!NBP)-rr>|TN&ne1V=xZ2J_*u;#yLIBa8^E z-w|ZqGo?+RPJPTci2kc+_)sE`x3bb8RZ1Ci&IGvI-j#>YtUcFwfw|c5Ek)mIJYB(S z2Tl`#MV@-$`!PqfWrsQ%u-Cio4MNext6@EdVaXi^s;Y3r=@5s>Wx3P_7DG&~uo-Hw z#5W|ATZF36IGQ{T@f5ZO0*!2Aa?x>7_g0sb!v)Ob?T$VsYAMCX1u-~|ZTHb(Dfe-OuGLTP?|E*PIf zQ_hTazg_#$Ndeef@a`lax8*ghWEzV%xf6I(re78Bq1V*blvrME<#dBK(o1-2*Jj2& zgcXWDW#n0^3BAB87Zq!^zLO#2Nd;3NT-))8ddm*Ip)Cqy<|^h>uO=s49z^&a+QZjX zY&8!W+Lsp~f{vzWhy!x#r0SKvO`dWqzl=&%&-c;P(f9R5ZhBnOc1W>~5l-(;!bzUf zj+(NbrgMT!M6PC2VB|+Mh4v3;r=0`8`}*wEe|vJjArS31YUl$YCI8`dp8BW6|6?I` z-1B5x9yv6j{%oB5^{{Wy%c!hg_TZ&(z zqdT;5(GPCR4}@*AX&@h?n365KO2qe&DILNu&*}g-e-2Dp{}WMy`d+7h6;9}59|*;r z*`Uvc6RYN_i{q<3CrH>Uo-XbKF5_5Zy~H02Aoz(S_dXyrfM!hmxo1o?rM|{PY+)D< zK{_ZC@YnvirYLQm98(D=8NM44&hOPlB-7fb=Hk^pW%1b3f|3vPCUK(mqmytvKpnV5 zBf!kOqEj7&mjPxO!XU^u6XbCuj)&o>2e6!teJoObU-5L{0rYktni7qCZidSE(oDsO zPjGtbzufH{l*^?9qrYz@Q81M!Z9G&P+yZRhS2%Wo0@I4_@Z*Z{-H2?U#!9IR)o3f` z&`a{FRLKxA95XXTv~BaI6N=c7Y5Nc1; z%`iO#7NC&Xr~1s|qalRCG2LJe(G;_Z+u;Es4;5`vQ6IH#RnL|PtKI`XNiyg+5AoC~ z6eVL!p-`rN?S;sZ76a-GlskZ3!iLX*JC#s?cR_%G1u$aULz^Z3vtW=Sov+!KdobiM z$cGP8@wZi3z({8hUiV$F1n~&(g>K^e;y=zc z>JFgz8M>oZJ`*0|v5OgS{T|wW_gNY<-i;^WFaUZ$g}=bye7-WaZ)`hom}+wy{)Lm* zN)!&?Tm>41$J2?)4eG+{>lb~rV}kcEBRD)>9PHw42%H~iqmEJWDm+)JNBwf;GS-BJ zpZB&&Z>6BJQPRXlfEyy=sQlA->l=Sv7RNJq(-;6s(I+sP*p|z%);k{ z1_q=4mb4x`Aou}?DhYQy9+vYebICFdqil~H`3v0cbYG61Tya9TvoH5KFr_gb@BYkuVY)Pg5y_Xf{k{XRPC ztxsbHENQ(n;@%{@-XX^kSd{cD6_=me`6zWLeeg9#^hJO|2``)xK-2#M`W~rwDG5vo#NU1C?Y{IohwanVuSuPDZmlK$=%Aco GXM2 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�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

Jgx0*YA2hQJwN` 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

KoXWwH;71*!tyA9ZvX;-`|AZG}eZs~ElxQ8^Ke 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

2KEZ8nF>3Fw(YSn-3!pwtC5`}YF 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

1quDZhdZuw2c%T>A*8bI5|B+`SNe> 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


I?vgi#wAa;QxysNGv>x}26($;Wa?KzY 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­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
-WMTZK{z*b~1cW%O_;ndnbjV(2#KT1hC> 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 diff --git a/cache/support/wired_lb-master.zip b/cache/support/wired_lb-master.zip deleted file mode 100644 index 3242d952b9f6030bb625dfe874f00f27186ca295..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 194042 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 Yc)Pc4#G`L)pwG!|WXQ$JWy10Q0K3#s#{d8T diff --git a/cache/test_demo/Makefile b/cache/test/Makefile similarity index 100% rename from cache/test_demo/Makefile rename to cache/test/Makefile diff --git a/cache/test_demo/README.txt b/cache/test/README.txt similarity index 100% rename from cache/test_demo/README.txt rename to cache/test/README.txt diff --git a/cache/test_demo/cache_evbase_test.cpp b/cache/test/cache_evbase_test.cpp similarity index 100% rename from cache/test_demo/cache_evbase_test.cpp rename to cache/test/cache_evbase_test.cpp diff --git a/cache/test_demo/cache_evbase_test_threads.cpp b/cache/test/cache_evbase_test_threads.cpp similarity index 100% rename from cache/test_demo/cache_evbase_test_threads.cpp rename to cache/test/cache_evbase_test_threads.cpp diff --git a/cache/test_demo/pangu_tg_cahce.conf b/cache/test/pangu_tg_cahce.conf similarity index 100% rename from cache/test_demo/pangu_tg_cahce.conf rename to cache/test/pangu_tg_cahce.conf diff --git a/cache/test_demo/tango_cache_test.c b/cache/test/tango_cache_test.c similarity index 100% rename from cache/test_demo/tango_cache_test.c rename to cache/test/tango_cache_test.c diff --git a/cache/test_demo/urllist_get.txt b/cache/test/urllist_get.txt similarity index 100% rename from cache/test_demo/urllist_get.txt rename to cache/test/urllist_get.txt diff --git a/cache/test_demo/urllist_put.txt b/cache/test/urllist_put.txt similarity index 100% rename from cache/test_demo/urllist_put.txt rename to cache/test/urllist_put.txt diff --git a/common/include/tfe_http.h b/common/include/tfe_http.h index 623284e..ef1cc68 100644 --- a/common/include/tfe_http.h +++ b/common/include/tfe_http.h @@ -303,7 +303,7 @@ static inline const char * tfe_http_field_read(const struct tfe_http_half * half { return half->ops->ops_http_field_read(half, name); } -static inline const char * tfe_http_std_field_read(struct tfe_http_half * half, enum tfe_http_std_field field_id) +static inline const char * tfe_http_std_field_read(const struct tfe_http_half * half, enum tfe_http_std_field field_id) { struct http_field_name tmp_name; tmp_name.field_id=field_id; @@ -316,6 +316,14 @@ static inline int tfe_http_field_write(struct tfe_http_half * half, { return half->ops->ops_http_field_write(half, name, value); } +static inline int tfe_http_std_field_write(struct tfe_http_half * half, + enum tfe_http_std_field field_id, const char * value) +{ + struct http_field_name tmp_name; + tmp_name.field_id=field_id; + tmp_name.field_name=NULL; + return tfe_http_field_write(half, &tmp_name, value); +} static inline struct tfe_http_half * tfe_http_allow_write(const struct tfe_http_half * half) { diff --git a/plugin/business/pangu-http/CMakeLists.txt b/plugin/business/pangu-http/CMakeLists.txt index 27ac4ee..72dd6e3 100644 --- a/plugin/business/pangu-http/CMakeLists.txt +++ b/plugin/business/pangu-http/CMakeLists.txt @@ -1,5 +1,5 @@ -add_library(pangu-http pangu_logger.cpp pangu_http.cpp pattern_replace.cpp) -target_link_libraries(pangu-http common http) +add_library(pangu-http pangu_logger.cpp pangu_http.cpp pattern_replace.cpp pangu_web_cache.cpp) +target_link_libraries(pangu-http common http tango-cache-client) target_link_libraries(pangu-http librdkafka-static ctemplate-static cjson pcre2-static) target_link_libraries(pangu-http maatframe) diff --git a/plugin/business/pangu-http/pangu_http.cpp b/plugin/business/pangu-http/pangu_http.cpp index ac7fb68..e93152b 100644 --- a/plugin/business/pangu-http/pangu_http.cpp +++ b/plugin/business/pangu-http/pangu_http.cpp @@ -1,6 +1,7 @@ #include "pangu_logger.h" #include "pattern_replace.h" +#include #include #include #include @@ -62,6 +63,7 @@ struct pangu_rt ctemplate::Template * tpl_403, * tpl_404, * tpl_451; char * reject_page; int page_size; + struct cache_handle* cache; }; struct pangu_rt * g_pangu_rt; @@ -151,7 +153,7 @@ int pangu_http_init(struct tfe_proxy * proxy) const char * profile = "./pangu_conf/pangu_pxy.conf"; const char * logfile = "./log/pangu_pxy.log"; g_pangu_rt = ALLOC(struct pangu_rt, 1); - g_pangu_rt->thread_num = 16; + g_pangu_rt->thread_num = tfe_proxy_get_thread_count(); MESA_load_profile_int_def(profile, "DEBUG", "LOG_LEVEL", &(g_pangu_rt->log_level), 0); g_pangu_rt->local_logger = MESA_create_runtime_log_handle(logfile, g_pangu_rt->log_level); g_pangu_rt->send_logger = pangu_log_handle_create(profile, "LOG", g_pangu_rt->local_logger); @@ -196,6 +198,7 @@ int pangu_http_init(struct tfe_proxy * proxy) "./pangu_conf/template/HTTP451.html"); g_pangu_rt->tpl_451 = ctemplate::Template::GetTemplate(page_path, ctemplate::DO_NOT_STRIP); + g_pangu_rt->cache = create_web_cache_handle(profile, "CACHE_SERVER", g_pangu_rt->local_logger); TFE_LOG_INFO(NULL, "Pangu HTTP init success."); return 0; @@ -244,9 +247,36 @@ struct pangu_http_ctx char * enforce_para; struct replace_ctx * rep_ctx; + + int resume_from_cache_query; + enum cache_query_status cache_query_status; + struct future* f_cache_query; + struct tfe_http_session * ref_session; + + struct cached_meta* cached_header; + struct evbuffer* cached_body; + + struct cache_update_context* cache_update_ctx; + int thread_id; }; - +void http_repl_ctx_free(struct replace_ctx* rep_ctx) +{ + for (size_t i = 0; i < rep_ctx->n_rule; i++) + { + FREE(&(rep_ctx->rule[i].find)); + FREE(&(rep_ctx->rule[i].replace_with)); + } + if (rep_ctx->http_body) + { + evbuffer_free(rep_ctx->http_body); + rep_ctx->http_body = NULL; + } + //todo destroy http_half; + assert(rep_ctx->replacing == NULL); + FREE(&rep_ctx); + return; +} static struct pangu_http_ctx * pangu_http_ctx_new(unsigned int thread_id) { struct pangu_http_ctx * ctx = ALLOC(struct pangu_http_ctx, 1); @@ -257,29 +287,40 @@ static struct pangu_http_ctx * pangu_http_ctx_new(unsigned int thread_id) static void pangu_http_ctx_free(struct pangu_http_ctx * ctx) { - if (ctx->rep_ctx == NULL) - return; - - for (size_t i = 0; i < ctx->rep_ctx->n_rule; i++) + if (!ctx->rep_ctx) { - FREE(&(ctx->rep_ctx->rule[i].find)); - FREE(&(ctx->rep_ctx->rule[i].replace_with)); + http_repl_ctx_free(ctx->rep_ctx); + ctx->rep_ctx = NULL; } - - if (ctx->rep_ctx->http_body) - { - evbuffer_free(ctx->rep_ctx->http_body); - ctx->rep_ctx->http_body = NULL; - } - - //todo destroy http_half; - assert(ctx->rep_ctx->replacing == NULL); - FREE(&ctx->rep_ctx); FREE(&ctx->enforce_rules); FREE(&ctx->enforce_para); - Maat_clean_status(&(ctx->mid)); - assert(ctx->sp == NULL); + Maat_clean_status(&(ctx->mid)); ctx->mid = NULL; + + if(!ctx->sp) + { + Maat_stream_scan_string_end(&(ctx->sp)); + } + if(!ctx->cache_update_ctx) + { + web_cache_update_end(ctx->cache_update_ctx); + ctx->cache_update_ctx=NULL; + } + if(!ctx->cached_header) + { + cache_query_free_meta(ctx->cached_header); + ctx->cached_header=NULL; + } + if(!ctx->cached_body) + { + evbuffer_free(ctx->cached_body); + ctx->cached_body=NULL; + } + if(!ctx->f_cache_query) + { + future_destroy(ctx->f_cache_query); + ctx->f_cache_query=NULL; + } FREE(&ctx); } @@ -375,7 +416,7 @@ static void html_generate(int status_code, int cfg_id, const char* msg, char ** { ctemplate::TemplateDictionary dict("pg_page_dict"); //dict is automatically finalized after function returned. dict.SetIntValue("cfg_id", cfg_id); - dict.SetValue("msg", msg); + dict.SetValue("msg", msg); std::string output; ctemplate::Template * tpl = NULL; @@ -392,7 +433,7 @@ static void html_generate(int status_code, int cfg_id, const char* msg, char ** tpl->Expand(&output, &dict); *page_size = output.length() + 1; - *page_buff = strdup(output.c_str()); + *page_buff = tfe_strdup(output.c_str()); } static void html_free(char ** page_buff) @@ -400,20 +441,40 @@ static void html_free(char ** page_buff) FREE(page_buff); return; } -static int is_http_request(enum tfe_http_event events) +static void cache_query_on_succ(future_result_t * result, void * user) { - if ((events & EV_HTTP_REQ_HDR) | (events & EV_HTTP_REQ_BODY_BEGIN) | (events & EV_HTTP_REQ_BODY_END) - | (events & EV_HTTP_REQ_BODY_CONT)) + struct pangu_http_ctx * ctx = (struct pangu_http_ctx *)user; + struct cached_meta* meta=NULL; + if(result==NULL) { - return 1; + assert(ctx->cached_body!=NULL); + ctx->cache_query_status=WEB_CACHE_HIT; + future_destroy(ctx->f_cache_query); + ctx->f_cache_query=NULL; + tfe_http_session_resume(ctx->ref_session); + ctx->resume_from_cache_query=1; + return; } - else + if(cache_query_result_is_header(result)) { - return 0; + ctx->cached_header=cache_query_result_get_header(result); + ctx->cached_body=evbuffer_new(); } + if(cache_query_result_is_body(result)) + { + cache_query_result_append_data(ctx->cached_body, result); + } + +} +static void cache_query_on_fail(enum e_future_error err, const char * what, void * user) +{ + struct pangu_http_ctx * ctx = (struct pangu_http_ctx *)user; + future_destroy(ctx->f_cache_query); + ctx->f_cache_query=NULL; + tfe_http_session_resume(ctx->ref_session); + ctx->cache_query_status=WEB_CACHE_NOT_HIT; + ctx->resume_from_cache_query=1; } - - void http_replace(const struct tfe_stream * stream, const struct tfe_http_session * session, enum tfe_http_event events, const unsigned char * body_frag, size_t frag_size, struct pangu_http_ctx * ctx) { @@ -455,7 +516,7 @@ void http_replace(const struct tfe_stream * stream, const struct tfe_http_sessio { char * rewrite_uri = NULL; size_t rewrite_uri_sz=0; - if (is_http_request(events)) + if (tfe_http_in_request(events)) { rewrite_uri_sz = execute_replace_rule(in_req_spec->uri, strlen(in_req_spec->uri), kZoneRequestUri, rep_ctx->rule, rep_ctx->n_rule, &rewrite_uri); @@ -476,8 +537,8 @@ void http_replace(const struct tfe_stream * stream, const struct tfe_http_sessio FREE(&rewrite_uri); } - enum replace_zone zone = is_http_request(events) ? kZoneRequestHeaders : kZoneResponseHeader; - struct tfe_http_half * in_half = is_http_request(events) ? in_req_half : in_resp_half; + enum replace_zone zone = tfe_http_in_request(events) ? kZoneRequestHeaders : kZoneResponseHeader; + struct tfe_http_half * in_half = tfe_http_in_request(events) ? in_req_half : in_resp_half; struct http_field_name in_header_field{}; const char * in_header_value = NULL; @@ -520,7 +581,7 @@ void http_replace(const struct tfe_stream * stream, const struct tfe_http_sessio char * __http_body = (char *) evbuffer_pullup(rep_ctx->http_body, -1); size_t __http_body_len = evbuffer_get_length(rep_ctx->http_body); - enum replace_zone r_zone = is_http_request(events) ? kZoneRequestBody : kZoneResponseBody; + enum replace_zone r_zone = tfe_http_in_request(events) ? kZoneRequestBody : kZoneResponseBody; rewrite_buff = NULL; rewrite_sz = 0; @@ -584,9 +645,9 @@ static void http_reject(const struct tfe_http_session * session, enum tfe_http_e response = tfe_http_session_response_create(to_write_sess, resp_code); html_generate(resp_code, ctx->enforce_rules[0].config_id, msg, &page_buff, &page_size); - _wrap_std_field_write(response, TFE_HTTP_CONT_TYPE, "text/html; charset=utf-8"); + tfe_http_std_field_write(response, TFE_HTTP_CONT_TYPE, "text/html; charset=utf-8"); snprintf(cont_len_str, sizeof(cont_len_str), "%lu", page_size); - _wrap_std_field_write(response, TFE_HTTP_CONT_LENGTH, cont_len_str); + tfe_http_std_field_write(response, TFE_HTTP_CONT_LENGTH, cont_len_str); tfe_http_half_append_body(response, page_buff, page_size, 0); tfe_http_half_append_body(response, NULL, 0, 0); @@ -623,7 +684,7 @@ static void http_redirect(const struct tfe_http_session * session, enum tfe_http } response = tfe_http_session_response_create(to_write, resp_code); - _wrap_std_field_write(response, TFE_HTTP_LOCATION, url); + tfe_http_std_field_write(response, TFE_HTTP_LOCATION, url); tfe_http_half_append_body(response, NULL, 0, 0); tfe_http_session_response_set(to_write, response); @@ -739,6 +800,86 @@ enum pangu_action http_scan(const struct tfe_http_session * session, enum tfe_ht return ctx->action; } +void enforce_control_policy(const struct tfe_stream * stream, const struct tfe_http_session * session, + enum tfe_http_event events, const unsigned char * body_frag, size_t frag_size, unsigned int thread_id, + struct pangu_http_ctx * ctx) +{ + if(ctx->action==PG_ACTION_NONE||ctx->action==PG_ACTION_MONIT) + { + //ctx->action changed in http_scan. + http_scan(session, events, body_frag, frag_size, ctx); + } + switch (ctx->action) + { + case PG_ACTION_MONIT: + //send log on close. + break; + case PG_ACTION_REJECT: http_reject(session, events, ctx); + break; + case PG_ACTION_REDIRECT: http_redirect(session, events, ctx); + break; + case PG_ACTION_REPLACE: http_replace(stream, session, events, body_frag, frag_size, ctx); + break; + case PG_ACTION_WHITELIST: tfe_http_session_detach(session); + break; + default: assert(0); + break; + } + return; +} +void cache_query(const struct tfe_http_session * session, unsigned int thread_id, struct pangu_http_ctx * ctx) +{ + ctx->ref_session=session; + ctx->f_cache_query=future_create("cache_query", cache_query_on_succ, cache_query_on_fail, ctx); + ctx->cache_query_status=async_web_cache_query(g_pangu_rt->cache, thread_id, session->req, ctx->f_cache_query); + if(ctx->cache_query_status==WEB_CACHE_QUERING) + { + tfe_http_session_suspend(session); + } + else + { + future_destroy(ctx->f_cache_query); + ctx->f_cache_query=NULL; + } +} +void cache_update(const struct tfe_http_session * session, enum tfe_http_event events, + const unsigned char * body_frag, size_t frag_size, + unsigned int thread_id, struct pangu_http_ctx * ctx) +{ + + if(events & EV_HTTP_RESP_BODY_BEGIN && ctx->cache_query_status == WEB_CACHE_NOT_HIT) + { + ctx->cache_update_ctx=web_cache_update_start(g_pangu_rt->cache, thread_id, session); + } + if(events & EV_HTTP_RESP_BODY_CONT && ctx->cache_update_ctx!=NULL) + { + web_cache_update(ctx->cache_update_ctx, body_frag, frag_size); + } + if(events & EV_HTTP_RESP_BODY_END && ctx->cache_update_ctx!=NULL) + { + web_cache_update_end(ctx->cache_update_ctx); + ctx->cache_update_ctx=NULL; + } + +} +void cache_make_response(const struct tfe_http_session * session, struct pangu_http_ctx * ctx) +{ + size_t cont_len=0; + struct tfe_http_session * wr_session=tfe_http_session_allow_write(session); + struct tfe_http_half* cached_response=tfe_http_session_response_create(wr_session, 200); + tfe_http_std_field_write(cached_response, TFE_HTTP_CONT_TYPE, ctx->cached_header->content_type); + tfe_http_std_field_write(cached_response, TFE_HTTP_CONT_LENGTH, ctx->cached_header->content_length); + sscanf(ctx->cached_header->content_length, "%llu", &cont_len); + assert(cont_len==evbuffer_get_length(ctx->cached_body)); + tfe_http_half_append_body(cached_response, (char*)evbuffer_pullup(ctx->cached_body, -1), evbuffer_get_length(ctx->cached_body), 0); + tfe_http_half_append_body(cached_response, NULL, 0, 0); + + tfe_http_session_response_set(wr_session, cached_response); + cache_query_free_meta(ctx->cached_header); + ctx->cached_header=NULL; + evbuffer_free(ctx->cached_body); + ctx->cached_body=NULL; +} void pangu_on_http_begin(const struct tfe_stream * stream, const struct tfe_http_session * session, unsigned int thread_id, void ** pme) @@ -805,35 +946,35 @@ void pangu_on_http_data(const struct tfe_stream * stream, const struct tfe_http_ enum tfe_http_event events, const unsigned char * body_frag, size_t frag_size, unsigned int thread_id, void ** pme) { struct pangu_http_ctx * ctx = *(struct pangu_http_ctx **) pme; - enum pangu_action hit_action = PG_ACTION_NONE; - -Re_Enter: - switch (ctx->action) + + if(events & EV_HTTP_REQ_HDR && ctx->resume_from_cache_query && ctx->cache_query_status == WEB_CACHE_HIT) { - case PG_ACTION_NONE: hit_action = http_scan(session, events, body_frag, frag_size, ctx); - if (hit_action != PG_ACTION_NONE) - { - //ctx->action changed in http_scan. - goto Re_Enter; - } - break; - case PG_ACTION_MONIT: - //send log on close. - break; - case PG_ACTION_REJECT: http_reject(session, events, ctx); - break; - case PG_ACTION_REDIRECT: http_redirect(session, events, ctx); - break; - case PG_ACTION_REPLACE: http_replace(stream, session, events, body_frag, frag_size, ctx); - break; - case PG_ACTION_WHITELIST: tfe_http_session_detach(session); - break; - default: assert(0); - break; + //resume from cache query. + assert(ctx->action==PG_ACTION_NONE); + cache_make_response(session, ctx); + return; } - + + enforce_control_policy(stream, session, events, body_frag, frag_size,thread_id, ctx); + if(ctx->action != PG_ACTION_NONE) + { + return; + } + + if(events & EV_HTTP_REQ_HDR && !ctx->resume_from_cache_query) + { + cache_query(session, thread_id, ctx); + } + if(!tfe_http_in_request(events)) + { + cache_update(session, events, body_frag, frag_size, thread_id, ctx); + } + return; } + + + struct tfe_plugin pangu_http_spec = { .symbol=NULL, .type = TFE_PLUGIN_TYPE_BUSINESS, diff --git a/plugin/business/pangu-http/pangu_logger.cpp b/plugin/business/pangu-http/pangu_logger.cpp index 007e3e0..a5c6439 100644 --- a/plugin/business/pangu-http/pangu_logger.cpp +++ b/plugin/business/pangu-http/pangu_logger.cpp @@ -140,13 +140,7 @@ error_out: free(instance); return NULL; } -static const char * _wrap_std_field_read(struct tfe_http_half * half, enum tfe_http_std_field field_id) -{ - struct http_field_name tmp_name; - tmp_name.field_id=field_id; - tmp_name.field_name=NULL; - return tfe_http_field_read(half, &tmp_name); -} + int pangu_send_log(struct pangu_logger* handle, const struct pangu_log* log_msg) { const struct tfe_http_session* http=log_msg->http; @@ -207,7 +201,7 @@ int pangu_send_log(struct pangu_logger* handle, const struct pangu_log* log_msg) cJSON_AddStringToObject(common_obj, "url", http->req->req_spec.url); for(size_t i=0;ireq, req_fields[i].field_id); + tmp_val=tfe_http_std_field_read(http->req, req_fields[i].field_id); if(tmp_val!=NULL) { cJSON_AddStringToObject(common_obj,req_fields[i].log_filed_name, tmp_val); @@ -215,7 +209,7 @@ int pangu_send_log(struct pangu_logger* handle, const struct pangu_log* log_msg) } for(size_t i=0;iresp, resp_fields[i].field_id); + tmp_val=tfe_http_std_field_read(http->resp, resp_fields[i].field_id); if(tmp_val!=NULL) { cJSON_AddStringToObject(common_obj,resp_fields[i].log_filed_name, tmp_val); diff --git a/plugin/business/pangu-http/pangu_web_cache.cpp b/plugin/business/pangu-http/pangu_web_cache.cpp new file mode 100644 index 0000000..c1f7a06 --- /dev/null +++ b/plugin/business/pangu-http/pangu_web_cache.cpp @@ -0,0 +1,185 @@ + +#include "tango_cache_pending.h" +#include +#include + +#include +#include + + +struct cache_handle +{ + unsigned int thread_count; + struct tango_cache_instance **clients; + +}; +struct cache_update_context +{ + struct tango_cache_ctx * write_ctx; +}; +struct cache_handle* create_web_cache_handle(const char* profile_path, const char* section, void *logger) +{ + struct cache_handle* handle=ALLOC(struct cache_handle, 1); + handle->thread_count=tfe_proxy_get_thread_count(); + handle->clients=ALLOC(struct tango_cache_instance *, handle->thread_count); + int i=0; + for(i=0; ithread_count; i++) + { + handle->clients[i]=tango_cache_instance_new(tfe_proxy_get_evbase(i), profile_path, section, logger); + } + return handle; +} + +char* read_http1_hdr(const char* hdr, const char* field_name) +{ + const char *p=NULL, *q=NULL; + char* value=NULL; + p=strcasestr(hdr, field_name); + if(p==NULL) + { + return NULL; + } + p=strstr(p, ":"); + if(p==NULL) + { + return NULL; + } + p++; + q=strcasestr(p, "\r\n"); + if(q==NULL) + { + return NULL; + } + value=calloc(sizeof(char), (q-p+1)); + memcpy(value, p, q-p); + return value; +} +void cache_query_free_meta(struct cached_meta* meta) +{ + FREE(&meta->content_length); + FREE(&meta->content_type); + FREE(&meta); + return; +} +int cache_query_result_is_header(future_result_t * result) +{ + struct tango_cache_result* cache_result=tango_cache_read_result(result); + if(cache_result->type==RESULT_TYPE_HEADER) + { + return 1; + } + else + { + return 0; + } +} +int cache_query_result_is_body(future_result_t * result) +{ + struct tango_cache_result* cache_result=tango_cache_read_result(result); + if(cache_result->type==RESULT_TYPE_BODY) + { + return 1; + } + else + { + return 0; + } +} + +struct cached_meta* cache_query_result_get_header(future_result_t * result) +{ + struct tango_cache_result* cache_result=tango_cache_read_result(result); + struct cached_meta* meta; + if(cache_result->type!=RESULT_TYPE_HEADER) + { + return NULL; + } + meta= ALLOC(struct cached_meta, 1); + meta->content_length=read_http1_hdr(cache_result->data_frag, "content-length"); + meta->content_type=read_http1_hdr(cache_result->data_frag, "content-type"); + return meta; +} +void cache_query_result_append_data(struct evbuffer* buf, future_result_t * result) +{ + struct tango_cache_result* cache_result=tango_cache_read_result(result); + assert(cache_result->type==RESULT_TYPE_BODY); + evbuffer_add(buf, cache_result->data_frag, cache_result->size); + return; +} + +enum cache_query_status async_web_cache_query(struct cache_handle* handle, unsigned int thread_id, + const struct tfe_http_half * request, struct future* f) +{ + struct request_freshness req_fresshness; + enum cache_pending_action get_action; + int ret=0; + get_action=tfe_cache_get_pending(request, &req_fresshness); + switch(get_action) + { + case UNDEFINED: + case FORBIDDEN: + case VERIFY: + return WEB_CACHE_NOT_APPLICABLE; + case ALLOWED: + break; + default: + assert(0); + return WEB_CACHE_NOT_APPLICABLE; + } + + struct tango_cache_meta meta; + memset(&meta, 0, sizeof(meta)); + meta->url=request->req_spec.url; + memcpy(&(meta->put), req_fresshness, sizeof(meta->put)); + ret=tango_cache_fetch_object(handle->clients[thread_id], f, &meta); + assert(ret==0); + return WEB_CACHE_QUERING; +} + +struct cache_update_context* web_cache_update_start(struct cache_handle* handle, unsigned int thread_id, + const struct tfe_http_session * session) +{ + struct cache_update_context* update_ctx=NULL; + struct response_freshness resp_freshness; + enum cache_pending_action put_action; + struct tango_cache_ctx *write_ctx=NULL; + char buffer[TFE_STRING_MAX]; + const char* value=NULL; + int i=0; + put_action=tfe_cache_put_pending(session->resp, &resp_freshness); + if(put_action!=ALLOWED) + { + return NULL; + } + + struct tango_cache_meta meta; + memset(&meta, 0, sizeof(meta)); + meta.url=session->req->req_spec.url; + i=0; + snprintf(buffer, sizeof(buffer), "content-type:%s",session->resp->resp_spec.content_length); + meta.std_hdr[i]=buffer; + i++; + memcpy(&meta.put, resp_freshness, sizeof(resp_freshness)); + write_ctx=tango_cache_update_start(handle->clients[thread_id], NULL, &meta); + if(write_ctx==NULL) + { + return NULL; + } + + update_ctx=ALLOC(struct cache_update_context, 1); + update_ctx->write_ctx=write_ctx; + return update_ctx; + +} +void web_cache_update(struct cache_update_context* ctx, const unsigned char * body_frag, size_t frag_size) +{ + tango_cache_update_frag_data(ctx->write_ctx, body_frag, frag_size); + return; +} +void web_cache_update_end(struct cache_update_context* ctx) +{ + tango_cache_update_end(ctx->write_ctx); + free(ctx); + return; +} + diff --git a/plugin/business/pangu-http/pangu_web_cache.h b/plugin/business/pangu-http/pangu_web_cache.h new file mode 100644 index 0000000..94ef024 --- /dev/null +++ b/plugin/business/pangu-http/pangu_web_cache.h @@ -0,0 +1,39 @@ +#pragma once +#include +#include +#include + +enum cache_query_status +{ + WEB_CACHE_BEFORE_QUERY=0, + WEB_CACHE_NOT_APPLICABLE, + WEB_CACHE_QUERING, + WEB_CACHE_NOT_HIT, + WEB_CACHE_HIT +}; +struct cache_handle; +struct cache_handle* create_web_cache_handle(const char* profile_path, const char* section, void *logger); +struct cached_meta +{ + const char* content_length; + const char* content_type; +}; +struct cached_meta* cache_query_result_get_header(future_result_t * result); +void cache_query_free_meta(struct cached_meta* meta); +void cache_query_result_append_data(struct evbuffer* buf, future_result_t * result); + +enum cache_query_status async_web_cache_query(struct cache_handle* handle, unsigned int thread_id, + const struct tfe_http_half * request, struct future* f); + +int cache_query_result_is_header(future_result_t * result); +int cache_query_result_is_body(future_result_t * result); + + +struct cache_update_context; +struct cache_update_context* web_cache_update_start(struct cache_handle* handle, unsigned int thread_id, + const struct tfe_http_session * session); +void web_cache_update(struct cache_update_context* ctx, const unsigned char * body_frag, size_t frag_size); +void web_cache_update_end(struct cache_update_context* ctx); + + + diff --git a/vendor/CMakeLists.txt b/vendor/CMakeLists.txt index fad0848..c404190 100644 --- a/vendor/CMakeLists.txt +++ b/vendor/CMakeLists.txt @@ -207,3 +207,35 @@ add_library(pcre2-static STATIC IMPORTED GLOBAL) add_dependencies(pcre2-static ctemplate) set_property(TARGET pcre2-static PROPERTY IMPORTED_LOCATION ${INSTALL_DIR}/lib/libpcre2-8.a) set_property(TARGET pcre2-static PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include) + +### libxml2 +ExternalProject_Add(libxml2 + PREFIX libxml2 + URL ${CMAKE_CURRENT_SOURCE_DIR}/libxml2-2.9.2.tar.gz + URL_MD5 9e6a9aca9d155737868b3dc5fd82f788 + CONFIGURE_COMMAND ./configure --prefix= --disable-shared + BUILD_IN_SOURCE 1) + +ExternalProject_Get_Property(libxml2 INSTALL_DIR) +file(MAKE_DIRECTORY ${INSTALL_DIR}/include/libxml2/) + +add_library(libxml2-static STATIC IMPORTED GLOBAL) +add_dependencies(libxml2-static libxml2) +set_property(TARGET libxml2-static PROPERTY IMPORTED_LOCATION ${INSTALL_DIR}/lib/libxml2.a) +set_property(TARGET libxml2-static PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include/libxml2/) + +### libcurl +ExternalProject_Add(libcurl + PREFIX libcurl + URL ${CMAKE_CURRENT_SOURCE_DIR}/curl-7.59.0.tar.gz + URL_MD5 a44f98c25c7506e7103039b542aa5ad8 + CONFIGURE_COMMAND ./configure --prefix= --disable-shared + BUILD_IN_SOURCE 1) + +ExternalProject_Get_Property(libcurl INSTALL_DIR) +file(MAKE_DIRECTORY ${INSTALL_DIR}/include) + +add_library(libcurl-static STATIC IMPORTED GLOBAL) +add_dependencies(libcurl-static libxml2) +set_property(TARGET libcurl-static PROPERTY IMPORTED_LOCATION ${INSTALL_DIR}/lib/libcurl.a) +set_property(TARGET libcurl-static PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include) \ No newline at end of file diff --git a/cache/support/curl-7.59.0.tar.gz b/vendor/curl-7.59.0.tar.gz similarity index 100% rename from cache/support/curl-7.59.0.tar.gz rename to vendor/curl-7.59.0.tar.gz diff --git a/cache/support/libxml2-2.9.2.tar.gz b/vendor/libxml2-2.9.2.tar.gz similarity index 100% rename from cache/support/libxml2-2.9.2.tar.gz rename to vendor/libxml2-2.9.2.tar.gz

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