aboutsummaryrefslogtreecommitdiff
path: root/vendor/voclient/include
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
commitfa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch)
treebdda434976bc09c864f2e4fa6f16ba1952b1e555 /vendor/voclient/include
downloadiraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz
Initial commit
Diffstat (limited to 'vendor/voclient/include')
-rw-r--r--vendor/voclient/include/Makefile556
-rw-r--r--vendor/voclient/include/Makefile.am5
-rw-r--r--vendor/voclient/include/Makefile.in556
-rw-r--r--vendor/voclient/include/README55
-rw-r--r--vendor/voclient/include/VOClient.h353
-rw-r--r--vendor/voclient/include/curl/Makefile511
-rw-r--r--vendor/voclient/include/curl/Makefile.am25
-rw-r--r--vendor/voclient/include/curl/Makefile.in511
-rw-r--r--vendor/voclient/include/curl/curl.h1996
-rw-r--r--vendor/voclient/include/curl/curlbuild.h191
-rw-r--r--vendor/voclient/include/curl/curlbuild.h.cmake180
-rw-r--r--vendor/voclient/include/curl/curlbuild.h.in190
-rw-r--r--vendor/voclient/include/curl/curlrules.h252
-rw-r--r--vendor/voclient/include/curl/curlver.h69
-rw-r--r--vendor/voclient/include/curl/easy.h102
-rw-r--r--vendor/voclient/include/curl/mprintf.h81
-rw-r--r--vendor/voclient/include/curl/multi.h345
-rw-r--r--vendor/voclient/include/curl/stamp-h31
-rw-r--r--vendor/voclient/include/curl/stdcheaders.h33
-rw-r--r--vendor/voclient/include/curl/typecheck-gcc.h550
-rw-r--r--vendor/voclient/include/curl/types.h1
-rw-r--r--vendor/voclient/include/expat.h1014
-rw-r--r--vendor/voclient/include/expat_external.h115
-rw-r--r--vendor/voclient/include/samp.h519
-rw-r--r--vendor/voclient/include/sampDecl.h438
-rw-r--r--vendor/voclient/include/votParse.h181
-rw-r--r--vendor/voclient/include/votParse_spp.h137
-rw-r--r--vendor/voclient/include/xmlrpc-c/abyss.h560
-rw-r--r--vendor/voclient/include/xmlrpc-c/abyss_unixsock.h42
-rw-r--r--vendor/voclient/include/xmlrpc-c/abyss_winsock.h27
-rw-r--r--vendor/voclient/include/xmlrpc-c/base.h757
-rw-r--r--vendor/voclient/include/xmlrpc-c/base.hpp354
-rw-r--r--vendor/voclient/include/xmlrpc-c/c_util.h20
-rw-r--r--vendor/voclient/include/xmlrpc-c/client.h316
-rw-r--r--vendor/voclient/include/xmlrpc-c/client.hpp286
-rw-r--r--vendor/voclient/include/xmlrpc-c/client_global.h141
-rw-r--r--vendor/voclient/include/xmlrpc-c/client_simple.hpp44
-rw-r--r--vendor/voclient/include/xmlrpc-c/client_transport.hpp448
-rw-r--r--vendor/voclient/include/xmlrpc-c/config.h37
-rw-r--r--vendor/voclient/include/xmlrpc-c/girerr.hpp31
-rw-r--r--vendor/voclient/include/xmlrpc-c/girmem.hpp75
-rw-r--r--vendor/voclient/include/xmlrpc-c/inttypes.h19
-rw-r--r--vendor/voclient/include/xmlrpc-c/oldcppwrapper.hpp419
-rw-r--r--vendor/voclient/include/xmlrpc-c/oldxmlrpc.h2
-rw-r--r--vendor/voclient/include/xmlrpc-c/packetsocket.hpp165
-rw-r--r--vendor/voclient/include/xmlrpc-c/registry.hpp189
-rw-r--r--vendor/voclient/include/xmlrpc-c/server.h173
-rw-r--r--vendor/voclient/include/xmlrpc-c/server_abyss.h276
-rw-r--r--vendor/voclient/include/xmlrpc-c/server_abyss.hpp134
-rw-r--r--vendor/voclient/include/xmlrpc-c/server_cgi.h49
-rw-r--r--vendor/voclient/include/xmlrpc-c/server_pstream.hpp75
-rw-r--r--vendor/voclient/include/xmlrpc-c/server_w32httpsys.h95
-rw-r--r--vendor/voclient/include/xmlrpc-c/timeout.hpp21
-rw-r--r--vendor/voclient/include/xmlrpc-c/transport.h86
-rw-r--r--vendor/voclient/include/xmlrpc-c/util.h328
-rw-r--r--vendor/voclient/include/xmlrpc-c/xml.hpp36
-rw-r--r--vendor/voclient/include/xmlrpc.h2
-rw-r--r--vendor/voclient/include/xmlrpc_abyss.h276
-rw-r--r--vendor/voclient/include/xmlrpc_client.h316
-rw-r--r--vendor/voclient/include/xmlrpc_server.h173
-rw-r--r--vendor/voclient/include/xmlrpc_server_w32httpsys.h95
-rw-r--r--vendor/voclient/include/xrpc.h194
-rw-r--r--vendor/voclient/include/xrpcP.h139
63 files changed, 15367 insertions, 0 deletions
diff --git a/vendor/voclient/include/Makefile b/vendor/voclient/include/Makefile
new file mode 100644
index 00000000..29e988ff
--- /dev/null
+++ b/vendor/voclient/include/Makefile
@@ -0,0 +1,556 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# include/Makefile. Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+srcdir = .
+top_srcdir = ..
+
+pkgdatadir = $(datadir)/curl
+pkglibdir = $(libdir)/curl
+pkgincludedir = $(includedir)/curl
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = x86_64-apple-darwin12.5.0
+host_triplet = x86_64-apple-darwin12.5.0
+subdir = include
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
+ $(top_srcdir)/m4/curl-confopts.m4 \
+ $(top_srcdir)/m4/curl-functions.m4 \
+ $(top_srcdir)/m4/curl-override.m4 \
+ $(top_srcdir)/m4/curl-reentrant.m4 \
+ $(top_srcdir)/m4/curl-system.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
+ $(top_builddir)/src/curl_config.h \
+ $(top_builddir)/include/curl/curlbuild.h
+CONFIG_CLEAN_FILES =
+depcomp =
+am__depfiles_maybe =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-exec-recursive install-info-recursive \
+ install-recursive installcheck-recursive installdirs-recursive \
+ pdf-recursive ps-recursive uninstall-info-recursive \
+ uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} "/iraf/iraf/vendor/voclient/common/curl/missing" --run aclocal-1.9
+AMDEP_FALSE = #
+AMDEP_TRUE =
+AMTAR = ${SHELL} "/iraf/iraf/vendor/voclient/common/curl/missing" --run tar
+AR = /usr/bin/ar
+AS = as
+AUTOCONF = ${SHELL} "/iraf/iraf/vendor/voclient/common/curl/missing" --run autoconf
+AUTOHEADER = ${SHELL} "/iraf/iraf/vendor/voclient/common/curl/missing" --run autoheader
+AUTOMAKE = ${SHELL} "/iraf/iraf/vendor/voclient/common/curl/missing" --run automake-1.9
+AWK = awk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -arch i386 -m32 -mmacosx-version-min=10.4 -g0 -O2 -Wno-system-headers
+CONFIGURE_OPTIONS = " '--prefix=/iraf/iraf/vendor/voclient/' '--exec-prefix=/iraf/iraf/vendor/voclient/' '--disable-shared' '' '--disable-ftp' '' '--disable-file' '' '--disable-ldap' '' '--disable-ldaps' '' '--disable-proxy' '' '--disable-dict' '' '--disable-telnet' '' '--disable-tftp' '' '--disable-manual' '' '--disable-ipv6' '' '--disable-ares' '' '--disable-sspi' '' '--disable-crypto-auth' '' '--without-krb4' '' '--without-ssl' '' '--without-zlib' '' '--without-libssh2' '' '--without-gnutls' '' '--without-nss' '' '--without-ca-path' '' '--without-libidn' 'build_alias=' 'host_alias=' 'target_alias=' 'CC=gcc' 'CFLAGS=-arch i386 -m32 -mmacosx-version-min=10.4' 'LDFLAGS=-arch i386 -m32 -mmacosx-version-min=10.4'"
+CPP = gcc -E
+CPPFLAGS =
+CROSSCOMPILING_FALSE =
+CROSSCOMPILING_TRUE = #
+CURLDEBUG_FALSE =
+CURLDEBUG_TRUE = #
+CURL_CA_BUNDLE =
+CURL_DISABLE_DICT = 1
+CURL_DISABLE_FILE = 1
+CURL_DISABLE_FTP = 1
+CURL_DISABLE_HTTP =
+CURL_DISABLE_IMAP =
+CURL_DISABLE_LDAP = 1
+CURL_DISABLE_LDAPS = 1
+CURL_DISABLE_POP3 =
+CURL_DISABLE_PROXY = 1
+CURL_DISABLE_RTSP =
+CURL_DISABLE_SMTP =
+CURL_DISABLE_TELNET = 1
+CURL_DISABLE_TFTP = 1
+CURL_LIBS =
+CYGPATH_W = echo
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+DLLTOOL = dlltool
+DSYMUTIL = dsymutil
+DUMPBIN =
+ECHO_C = \c
+ECHO_N =
+ECHO_T =
+EGREP = /usr/bin/grep -E
+EXEEXT =
+FGREP = /usr/bin/grep -F
+GREP = /usr/bin/grep
+HAVE_LIBZ =
+HAVE_LIBZ_FALSE =
+HAVE_LIBZ_TRUE = #
+HAVE_PK11_CREATEGENERICOBJECT =
+IDN_ENABLED =
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+IPV6_ENABLED =
+KRB4_ENABLED =
+LD = /usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld
+LDFLAGS = -arch i386 -m32 -mmacosx-version-min=10.4
+LIBCURL_LIBS =
+LIBOBJS =
+LIBS =
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LIPO = lipo
+LN_S = ln -s
+LTLIBOBJS =
+MAINT = #
+MAINTAINER_MODE_FALSE =
+MAINTAINER_MODE_TRUE = #
+MAKEINFO = ${SHELL} "/iraf/iraf/vendor/voclient/common/curl/missing" --run makeinfo
+MANOPT = -man
+MIMPURE_FALSE =
+MIMPURE_TRUE = #
+NM = /usr/bin/nm
+NMEDIT = nmedit
+NO_UNDEFINED_FALSE =
+NO_UNDEFINED_TRUE = #
+NROFF = /usr/bin/nroff
+OBJDUMP = objdump
+OBJEXT = o
+OTOOL = otool
+OTOOL64 = :
+PACKAGE = curl
+PACKAGE_BUGREPORT = a suitable curl mailing list => http://curl.haxx.se/mail/
+PACKAGE_NAME = curl
+PACKAGE_STRING = curl -
+PACKAGE_TARNAME = curl
+PACKAGE_URL =
+PACKAGE_VERSION = -
+PATH = /Users/fitz/.iraf/bin:.:/Users/fitz/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/bin:/opt/local/bin:/usr/local/sbin:/usr/local/pvm/pvm3/bin:/usr/local/pvm/pvm3/lib:/usr/local/ch/bin:/usr/local/astrometry/bin:/usr/local/mysql/bin:/Developer/NVIDIA/CUDA-5.0/bin:/usr/X11R6/bin:/usr/local/git/bin
+PATH_SEPARATOR = :
+PERL = /usr/bin/perl
+PKGADD_NAME = cURL - a client that groks URLs
+PKGADD_PKG = HAXXcurl
+PKGADD_VENDOR = curl.haxx.se
+PKGCONFIG =
+RANDOM_FILE =
+RANLIB = ranlib
+REQUIRE_LIB_DEPS = yes
+SED = /usr/bin/sed
+SET_MAKE =
+SHELL = /bin/sh
+SONAME_BUMP_FALSE =
+SONAME_BUMP_TRUE = #
+SSL_ENABLED =
+STATICLIB_FALSE =
+STATICLIB_TRUE = #
+STRIP = strip
+SUPPORT_FEATURES =
+SUPPORT_PROTOCOLS = HTTP IMAP POP3 RTSP SMTP
+TEST_SERVER_LIBS =
+USE_ARES =
+USE_EMBEDDED_ARES_FALSE =
+USE_EMBEDDED_ARES_TRUE = #
+USE_GNUTLS =
+USE_LIBSSH2 =
+USE_MANUAL_FALSE =
+USE_MANUAL_TRUE = #
+USE_NSS =
+USE_SSLEAY =
+USE_WINDOWS_SSPI =
+VERSION = 7.20.1
+VERSIONNUM = 071401
+ac_ct_CC = gcc
+ac_ct_DUMPBIN =
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE =
+am__include = include
+am__leading_dot = .
+am__quote =
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-apple-darwin12.5.0
+build_alias =
+build_cpu = x86_64
+build_os = darwin12.5.0
+build_vendor = apple
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+exec_prefix = /iraf/iraf/vendor/voclient
+host = x86_64-apple-darwin12.5.0
+host_alias =
+host_cpu = x86_64
+host_os = darwin12.5.0
+host_vendor = apple
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = /iraf/iraf/vendor/voclient/common/curl/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+libext = a
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+lt_ECHO = /bin/echo
+mandir = ${datarootdir}/man
+mkdir_p = $(mkinstalldirs)
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /iraf/iraf/vendor/voclient
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+subdirs =
+sysconfdir = ${prefix}/etc
+target_alias =
+SUBDIRS = curl
+EXTRA_DIST = README
+AUTOMAKE_OPTIONS = foreign no-dependencies
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --foreign include/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool \
+ distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
+ clean clean-generic clean-libtool clean-recursive ctags \
+ ctags-recursive distclean distclean-generic distclean-libtool \
+ distclean-recursive distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-exec install-exec-am install-info \
+ install-info-am install-man install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic maintainer-clean-recursive \
+ mostlyclean mostlyclean-generic mostlyclean-libtool \
+ mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
+ uninstall uninstall-am uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/vendor/voclient/include/Makefile.am b/vendor/voclient/include/Makefile.am
new file mode 100644
index 00000000..3b248602
--- /dev/null
+++ b/vendor/voclient/include/Makefile.am
@@ -0,0 +1,5 @@
+SUBDIRS = curl
+
+EXTRA_DIST = README
+
+AUTOMAKE_OPTIONS = foreign no-dependencies
diff --git a/vendor/voclient/include/Makefile.in b/vendor/voclient/include/Makefile.in
new file mode 100644
index 00000000..dfce7b27
--- /dev/null
+++ b/vendor/voclient/include/Makefile.in
@@ -0,0 +1,556 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = include
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
+ $(top_srcdir)/m4/curl-confopts.m4 \
+ $(top_srcdir)/m4/curl-functions.m4 \
+ $(top_srcdir)/m4/curl-override.m4 \
+ $(top_srcdir)/m4/curl-reentrant.m4 \
+ $(top_srcdir)/m4/curl-system.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
+ $(top_builddir)/src/curl_config.h \
+ $(top_builddir)/include/curl/curlbuild.h
+CONFIG_CLEAN_FILES =
+depcomp =
+am__depfiles_maybe =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-exec-recursive install-info-recursive \
+ install-recursive installcheck-recursive installdirs-recursive \
+ pdf-recursive ps-recursive uninstall-info-recursive \
+ uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CONFIGURE_OPTIONS = @CONFIGURE_OPTIONS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CROSSCOMPILING_FALSE = @CROSSCOMPILING_FALSE@
+CROSSCOMPILING_TRUE = @CROSSCOMPILING_TRUE@
+CURLDEBUG_FALSE = @CURLDEBUG_FALSE@
+CURLDEBUG_TRUE = @CURLDEBUG_TRUE@
+CURL_CA_BUNDLE = @CURL_CA_BUNDLE@
+CURL_DISABLE_DICT = @CURL_DISABLE_DICT@
+CURL_DISABLE_FILE = @CURL_DISABLE_FILE@
+CURL_DISABLE_FTP = @CURL_DISABLE_FTP@
+CURL_DISABLE_HTTP = @CURL_DISABLE_HTTP@
+CURL_DISABLE_IMAP = @CURL_DISABLE_IMAP@
+CURL_DISABLE_LDAP = @CURL_DISABLE_LDAP@
+CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
+CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
+CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
+CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
+CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
+CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
+CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
+CURL_LIBS = @CURL_LIBS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_LIBZ = @HAVE_LIBZ@
+HAVE_LIBZ_FALSE = @HAVE_LIBZ_FALSE@
+HAVE_LIBZ_TRUE = @HAVE_LIBZ_TRUE@
+HAVE_PK11_CREATEGENERICOBJECT = @HAVE_PK11_CREATEGENERICOBJECT@
+IDN_ENABLED = @IDN_ENABLED@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+IPV6_ENABLED = @IPV6_ENABLED@
+KRB4_ENABLED = @KRB4_ENABLED@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBCURL_LIBS = @LIBCURL_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MANOPT = @MANOPT@
+MIMPURE_FALSE = @MIMPURE_FALSE@
+MIMPURE_TRUE = @MIMPURE_TRUE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+NO_UNDEFINED_FALSE = @NO_UNDEFINED_FALSE@
+NO_UNDEFINED_TRUE = @NO_UNDEFINED_TRUE@
+NROFF = @NROFF@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH = @PATH@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKGADD_NAME = @PKGADD_NAME@
+PKGADD_PKG = @PKGADD_PKG@
+PKGADD_VENDOR = @PKGADD_VENDOR@
+PKGCONFIG = @PKGCONFIG@
+RANDOM_FILE = @RANDOM_FILE@
+RANLIB = @RANLIB@
+REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SONAME_BUMP_FALSE = @SONAME_BUMP_FALSE@
+SONAME_BUMP_TRUE = @SONAME_BUMP_TRUE@
+SSL_ENABLED = @SSL_ENABLED@
+STATICLIB_FALSE = @STATICLIB_FALSE@
+STATICLIB_TRUE = @STATICLIB_TRUE@
+STRIP = @STRIP@
+SUPPORT_FEATURES = @SUPPORT_FEATURES@
+SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
+TEST_SERVER_LIBS = @TEST_SERVER_LIBS@
+USE_ARES = @USE_ARES@
+USE_EMBEDDED_ARES_FALSE = @USE_EMBEDDED_ARES_FALSE@
+USE_EMBEDDED_ARES_TRUE = @USE_EMBEDDED_ARES_TRUE@
+USE_GNUTLS = @USE_GNUTLS@
+USE_LIBSSH2 = @USE_LIBSSH2@
+USE_MANUAL_FALSE = @USE_MANUAL_FALSE@
+USE_MANUAL_TRUE = @USE_MANUAL_TRUE@
+USE_NSS = @USE_NSS@
+USE_SSLEAY = @USE_SSLEAY@
+USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
+VERSION = @VERSION@
+VERSIONNUM = @VERSIONNUM@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+libext = @libext@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+SUBDIRS = curl
+EXTRA_DIST = README
+AUTOMAKE_OPTIONS = foreign no-dependencies
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --foreign include/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool \
+ distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
+ clean clean-generic clean-libtool clean-recursive ctags \
+ ctags-recursive distclean distclean-generic distclean-libtool \
+ distclean-recursive distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-exec install-exec-am install-info \
+ install-info-am install-man install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic maintainer-clean-recursive \
+ mostlyclean mostlyclean-generic mostlyclean-libtool \
+ mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
+ uninstall uninstall-am uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/vendor/voclient/include/README b/vendor/voclient/include/README
new file mode 100644
index 00000000..205f9f7d
--- /dev/null
+++ b/vendor/voclient/include/README
@@ -0,0 +1,55 @@
+ _ _ ____ _
+ ___| | | | _ \| |
+ / __| | | | |_) | |
+ | (__| |_| | _ <| |___
+ \___|\___/|_| \_\_____|
+
+Include files for libcurl, external users.
+
+They're all placed in the curl subdirectory here for better fit in any kind
+of environment. You must include files from here using...
+
+ #include <curl/curl.h>
+
+... style and point the compiler's include path to the directory holding the
+curl subdirectory. It makes it more likely to survive future modifications.
+
+NOTE FOR LIBCURL HACKERS
+
+The following notes apply to libcurl version 7.19.0 and later.
+
+* The distributed curl/curlbuild.h file is only intended to be used on systems
+ which can not run the also distributed configure script.
+
+* The distributed curlbuild.h file is generated as a copy of curlbuild.h.dist
+ when the libcurl source code distribution archive file is originally created.
+
+* If you check out from git on a non-configure platform, you must run the
+ appropriate buildconf* script to set up curlbuild.h and other local files
+ before being able of compiling the library.
+
+* On systems capable of running the configure script, the configure process
+ will overwrite the distributed include/curl/curlbuild.h file with one that
+ is suitable and specific to the library being configured and built, which
+ is generated from the include/curl/curlbuild.h.in template file.
+
+* If you intend to distribute an already compiled libcurl library you _MUST_
+ also distribute along with it the generated curl/curlbuild.h which has been
+ used to compile it. Otherwise the library will be of no use for the users of
+ the library that you have built. It is _your_ responsability to provide this
+ file. No one at the cURL project can know how you have built the library.
+
+* File curl/curlbuild.h includes platform and configuration dependent info,
+ and must not be modified by anyone. Configure script generates it for you.
+
+* We cannot assume anything else but very basic compiler features being
+ present. While libcurl requires an ANSI C compiler to build, some of the
+ earlier ANSI compilers clearly can't deal with some preprocessor operators.
+
+* Newlines must remain unix-style for older compilers' sake.
+
+* Comments must be written in the old-style /* unnested C-fashion */
+
+To figure out how to do good and portable checks for features, operating
+systems or specific hardwarare, a very good resource is Bjorn Reese's
+collection at http://predef.sf.net/
diff --git a/vendor/voclient/include/VOClient.h b/vendor/voclient/include/VOClient.h
new file mode 100644
index 00000000..1f570078
--- /dev/null
+++ b/vendor/voclient/include/VOClient.h
@@ -0,0 +1,353 @@
+/*
+ * VOCLIENT.H == Global include file for the VOClient Interface.
+ *
+ * M. Fitzpatrick, NOAO, June 2006
+ */
+
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <ctype.h>
+#include <sys/file.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <sys/un.h>
+#include <netdb.h>
+#include <fcntl.h>
+
+
+/* Function prototypes */
+#ifdef __STDC__
+#include <stddef.h>
+#include <stdlib.h>
+#else
+char *getenv();
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* For the signal handling. */
+typedef void (*SIGFUNC)();
+
+
+/* Interface Variables.
+ */
+
+
+
+#ifdef OK
+#undef OK
+#endif
+#define OK 0
+
+#ifdef ERR
+#undef ERR
+#endif
+#define ERR 1
+
+#ifdef TRUE
+#undef TRUE
+#endif
+#define TRUE 1
+
+#ifdef FALSE
+#undef FALSE
+#endif
+#define FALSE 0
+
+#define DEF_SERVER "6200:localhost"
+#define DEF_NET_SERVER "9000:iraf-nvo.noao.edu"
+
+#define DEF_RUNID "VOClient"
+
+#define MSG_CALL 1
+#define MSG_RESULT 2
+#define MSG_MESSAGE 3
+
+#define TY_INT 1 /* result data types */
+#define TY_FLOAT 2
+#define TY_STRING 3
+#define TY_BULK 4
+
+#define SZ_MSGBUF 102400
+#define SZ_METHOD 64
+#define SZ_CLASS 64
+#define SZ_MSGSTR 65535
+#define SZ_PBUF 128
+#define SZ_FNAME 256
+#define MAX_VALUES 64
+
+#define DAL_CONN 1 /* DAL Connection Types */
+#define CONE_CONN 2 /* Simple Cone Search */
+#define SIAP_CONN 3 /* Simple Image Access */
+#define SSAP_CONN 4 /* Simple Spectral Access */
+#define SLAP_CONN 5 /* Simple Line Access */
+#define STAP_CONN 6 /* Synch TAP Access */
+
+#define CONE_SERVICE 1
+#define SIAP_SERVICE 2
+#define SSAP_SERVICE 3
+#define TAP_SERVICE 4
+#define REG_SERVICE 5
+#define SKYNODE_SERVICE 6
+#define WEB_SERVICE 7
+#define REST_SERVICE 8
+
+#define VOC_RAW 0
+#define VOC_CSV 1
+#define VOC_TSV 2
+#define VOC_ASCII 3
+#define VOC_VOTABLE 4
+
+#define VOC_NULL 0 /* integer NULL */
+
+
+typedef int ObjectID; /* DAL type aliases */
+typedef int DAL;
+typedef int Query;
+typedef int QResponse;
+typedef int QRecord;
+typedef int QRAttribute;
+
+typedef int Sesame; /* Name Resolver aliases */
+
+typedef int Skybot; /* SkyBoT Service aliases */
+
+typedef int RegQuery; /* Registry Query object */
+typedef int RegResult; /* Query Reuslt object */
+
+#ifdef _VOCLIENT_LIB_
+
+typedef struct vocMsg {
+ int type; /* message type */
+
+ ObjectID objId; /* for CALL messages */
+ char method[SZ_METHOD];
+ int nparams;
+
+ int status; /* for RESULT messages */
+ int restype;
+ int nitems;
+
+ char msgclass[SZ_CLASS]; /* for MESSAGE messages */
+ char msgstr[SZ_MSGSTR];
+
+ char message[SZ_MSGBUF]; /* fully formed message */
+} vocMsg_t;
+
+
+
+typedef struct vocRes {
+ int status; /* result status */
+ int type; /* type of result value */
+ int nitems; /* no. of returned items */
+ char value[MAX_VALUES][SZ_MSGSTR]; /* value strings */
+
+ void *buf; /* bulk data buffer */
+ int buflen; /* length of buffer */
+} vocRes_t;
+
+
+typedef struct VOClient {
+ char *server_host; /* socket to DALServer */
+ char *runid; /* RUNID logging string */
+ int server_port;
+ int io_chan;
+
+ int msg_port; /* asynch message socket */
+ int msg_chan;
+
+ int onetrip; /* private invocation flag */
+ int debug; /* debug flag */
+ int quiet; /* suppress output? */
+ int use_cache; /* use cached results? */
+ int use_runid; /* use RUNID parameter? */
+
+} VOClient, *VOClientPtr;
+
+
+#define VOC_DEBUG (vo->debug > 0)
+#define MSG_DEBUG (vo->debug > 1)
+
+#endif
+
+
+
+
+
+/* Prototype Declarations.
+ */
+
+/* DAL Interface procedures.
+ */
+char *voc_coneCaller (char *url, double ra, double dec, double sr,
+ int otype);
+int voc_coneCallerToFile (char *url, double ra, double dec, double sr,
+ int otype, char *file);
+
+char *voc_siapCaller (char *url, double ra, double dec, double rsize,
+ double dsize, char *fmt, int otype);
+int voc_siapCallerToFile (char *url, double ra, double dec,
+ double rsize, double dsize, char *fmt, int otype, char *file);
+char *voc_ssapCaller (char *url, double ra, double dec,
+ double size, char *band, char *time, char *fmt, int otype);
+int voc_ssapCallerToFile (char *url, double ra, double dec,
+ double size, char *band, char *time, char *fmt, int otype,
+ char *file);
+char *voc_getRawURL (char *url, int *nbytes);
+int voc_validateObject (int hcode);
+void voc_freePointer (char *ptr);
+
+
+int voc_initVOClient (char *opts);
+void voc_closeVOClient (int shutdown);
+void voc_abortVOClient (int code, char *msg);
+
+DAL voc_openConnection (char *service_url, int type);
+DAL voc_openConeConnection (char *service_url);
+DAL voc_openSiapConnection (char *service_url);
+DAL voc_openSsapConnection (char *service_url);
+void voc_closeConnection (DAL dal);
+
+int voc_getServiceCount (DAL dal);
+void voc_addServiceURL (DAL dal, char *service_url);
+char *voc_getServiceURL (DAL dal, int index);
+
+Query voc_getQuery (DAL dal, int type);
+Query voc_getConeQuery (DAL dal, double ra, double dec, double sr);
+Query voc_getSiapQuery (DAL dal, double ra, double dec,
+ double ra_size, double dec_size, char *format);
+Query voc_getSsapQuery (DAL dal, double ra, double dec,
+ double size, char *band, char *time, char *format);
+
+int voc_addIntParam (Query query, char *name, int value);
+int voc_addFloatParam (Query query, char *name, double value);
+int voc_addStringParam (Query query, char *name, char *value);
+
+char *voc_getQueryString (Query query, int type, int index);
+
+QResponse voc_executeQuery (Query query);
+QResponse voc_getQueryResponse (Query query);
+char *voc_executeCSV (Query query);
+char *voc_executeTSV (Query query);
+char *voc_executeASCII (Query query);
+char *voc_executeVOTable (Query query);
+int voc_executeQueryAs (Query query, char *fname, int type);
+int voc_getRecordCount (QResponse qr);
+
+QRecord voc_getRecord (QResponse qr, int recnum);
+char *voc_getFieldAttr (QResponse qr, int fieldnum, char *attr);
+
+QRAttribute voc_getAttribute (QRecord rec, char *attrname);
+
+int voc_intValue (QRAttribute v);
+double voc_floatValue (QRAttribute v);
+char *voc_stringValue (QRAttribute v);
+
+int voc_getIntAttr (QRecord rec, char *attr_name);
+double voc_getFloatAttr (QRecord rec, char *attr_name);
+char *voc_getStringAttr (QRecord rec, char *attr_name);
+
+char *voc_getAttrList (QRecord rec);
+int voc_getAttrCount (QRecord rec);
+
+void voc_setIntAttr (QRecord rec, char *attrname, int ival);
+void voc_setFloatAttr (QRecord rec, char *attrname, double dval) ;
+void voc_setStringAttr (QRecord rec, char *attrname, char *str);
+
+int voc_getDataset (QRecord rec, char *acref, char *fname);
+
+
+
+/* Registry Interface procedures.
+ */
+
+RegResult voc_regSearch (char *term1, char *term2, int orValues);
+RegResult voc_regSearchByService (char *svc, char *term, int orValues);
+RegQuery voc_regQuery (char *term, int orValues);
+void voc_regConstSvcType (RegQuery query, char *svc);
+void voc_regConstWaveband (RegQuery query, char *bpass);
+void voc_regDALOnly (RegQuery query, int value);
+void voc_regSortRes (RegQuery query, int value);
+void voc_regAddSearchTerm (RegQuery query, char *term, int orValue);
+void voc_regRemoveSearchTerm (RegQuery query, char *term);
+int voc_regGetSTCount (RegQuery query);
+char *voc_regGetQueryString (RegQuery query);
+RegResult voc_regExecute (RegQuery query);
+char *voc_regExecuteRaw (RegQuery query);
+
+int voc_resGetCount (RegResult res);
+char *voc_resGetStr (RegResult res, char *attribute, int index);
+double voc_resGetFloat (RegResult res, char *attribute, int index);
+int voc_resGetInt (RegResult res, char *attribute, int index);
+
+
+
+/* SESAME interface procedures.
+ */
+Sesame voc_nameResolver (char *target);
+char *voc_resolverPos (Sesame sr);
+double voc_resolverRA (Sesame sr);
+double voc_resolverDEC (Sesame sr);
+double voc_resolverRAErr (Sesame sr);
+double voc_resolverDECErr (Sesame sr);
+char *voc_resolverOtype (Sesame sr);
+
+
+
+/* SkyBoT interface procedures.
+ */
+Skybot voc_skybot (double ra, double dec, double rsz, double dsz,
+ double epoch);
+int voc_skybotNObjs (Skybot sb);
+char *voc_skybotStrAttr (Skybot sb, char *attr, int index);
+double voc_skybotDblAttr (Skybot sb, char *attr, int index);
+
+
+
+/***************************************************************************
+ * VOCMSG.C Prototypes
+ */
+#ifdef _VOCLIENT_LIB_
+
+vocMsg_t *msg_newCallMsg (ObjectID objid, char *method, int nparams);
+vocMsg_t *msg_newResultMsg (int status, int type, int nitems);
+vocMsg_t *msg_newMsg (char *msgclass, char *str);
+
+vocMsg_t *msg_shutdownMsg ();
+vocMsg_t *msg_quitMsg ();
+vocMsg_t *msg_ackMsg ();
+
+vocRes_t *msg_sendMsg (int fd, vocMsg_t *msg);
+int msg_sendRawMsg (int fd, vocMsg_t *msg);
+
+vocRes_t *msg_getResult (int fd);
+vocRes_t *msg_getResultToFile (int fd, char *fname, int overwrite);
+
+void msg_addIntParam (vocMsg_t *msg, int ival);
+void msg_addFloatParam (vocMsg_t *msg, double dval);
+void msg_addStringParam (vocMsg_t *msg, char *str);
+void msg_addIntResult (vocMsg_t *msg, int ival);
+void msg_addFloatResult (vocMsg_t *msg, double dval);
+void msg_addStringResult (vocMsg_t *msg, char *str);
+
+int msg_resultStatus (vocRes_t *res);
+int msg_resultType (vocRes_t *res);
+int msg_resultLength (vocRes_t *res);
+
+int msg_getIntResult (vocRes_t *res, int index);
+double msg_getFloatResult (vocRes_t *res, int index);
+char *msg_getStringResult (vocRes_t *res, int index);
+void *msg_getBuffer (vocRes_t *res);
+char *msg_getFilename (vocRes_t *res);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/vendor/voclient/include/curl/Makefile b/vendor/voclient/include/curl/Makefile
new file mode 100644
index 00000000..24e8a9f0
--- /dev/null
+++ b/vendor/voclient/include/curl/Makefile
@@ -0,0 +1,511 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# include/curl/Makefile. Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+srcdir = .
+top_srcdir = ../..
+
+pkgdatadir = $(datadir)/curl
+pkglibdir = $(libdir)/curl
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = x86_64-apple-darwin12.5.0
+host_triplet = x86_64-apple-darwin12.5.0
+subdir = include/curl
+DIST_COMMON = $(pkginclude_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(srcdir)/curlbuild.h.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
+ $(top_srcdir)/m4/curl-confopts.m4 \
+ $(top_srcdir)/m4/curl-functions.m4 \
+ $(top_srcdir)/m4/curl-override.m4 \
+ $(top_srcdir)/m4/curl-reentrant.m4 \
+ $(top_srcdir)/m4/curl-system.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
+ $(top_builddir)/src/curl_config.h curlbuild.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(pkgincludedir)"
+pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER)
+HEADERS = $(pkginclude_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkgincludedir = $(includedir)/curl
+ACLOCAL = ${SHELL} "/iraf/iraf/vendor/voclient/common/curl/missing" --run aclocal-1.9
+AMDEP_FALSE = #
+AMDEP_TRUE =
+AMTAR = ${SHELL} "/iraf/iraf/vendor/voclient/common/curl/missing" --run tar
+AR = /usr/bin/ar
+AS = as
+AUTOCONF = ${SHELL} "/iraf/iraf/vendor/voclient/common/curl/missing" --run autoconf
+AUTOHEADER = ${SHELL} "/iraf/iraf/vendor/voclient/common/curl/missing" --run autoheader
+AUTOMAKE = ${SHELL} "/iraf/iraf/vendor/voclient/common/curl/missing" --run automake-1.9
+AWK = awk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -arch i386 -m32 -mmacosx-version-min=10.4 -g0 -O2 -Wno-system-headers
+CONFIGURE_OPTIONS = " '--prefix=/iraf/iraf/vendor/voclient/' '--exec-prefix=/iraf/iraf/vendor/voclient/' '--disable-shared' '' '--disable-ftp' '' '--disable-file' '' '--disable-ldap' '' '--disable-ldaps' '' '--disable-proxy' '' '--disable-dict' '' '--disable-telnet' '' '--disable-tftp' '' '--disable-manual' '' '--disable-ipv6' '' '--disable-ares' '' '--disable-sspi' '' '--disable-crypto-auth' '' '--without-krb4' '' '--without-ssl' '' '--without-zlib' '' '--without-libssh2' '' '--without-gnutls' '' '--without-nss' '' '--without-ca-path' '' '--without-libidn' 'build_alias=' 'host_alias=' 'target_alias=' 'CC=gcc' 'CFLAGS=-arch i386 -m32 -mmacosx-version-min=10.4' 'LDFLAGS=-arch i386 -m32 -mmacosx-version-min=10.4'"
+CPP = gcc -E
+CPPFLAGS =
+CROSSCOMPILING_FALSE =
+CROSSCOMPILING_TRUE = #
+CURLDEBUG_FALSE =
+CURLDEBUG_TRUE = #
+CURL_CA_BUNDLE =
+CURL_DISABLE_DICT = 1
+CURL_DISABLE_FILE = 1
+CURL_DISABLE_FTP = 1
+CURL_DISABLE_HTTP =
+CURL_DISABLE_IMAP =
+CURL_DISABLE_LDAP = 1
+CURL_DISABLE_LDAPS = 1
+CURL_DISABLE_POP3 =
+CURL_DISABLE_PROXY = 1
+CURL_DISABLE_RTSP =
+CURL_DISABLE_SMTP =
+CURL_DISABLE_TELNET = 1
+CURL_DISABLE_TFTP = 1
+CURL_LIBS =
+CYGPATH_W = echo
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+DLLTOOL = dlltool
+DSYMUTIL = dsymutil
+DUMPBIN =
+ECHO_C = \c
+ECHO_N =
+ECHO_T =
+EGREP = /usr/bin/grep -E
+EXEEXT =
+FGREP = /usr/bin/grep -F
+GREP = /usr/bin/grep
+HAVE_LIBZ =
+HAVE_LIBZ_FALSE =
+HAVE_LIBZ_TRUE = #
+HAVE_PK11_CREATEGENERICOBJECT =
+IDN_ENABLED =
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+IPV6_ENABLED =
+KRB4_ENABLED =
+LD = /usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld
+LDFLAGS = -arch i386 -m32 -mmacosx-version-min=10.4
+LIBCURL_LIBS =
+LIBOBJS =
+LIBS =
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LIPO = lipo
+LN_S = ln -s
+LTLIBOBJS =
+MAINT = #
+MAINTAINER_MODE_FALSE =
+MAINTAINER_MODE_TRUE = #
+MAKEINFO = ${SHELL} "/iraf/iraf/vendor/voclient/common/curl/missing" --run makeinfo
+MANOPT = -man
+MIMPURE_FALSE =
+MIMPURE_TRUE = #
+NM = /usr/bin/nm
+NMEDIT = nmedit
+NO_UNDEFINED_FALSE =
+NO_UNDEFINED_TRUE = #
+NROFF = /usr/bin/nroff
+OBJDUMP = objdump
+OBJEXT = o
+OTOOL = otool
+OTOOL64 = :
+PACKAGE = curl
+PACKAGE_BUGREPORT = a suitable curl mailing list => http://curl.haxx.se/mail/
+PACKAGE_NAME = curl
+PACKAGE_STRING = curl -
+PACKAGE_TARNAME = curl
+PACKAGE_URL =
+PACKAGE_VERSION = -
+PATH = /Users/fitz/.iraf/bin:.:/Users/fitz/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/bin:/opt/local/bin:/usr/local/sbin:/usr/local/pvm/pvm3/bin:/usr/local/pvm/pvm3/lib:/usr/local/ch/bin:/usr/local/astrometry/bin:/usr/local/mysql/bin:/Developer/NVIDIA/CUDA-5.0/bin:/usr/X11R6/bin:/usr/local/git/bin
+PATH_SEPARATOR = :
+PERL = /usr/bin/perl
+PKGADD_NAME = cURL - a client that groks URLs
+PKGADD_PKG = HAXXcurl
+PKGADD_VENDOR = curl.haxx.se
+PKGCONFIG =
+RANDOM_FILE =
+RANLIB = ranlib
+REQUIRE_LIB_DEPS = yes
+SED = /usr/bin/sed
+SET_MAKE =
+SHELL = /bin/sh
+SONAME_BUMP_FALSE =
+SONAME_BUMP_TRUE = #
+SSL_ENABLED =
+STATICLIB_FALSE =
+STATICLIB_TRUE = #
+STRIP = strip
+SUPPORT_FEATURES =
+SUPPORT_PROTOCOLS = HTTP IMAP POP3 RTSP SMTP
+TEST_SERVER_LIBS =
+USE_ARES =
+USE_EMBEDDED_ARES_FALSE =
+USE_EMBEDDED_ARES_TRUE = #
+USE_GNUTLS =
+USE_LIBSSH2 =
+USE_MANUAL_FALSE =
+USE_MANUAL_TRUE = #
+USE_NSS =
+USE_SSLEAY =
+USE_WINDOWS_SSPI =
+VERSION = 7.20.1
+VERSIONNUM = 071401
+ac_ct_CC = gcc
+ac_ct_DUMPBIN =
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE =
+am__include = include
+am__leading_dot = .
+am__quote =
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-apple-darwin12.5.0
+build_alias =
+build_cpu = x86_64
+build_os = darwin12.5.0
+build_vendor = apple
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+exec_prefix = /iraf/iraf/vendor/voclient
+host = x86_64-apple-darwin12.5.0
+host_alias =
+host_cpu = x86_64
+host_os = darwin12.5.0
+host_vendor = apple
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = /iraf/iraf/vendor/voclient/common/curl/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+libext = a
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+lt_ECHO = /bin/echo
+mandir = ${datarootdir}/man
+mkdir_p = $(mkinstalldirs)
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /iraf/iraf/vendor/voclient
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+subdirs =
+sysconfdir = ${prefix}/etc
+target_alias =
+pkginclude_HEADERS = \
+ curl.h curlver.h easy.h mprintf.h stdcheaders.h types.h multi.h \
+ typecheck-gcc.h curlbuild.h curlrules.h
+
+
+# curlbuild.h does not exist in the git tree. When the original libcurl
+# source code distribution archive file is created, curlbuild.h.dist is
+# renamed to curlbuild.h and included in the tarball so that it can be
+# used directly on non-configure systems.
+#
+# The distributed curlbuild.h will be overwritten on configure systems
+# when the configure script runs, with one that is suitable and specific
+# to the library being configured and built.
+#
+# curlbuild.h.in is the distributed template file from which the configure
+# script creates curlbuild.h at library configuration time, overwiting the
+# one included in the distribution archive.
+#
+# curlbuild.h.dist is not included in the source code distribution archive.
+EXTRA_DIST = curlbuild.h.in
+DISTCLEANFILES = curlbuild.h
+all: curlbuild.h
+ $(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/curl/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --foreign include/curl/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+curlbuild.h: stamp-h3
+ @if test ! -f $@; then \
+ rm -f stamp-h3; \
+ $(MAKE) stamp-h3; \
+ else :; fi
+
+stamp-h3: $(srcdir)/curlbuild.h.in $(top_builddir)/config.status
+ @rm -f stamp-h3
+ cd $(top_builddir) && $(SHELL) ./config.status include/curl/curlbuild.h
+$(srcdir)/curlbuild.h.in: # $(am__configure_deps)
+ cd $(top_srcdir) && $(AUTOHEADER)
+ rm -f stamp-h3
+ touch $@
+
+distclean-hdr:
+ -rm -f curlbuild.h stamp-h3
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+install-pkgincludeHEADERS: $(pkginclude_HEADERS)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkgincludedir)" || $(mkdir_p) "$(DESTDIR)$(pkgincludedir)"
+ @list='$(pkginclude_HEADERS)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(pkgincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgincludedir)/$$f'"; \
+ $(pkgincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgincludedir)/$$f"; \
+ done
+
+uninstall-pkgincludeHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkginclude_HEADERS)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(pkgincludedir)/$$f'"; \
+ rm -f "$(DESTDIR)$(pkgincludedir)/$$f"; \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) curlbuild.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) curlbuild.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) curlbuild.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) curlbuild.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(HEADERS) curlbuild.h
+installdirs:
+ for dir in "$(DESTDIR)$(pkgincludedir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-hdr \
+ distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-pkgincludeHEADERS
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool ctags distclean distclean-generic distclean-hdr \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-exec install-exec-am install-info \
+ install-info-am install-man install-pkgincludeHEADERS \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am uninstall-info-am \
+ uninstall-pkgincludeHEADERS
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/vendor/voclient/include/curl/Makefile.am b/vendor/voclient/include/curl/Makefile.am
new file mode 100644
index 00000000..a3b44438
--- /dev/null
+++ b/vendor/voclient/include/curl/Makefile.am
@@ -0,0 +1,25 @@
+pkginclude_HEADERS = \
+ curl.h curlver.h easy.h mprintf.h stdcheaders.h types.h multi.h \
+ typecheck-gcc.h curlbuild.h curlrules.h
+
+pkgincludedir= $(includedir)/curl
+
+# curlbuild.h does not exist in the git tree. When the original libcurl
+# source code distribution archive file is created, curlbuild.h.dist is
+# renamed to curlbuild.h and included in the tarball so that it can be
+# used directly on non-configure systems.
+#
+# The distributed curlbuild.h will be overwritten on configure systems
+# when the configure script runs, with one that is suitable and specific
+# to the library being configured and built.
+#
+# curlbuild.h.in is the distributed template file from which the configure
+# script creates curlbuild.h at library configuration time, overwiting the
+# one included in the distribution archive.
+#
+# curlbuild.h.dist is not included in the source code distribution archive.
+
+EXTRA_DIST = curlbuild.h.in
+
+DISTCLEANFILES = curlbuild.h
+
diff --git a/vendor/voclient/include/curl/Makefile.in b/vendor/voclient/include/curl/Makefile.in
new file mode 100644
index 00000000..58eb07b9
--- /dev/null
+++ b/vendor/voclient/include/curl/Makefile.in
@@ -0,0 +1,511 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = include/curl
+DIST_COMMON = $(pkginclude_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(srcdir)/curlbuild.h.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-compilers.m4 \
+ $(top_srcdir)/m4/curl-confopts.m4 \
+ $(top_srcdir)/m4/curl-functions.m4 \
+ $(top_srcdir)/m4/curl-override.m4 \
+ $(top_srcdir)/m4/curl-reentrant.m4 \
+ $(top_srcdir)/m4/curl-system.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/lib/curl_config.h \
+ $(top_builddir)/src/curl_config.h curlbuild.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(pkgincludedir)"
+pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER)
+HEADERS = $(pkginclude_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkgincludedir = $(includedir)/curl
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CONFIGURE_OPTIONS = @CONFIGURE_OPTIONS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CROSSCOMPILING_FALSE = @CROSSCOMPILING_FALSE@
+CROSSCOMPILING_TRUE = @CROSSCOMPILING_TRUE@
+CURLDEBUG_FALSE = @CURLDEBUG_FALSE@
+CURLDEBUG_TRUE = @CURLDEBUG_TRUE@
+CURL_CA_BUNDLE = @CURL_CA_BUNDLE@
+CURL_DISABLE_DICT = @CURL_DISABLE_DICT@
+CURL_DISABLE_FILE = @CURL_DISABLE_FILE@
+CURL_DISABLE_FTP = @CURL_DISABLE_FTP@
+CURL_DISABLE_HTTP = @CURL_DISABLE_HTTP@
+CURL_DISABLE_IMAP = @CURL_DISABLE_IMAP@
+CURL_DISABLE_LDAP = @CURL_DISABLE_LDAP@
+CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@
+CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@
+CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@
+CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@
+CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@
+CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@
+CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
+CURL_LIBS = @CURL_LIBS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAVE_LIBZ = @HAVE_LIBZ@
+HAVE_LIBZ_FALSE = @HAVE_LIBZ_FALSE@
+HAVE_LIBZ_TRUE = @HAVE_LIBZ_TRUE@
+HAVE_PK11_CREATEGENERICOBJECT = @HAVE_PK11_CREATEGENERICOBJECT@
+IDN_ENABLED = @IDN_ENABLED@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+IPV6_ENABLED = @IPV6_ENABLED@
+KRB4_ENABLED = @KRB4_ENABLED@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBCURL_LIBS = @LIBCURL_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MANOPT = @MANOPT@
+MIMPURE_FALSE = @MIMPURE_FALSE@
+MIMPURE_TRUE = @MIMPURE_TRUE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+NO_UNDEFINED_FALSE = @NO_UNDEFINED_FALSE@
+NO_UNDEFINED_TRUE = @NO_UNDEFINED_TRUE@
+NROFF = @NROFF@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH = @PATH@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKGADD_NAME = @PKGADD_NAME@
+PKGADD_PKG = @PKGADD_PKG@
+PKGADD_VENDOR = @PKGADD_VENDOR@
+PKGCONFIG = @PKGCONFIG@
+RANDOM_FILE = @RANDOM_FILE@
+RANLIB = @RANLIB@
+REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SONAME_BUMP_FALSE = @SONAME_BUMP_FALSE@
+SONAME_BUMP_TRUE = @SONAME_BUMP_TRUE@
+SSL_ENABLED = @SSL_ENABLED@
+STATICLIB_FALSE = @STATICLIB_FALSE@
+STATICLIB_TRUE = @STATICLIB_TRUE@
+STRIP = @STRIP@
+SUPPORT_FEATURES = @SUPPORT_FEATURES@
+SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@
+TEST_SERVER_LIBS = @TEST_SERVER_LIBS@
+USE_ARES = @USE_ARES@
+USE_EMBEDDED_ARES_FALSE = @USE_EMBEDDED_ARES_FALSE@
+USE_EMBEDDED_ARES_TRUE = @USE_EMBEDDED_ARES_TRUE@
+USE_GNUTLS = @USE_GNUTLS@
+USE_LIBSSH2 = @USE_LIBSSH2@
+USE_MANUAL_FALSE = @USE_MANUAL_FALSE@
+USE_MANUAL_TRUE = @USE_MANUAL_TRUE@
+USE_NSS = @USE_NSS@
+USE_SSLEAY = @USE_SSLEAY@
+USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@
+VERSION = @VERSION@
+VERSIONNUM = @VERSIONNUM@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+libext = @libext@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+pkginclude_HEADERS = \
+ curl.h curlver.h easy.h mprintf.h stdcheaders.h types.h multi.h \
+ typecheck-gcc.h curlbuild.h curlrules.h
+
+
+# curlbuild.h does not exist in the git tree. When the original libcurl
+# source code distribution archive file is created, curlbuild.h.dist is
+# renamed to curlbuild.h and included in the tarball so that it can be
+# used directly on non-configure systems.
+#
+# The distributed curlbuild.h will be overwritten on configure systems
+# when the configure script runs, with one that is suitable and specific
+# to the library being configured and built.
+#
+# curlbuild.h.in is the distributed template file from which the configure
+# script creates curlbuild.h at library configuration time, overwiting the
+# one included in the distribution archive.
+#
+# curlbuild.h.dist is not included in the source code distribution archive.
+EXTRA_DIST = curlbuild.h.in
+DISTCLEANFILES = curlbuild.h
+all: curlbuild.h
+ $(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/curl/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --foreign include/curl/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+curlbuild.h: stamp-h3
+ @if test ! -f $@; then \
+ rm -f stamp-h3; \
+ $(MAKE) stamp-h3; \
+ else :; fi
+
+stamp-h3: $(srcdir)/curlbuild.h.in $(top_builddir)/config.status
+ @rm -f stamp-h3
+ cd $(top_builddir) && $(SHELL) ./config.status include/curl/curlbuild.h
+$(srcdir)/curlbuild.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_srcdir) && $(AUTOHEADER)
+ rm -f stamp-h3
+ touch $@
+
+distclean-hdr:
+ -rm -f curlbuild.h stamp-h3
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+install-pkgincludeHEADERS: $(pkginclude_HEADERS)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkgincludedir)" || $(mkdir_p) "$(DESTDIR)$(pkgincludedir)"
+ @list='$(pkginclude_HEADERS)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(pkgincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgincludedir)/$$f'"; \
+ $(pkgincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgincludedir)/$$f"; \
+ done
+
+uninstall-pkgincludeHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkginclude_HEADERS)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(pkgincludedir)/$$f'"; \
+ rm -f "$(DESTDIR)$(pkgincludedir)/$$f"; \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) curlbuild.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) curlbuild.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) curlbuild.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) curlbuild.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(HEADERS) curlbuild.h
+installdirs:
+ for dir in "$(DESTDIR)$(pkgincludedir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-hdr \
+ distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-pkgincludeHEADERS
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool ctags distclean distclean-generic distclean-hdr \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-exec install-exec-am install-info \
+ install-info-am install-man install-pkgincludeHEADERS \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am uninstall-info-am \
+ uninstall-pkgincludeHEADERS
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/vendor/voclient/include/curl/curl.h b/vendor/voclient/include/curl/curl.h
new file mode 100644
index 00000000..e6359682
--- /dev/null
+++ b/vendor/voclient/include/curl/curl.h
@@ -0,0 +1,1996 @@
+#ifndef __CURL_CURL_H
+#define __CURL_CURL_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, 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 http://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:
+ * http://curl.haxx.se/libcurl/
+ *
+ * curl-library mailing list subscription and unsubscription web interface:
+ * http://cool.haxx.se/mailman/listinfo/curl-library/
+ */
+
+#include "curlver.h" /* libcurl version defines */
+#include "curlbuild.h" /* libcurl build definitions */
+#include "curlrules.h" /* libcurl rules enforcement */
+
+/*
+ * Define WIN32 when build target is Win32 API
+ */
+
+#if (defined(_WIN32) || defined(__WIN32__)) && \
+ !defined(WIN32) && !defined(__SYMBIAN32__)
+#define WIN32
+#endif
+
+#include <stdio.h>
+#include <limits.h>
+
+#if defined(__FreeBSD__) && (__FreeBSD__ >= 2)
+/* Needed for __FreeBSD_version symbol definition */
+#include <osreldate.h>
+#endif
+
+/* The include stuff here below is mainly for time_t! */
+#include <sys/types.h>
+#include <time.h>
+
+#if defined(WIN32) && !defined(_WIN32_WCE) && !defined(__GNUC__) && \
+ !defined(__CYGWIN__) || defined(__MINGW32__)
+#if !(defined(_WINSOCKAPI_) || defined(_WINSOCK_H))
+/* The check above prevents the winsock2 inclusion if winsock.h already was
+ included, since they can't co-exist without problems */
+#include <winsock2.h>
+#include <ws2tcpip.h>
+#endif
+#else
+
+/* HP-UX systems version 9, 10 and 11 lack sys/select.h and so does oldish
+ libc5-based Linux systems. Only include it on system that are known to
+ require it! */
+#if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \
+ defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY) || \
+ defined(ANDROID) || \
+ (defined(__FreeBSD_version) && (__FreeBSD_version < 800000))
+#include <sys/select.h>
+#endif
+
+#ifndef _WIN32_WCE
+#include <sys/socket.h>
+#endif
+#if !defined(WIN32) && !defined(__WATCOMC__) && !defined(__VXWORKS__)
+#include <sys/time.h>
+#endif
+#include <sys/types.h>
+#endif
+
+#ifdef __BEOS__
+#include <support/SupportDefs.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef void CURL;
+
+/*
+ * Decorate exportable functions for Win32 and Symbian OS DLL linking.
+ * This avoids using a .def file for building libcurl.dll.
+ */
+#if (defined(WIN32) || defined(_WIN32) || defined(__SYMBIAN32__)) && \
+ !defined(CURL_STATICLIB)
+#if defined(BUILDING_LIBCURL)
+#define CURL_EXTERN __declspec(dllexport)
+#else
+#define CURL_EXTERN __declspec(dllimport)
+#endif
+#else
+
+#ifdef CURL_HIDDEN_SYMBOLS
+/*
+ * This definition is used to make external definitions visible in the
+ * shared library when symbols are hidden by default. It makes no
+ * difference when compiling applications whether this is set or not,
+ * only when compiling the library.
+ */
+#define CURL_EXTERN CURL_EXTERN_SYMBOL
+#else
+#define CURL_EXTERN
+#endif
+#endif
+
+#ifndef curl_socket_typedef
+/* socket typedef */
+#ifdef WIN32
+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 */
+
+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 */
+ 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 */
+#define HTTPPOST_FILENAME (1<<0) /* specified content is a file name */
+#define HTTPPOST_READFILE (1<<1) /* specified content is a file name */
+#define HTTPPOST_PTRNAME (1<<2) /* name is only stored pointer
+ do not free in formfree */
+#define HTTPPOST_PTRCONTENTS (1<<3) /* contents is only stored pointer
+ do not free in formfree */
+#define HTTPPOST_BUFFER (1<<4) /* upload file from buffer */
+#define HTTPPOST_PTRBUFFER (1<<5) /* upload file from pointer contents */
+#define HTTPPOST_CALLBACK (1<<6) /* upload file contents by using the
+ regular read callback to get the data
+ and pass the given pointer as custom
+ pointer */
+
+ 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 */
+};
+
+typedef int (*curl_progress_callback)(void *clientp,
+ double dltotal,
+ double dlnow,
+ double ultotal,
+ double ulnow);
+
+#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);
+
+/* 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_LAST /* never use */
+} curlsocktype;
+
+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 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);
+
+/*
+ * 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);
+
+/* 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_OBSOLETE4, /* 4 - NOT USED */
+ CURLE_COULDNT_RESOLVE_PROXY, /* 5 */
+ CURLE_COULDNT_RESOLVE_HOST, /* 6 */
+ CURLE_COULDNT_CONNECT, /* 7 */
+ CURLE_FTP_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_OBSOLETE10, /* 10 - NOT USED */
+ CURLE_FTP_WEIRD_PASS_REPLY, /* 11 */
+ CURLE_OBSOLETE12, /* 12 - NOT USED */
+ CURLE_FTP_WEIRD_PASV_REPLY, /* 13 */
+ CURLE_FTP_WEIRD_227_FORMAT, /* 14 */
+ CURLE_FTP_CANT_GET_HOST, /* 15 */
+ CURLE_OBSOLETE16, /* 16 - NOT USED */
+ 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 */
+ 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_TELNET_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 transfer 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 Identifiers */
+
+ CURL_LAST /* never use! */
+} CURLcode;
+
+#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all
+ the obsolete stuff removed! */
+
+/* Backwards compatibility with older names */
+
+/* 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 /* noone 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_OBSOLETE4
+
+#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
+
+#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_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 */
+
+#define CURLAUTH_NONE 0 /* nothing */
+#define CURLAUTH_BASIC (1<<0) /* Basic (default) */
+#define CURLAUTH_DIGEST (1<<1) /* Digest */
+#define CURLAUTH_GSSNEGOTIATE (1<<2) /* GSS-Negotiate */
+#define CURLAUTH_NTLM (1<<3) /* NTLM */
+#define CURLAUTH_DIGEST_IE (1<<4) /* Digest with IE flavour */
+#define CURLAUTH_ANY (~CURLAUTH_DIGEST_IE) /* all fine types set */
+#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_DEFAULT CURLSSH_AUTH_ANY
+
+#define CURL_ERROR_SIZE 256
+
+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 type {
+ CURLKHTYPE_UNKNOWN,
+ CURLKHTYPE_RSA1,
+ CURLKHTYPE_RSA,
+ CURLKHTYPE_DSS
+ } 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;
+
+#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;
+
+/* 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_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_FUNCTIONPOINT 20000
+#define CURLOPTTYPE_OFF_T 30000
+
+/* name is uppercase CURLOPT_<name>,
+ type is one of the defined CURLOPTTYPE_<type>
+ number is unique identifier */
+#ifdef CINIT
+#undef CINIT
+#endif
+
+#ifdef CURL_ISOCPP
+#define CINIT(name,type,number) CURLOPT_ ## name = CURLOPTTYPE_ ## type + number
+#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) 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(FILE, OBJECTPOINT, 1),
+
+ /* The full URL to get/put */
+ CINIT(URL, OBJECTPOINT, 2),
+
+ /* Port number to connect to, if other than default. */
+ CINIT(PORT, LONG, 3),
+
+ /* Name of proxy to use. */
+ CINIT(PROXY, OBJECTPOINT, 4),
+
+ /* "name:password" to use when fetching. */
+ CINIT(USERPWD, OBJECTPOINT, 5),
+
+ /* "name:password" to use with proxy. */
+ CINIT(PROXYUSERPWD, OBJECTPOINT, 6),
+
+ /* Range to get, specified as an ASCII string. */
+ CINIT(RANGE, OBJECTPOINT, 7),
+
+ /* not used */
+
+ /* Specified file stream to upload from (use as input): */
+ CINIT(INFILE, OBJECTPOINT, 9),
+
+ /* Buffer to receive error messages in, must be at least CURL_ERROR_SIZE
+ * bytes big. If this is not used, error messages go to stderr instead: */
+ 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, OBJECTPOINT, 16),
+
+ /* Set the FTP PORT string (interface name, named or numerical IP address)
+ Use i.e '-' to use default address. */
+ CINIT(FTPPORT, OBJECTPOINT, 17),
+
+ /* Set the User-Agent string (examined by some CGIs) */
+ CINIT(USERAGENT, OBJECTPOINT, 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, OBJECTPOINT, 22),
+
+ /* This points to a linked list of headers, struct curl_slist kind */
+ 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, OBJECTPOINT, 25),
+
+ /* password for the SSL or SSH private key */
+ CINIT(KEYPASSWD, OBJECTPOINT, 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(WRITEHEADER, OBJECTPOINT, 29),
+
+ /* point to a file to read the initial cookies from, also enables
+ "cookie awareness" */
+ CINIT(COOKIEFILE, OBJECTPOINT, 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, OBJECTPOINT, 36),
+
+ /* HTTP request, for odd commands like DELETE, TRACE and others */
+ CINIT(STDERR, OBJECTPOINT, 37),
+
+ /* 38 is not used */
+
+ /* send linked-list of post-transfer QUOTE commands */
+ CINIT(POSTQUOTE, OBJECTPOINT, 39),
+
+ /* Pass a pointer to string of the output using full variable-replacement
+ as described elsewhere. */
+ CINIT(WRITEINFO, OBJECTPOINT, 40),
+
+ 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 >= 300 */
+ CINIT(UPLOAD, LONG, 46), /* this is an upload */
+ CINIT(POST, LONG, 47), /* HTTP POST method */
+ CINIT(DIRLISTONLY, LONG, 48), /* return 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 */
+
+ /* 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 progress callback */
+ CINIT(PROGRESSDATA, OBJECTPOINT, 57),
+
+ /* 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, OBJECTPOINT, 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, OBJECTPOINT, 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, OBJECTPOINT, 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),
+
+ /* What policy to use when closing connections when the cache is filled
+ up */
+ CINIT(CLOSEPOLICY, LONG, 72),
+
+ /* 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, OBJECTPOINT, 76),
+
+ /* Set to the Entropy Gathering Daemon socket pathname */
+ CINIT(EGDSOCKET, OBJECTPOINT, 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. [Only works on unix-style/SIGALRM operating systems] */
+ 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, OBJECTPOINT, 82),
+
+ /* Specify which SSL ciphers to use */
+ CINIT(SSL_CIPHER_LIST, OBJECTPOINT, 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, OBJECTPOINT, 86),
+
+ /* name of the file keeping your private SSL-key */
+ CINIT(SSLKEY, OBJECTPOINT, 87),
+
+ /* type of the file keeping your private SSL-key ("DER", "PEM", "ENG") */
+ CINIT(SSLKEYTYPE, OBJECTPOINT, 88),
+
+ /* crypto engine for the SSL-sub system */
+ CINIT(SSLENGINE, OBJECTPOINT, 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), /* To become OBSOLETE soon */
+
+ /* 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, OBJECTPOINT, 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_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. */
+ CINIT(ENCODING, OBJECTPOINT, 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, OBJECTPOINT, 118),
+
+ /* Enable SSL/TLS for FTP, pick one of:
+ CURLFTPSSL_TRY - try using SSL, proceed anyway otherwise
+ CURLFTPSSL_CONTROL - SSL for the control connection or fail
+ CURLFTPSSL_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, OBJECTPOINT, 134),
+
+ /* feed cookies into cookie engine */
+ CINIT(COOKIELIST, OBJECTPOINT, 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, OBJECTPOINT, 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, OBJECTPOINT, 152),
+ CINIT(SSH_PRIVATE_KEYFILE, OBJECTPOINT, 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, OBJECTPOINT, 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=<a|i>) 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, OBJECTPOINT, 169),
+
+ /* Issuer certificate */
+ CINIT(ISSUERCERT, OBJECTPOINT, 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. (Unfortunately) only
+ working with OpenSSL-powered builds. */
+ CINIT(CERTINFO, LONG, 172),
+
+ /* "name" and "pwd" to use when fetching. */
+ CINIT(USERNAME, OBJECTPOINT, 173),
+ CINIT(PASSWORD, OBJECTPOINT, 174),
+
+ /* "name" and "pwd" to use with Proxy when fetching. */
+ CINIT(PROXYUSERNAME, OBJECTPOINT, 175),
+ CINIT(PROXYPASSWORD, OBJECTPOINT, 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, OBJECTPOINT, 177),
+
+ /* block size for TFTP transfers */
+ CINIT(TFTP_BLKSIZE, LONG, 178),
+
+ /* Socks Service */
+ CINIT(SOCKS5_GSSAPI_SERVICE, OBJECTPOINT, 179),
+
+ /* 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, OBJECTPOINT, 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, OBJECTPOINT, 186),
+
+ /* set the 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, OBJECTPOINT, 190),
+
+ /* The RTSP stream URI */
+ CINIT(RTSP_STREAM_URI, OBJECTPOINT, 191),
+
+ /* The Transport: header to use in RTSP requests */
+ CINIT(RTSP_TRANSPORT, OBJECTPOINT, 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),
+
+ 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_WRITEDATA CURLOPT_FILE
+#define CURLOPT_READDATA CURLOPT_INFILE
+#define CURLOPT_HEADERDATA CURLOPT_WRITEHEADER
+#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_LAST /* *ILLEGAL* http version */
+};
+
+/*
+ * 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,
+ CURL_SSLVERSION_SSLv2,
+ CURL_SSLVERSION_SSLv3,
+
+ CURL_SSLVERSION_LAST /* never use, keep last */
+};
+
+/* symbols to use with CURLOPT_POSTREDIR.
+ CURL_REDIR_POST_301 and CURL_REDIR_POST_302 can be bitwise ORed so that
+ CURL_REDIR_POST_301 | CURL_REDIR_POST_302 == 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_ALL (CURL_REDIR_POST_301|CURL_REDIR_POST_302)
+
+typedef enum {
+ CURL_TIMECOND_NONE,
+
+ CURL_TIMECOND_IFMODSINCE,
+ CURL_TIMECOND_IFUNMODSINCE,
+ CURL_TIMECOND_LASTMOD,
+
+ CURL_TIMECOND_LAST
+} curl_TimeCond;
+
+
+/* curl_strequal() and curl_strnequal() are subject for removal in a future
+ libcurl, see lib/README.curlx for details */
+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);
+
+/* name is uppercase CURLFORM_<name> */
+#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),
+
+ 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_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" */
+};
+
+#define CURLINFO_STRING 0x100000
+#define CURLINFO_LONG 0x200000
+#define CURLINFO_DOUBLE 0x300000
+#define CURLINFO_SLIST 0x400000
+#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_DOWNLOAD = CURLINFO_DOUBLE + 8,
+ CURLINFO_SPEED_DOWNLOAD = CURLINFO_DOUBLE + 9,
+ CURLINFO_SPEED_UPLOAD = CURLINFO_DOUBLE + 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_CONTENT_LENGTH_DOWNLOAD = CURLINFO_DOUBLE + 15,
+ CURLINFO_CONTENT_LENGTH_UPLOAD = CURLINFO_DOUBLE + 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_SLIST + 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,
+ /* Fill in new entries below here! */
+
+ CURLINFO_LASTONE = 39
+} 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)
+#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
+
+
+/*****************************************************************************
+ * 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 void CURLSH;
+
+typedef enum {
+ CURLSHE_OK, /* all is fine */
+ CURLSHE_BAD_OPTION, /* 1 */
+ CURLSHE_IN_USE, /* 2 */
+ CURLSHE_INVALID, /* 3 */
+ CURLSHE_NOMEM, /* out of memory */
+ 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_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_FOURTH
+
+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 */
+
+} curl_version_info_data;
+
+#define CURL_VERSION_IPV6 (1<<0) /* IPv6-enabled */
+#define CURL_VERSION_KERBEROS4 (1<<1) /* kerberos auth is supported */
+#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 support */
+#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 */
+#define CURL_VERSION_LARGEFILE (1<<9) /* supports files bigger than 2GB */
+#define CURL_VERSION_IDN (1<<10) /* International Domain Names support */
+#define CURL_VERSION_SSPI (1<<11) /* SSPI is supported */
+#define CURL_VERSION_CONV (1<<12) /* character conversions supported */
+#define CURL_VERSION_CURLDEBUG (1<<13) /* debug memory tracking supported */
+
+/*
+ * 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/vendor/voclient/include/curl/curlbuild.h b/vendor/voclient/include/curl/curlbuild.h
new file mode 100644
index 00000000..81f4a285
--- /dev/null
+++ b/vendor/voclient/include/curl/curlbuild.h
@@ -0,0 +1,191 @@
+/* include/curl/curlbuild.h. Generated from curlbuild.h.in by configure. */
+#ifndef __CURL_CURLBUILD_H
+#define __CURL_CURLBUILD_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, 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 http://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.
+ *
+ ***************************************************************************/
+
+/* ================================================================ */
+/* NOTES FOR CONFIGURE CAPABLE SYSTEMS */
+/* ================================================================ */
+
+/*
+ * NOTE 1:
+ * -------
+ *
+ * Nothing in this file is intended to be modified or adjusted by the
+ * curl library user nor by the curl library builder.
+ *
+ * If you think that something actually needs to be changed, adjusted
+ * or fixed in this file, then, report it on the libcurl development
+ * mailing list: http://cool.haxx.se/mailman/listinfo/curl-library/
+ *
+ * This header file shall only export symbols which are 'curl' or 'CURL'
+ * prefixed, otherwise public name space would be polluted.
+ *
+ * NOTE 2:
+ * -------
+ *
+ * Right now you might be staring at file include/curl/curlbuild.h.in or
+ * at file include/curl/curlbuild.h, this is due to the following reason:
+ *
+ * On systems capable of running the configure script, the configure process
+ * will overwrite the distributed include/curl/curlbuild.h file with one that
+ * is suitable and specific to the library being configured and built, which
+ * is generated from the include/curl/curlbuild.h.in template file.
+ *
+ */
+
+/* ================================================================ */
+/* DEFINITION OF THESE SYMBOLS SHALL NOT TAKE PLACE ANYWHERE ELSE */
+/* ================================================================ */
+
+#ifdef CURL_SIZEOF_LONG
+# error "CURL_SIZEOF_LONG shall not be defined except in curlbuild.h"
+ Error Compilation_aborted_CURL_SIZEOF_LONG_already_defined
+#endif
+
+#ifdef CURL_TYPEOF_CURL_SOCKLEN_T
+# error "CURL_TYPEOF_CURL_SOCKLEN_T shall not be defined except in curlbuild.h"
+ Error Compilation_aborted_CURL_TYPEOF_CURL_SOCKLEN_T_already_defined
+#endif
+
+#ifdef CURL_SIZEOF_CURL_SOCKLEN_T
+# error "CURL_SIZEOF_CURL_SOCKLEN_T shall not be defined except in curlbuild.h"
+ Error Compilation_aborted_CURL_SIZEOF_CURL_SOCKLEN_T_already_defined
+#endif
+
+#ifdef CURL_TYPEOF_CURL_OFF_T
+# error "CURL_TYPEOF_CURL_OFF_T shall not be defined except in curlbuild.h"
+ Error Compilation_aborted_CURL_TYPEOF_CURL_OFF_T_already_defined
+#endif
+
+#ifdef CURL_FORMAT_CURL_OFF_T
+# error "CURL_FORMAT_CURL_OFF_T shall not be defined except in curlbuild.h"
+ Error Compilation_aborted_CURL_FORMAT_CURL_OFF_T_already_defined
+#endif
+
+#ifdef CURL_FORMAT_CURL_OFF_TU
+# error "CURL_FORMAT_CURL_OFF_TU shall not be defined except in curlbuild.h"
+ Error Compilation_aborted_CURL_FORMAT_CURL_OFF_TU_already_defined
+#endif
+
+#ifdef CURL_FORMAT_OFF_T
+# error "CURL_FORMAT_OFF_T shall not be defined except in curlbuild.h"
+ Error Compilation_aborted_CURL_FORMAT_OFF_T_already_defined
+#endif
+
+#ifdef CURL_SIZEOF_CURL_OFF_T
+# error "CURL_SIZEOF_CURL_OFF_T shall not be defined except in curlbuild.h"
+ Error Compilation_aborted_CURL_SIZEOF_CURL_OFF_T_already_defined
+#endif
+
+#ifdef CURL_SUFFIX_CURL_OFF_T
+# error "CURL_SUFFIX_CURL_OFF_T shall not be defined except in curlbuild.h"
+ Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_T_already_defined
+#endif
+
+#ifdef CURL_SUFFIX_CURL_OFF_TU
+# error "CURL_SUFFIX_CURL_OFF_TU shall not be defined except in curlbuild.h"
+ Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_TU_already_defined
+#endif
+
+/* ================================================================ */
+/* EXTERNAL INTERFACE SETTINGS FOR CONFIGURE CAPABLE SYSTEMS ONLY */
+/* ================================================================ */
+
+/* Configure process defines this to 1 when it finds out that system */
+/* header file ws2tcpip.h must be included by the external interface. */
+/* #undef CURL_PULL_WS2TCPIP_H */
+#ifdef CURL_PULL_WS2TCPIP_H
+# ifndef WIN32_LEAN_AND_MEAN
+# define WIN32_LEAN_AND_MEAN
+# endif
+# include <windows.h>
+# include <winsock2.h>
+# include <ws2tcpip.h>
+#endif
+
+/* Configure process defines this to 1 when it finds out that system */
+/* header file sys/types.h must be included by the external interface. */
+#define CURL_PULL_SYS_TYPES_H 1
+#ifdef CURL_PULL_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+
+/* Configure process defines this to 1 when it finds out that system */
+/* header file stdint.h must be included by the external interface. */
+#define CURL_PULL_STDINT_H 1
+#ifdef CURL_PULL_STDINT_H
+# include <stdint.h>
+#endif
+
+/* Configure process defines this to 1 when it finds out that system */
+/* header file inttypes.h must be included by the external interface. */
+#define CURL_PULL_INTTYPES_H 1
+#ifdef CURL_PULL_INTTYPES_H
+# include <inttypes.h>
+#endif
+
+/* Configure process defines this to 1 when it finds out that system */
+/* header file sys/socket.h must be included by the external interface. */
+#define CURL_PULL_SYS_SOCKET_H 1
+#ifdef CURL_PULL_SYS_SOCKET_H
+# include <sys/socket.h>
+#endif
+
+/* The size of `long', as computed by sizeof. */
+#define CURL_SIZEOF_LONG 4
+
+/* Integral data type used for curl_socklen_t. */
+#define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
+
+/* The size of `curl_socklen_t', as computed by sizeof. */
+#define CURL_SIZEOF_CURL_SOCKLEN_T 4
+
+/* Data type definition of curl_socklen_t. */
+typedef CURL_TYPEOF_CURL_SOCKLEN_T curl_socklen_t;
+
+/* Signed integral data type used for curl_off_t. */
+#define CURL_TYPEOF_CURL_OFF_T int64_t
+
+/* Data type definition of curl_off_t. */
+typedef CURL_TYPEOF_CURL_OFF_T curl_off_t;
+
+/* curl_off_t formatting string directive without "%" conversion specifier. */
+#define CURL_FORMAT_CURL_OFF_T "lld"
+
+/* unsigned curl_off_t formatting string without "%" conversion specifier. */
+#define CURL_FORMAT_CURL_OFF_TU "llu"
+
+/* curl_off_t formatting string directive with "%" conversion specifier. */
+#define CURL_FORMAT_OFF_T "%lld"
+
+/* The size of `curl_off_t', as computed by sizeof. */
+#define CURL_SIZEOF_CURL_OFF_T 8
+
+/* curl_off_t constant suffix. */
+#define CURL_SUFFIX_CURL_OFF_T LL
+
+/* unsigned curl_off_t constant suffix. */
+#define CURL_SUFFIX_CURL_OFF_TU ULL
+
+#endif /* __CURL_CURLBUILD_H */
diff --git a/vendor/voclient/include/curl/curlbuild.h.cmake b/vendor/voclient/include/curl/curlbuild.h.cmake
new file mode 100644
index 00000000..3aa772fc
--- /dev/null
+++ b/vendor/voclient/include/curl/curlbuild.h.cmake
@@ -0,0 +1,180 @@
+#ifndef __CURL_CURLBUILD_H
+#define __CURL_CURLBUILD_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, 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 http://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.
+ *
+ ***************************************************************************/
+
+/* ================================================================ */
+/* NOTES FOR CONFIGURE CAPABLE SYSTEMS */
+/* ================================================================ */
+
+/*
+ * NOTE 1:
+ * -------
+ *
+ * Nothing in this file is intended to be modified or adjusted by the
+ * curl library user nor by the curl library builder.
+ *
+ * If you think that something actually needs to be changed, adjusted
+ * or fixed in this file, then, report it on the libcurl development
+ * mailing list: http://cool.haxx.se/mailman/listinfo/curl-library/
+ *
+ * This header file shall only export symbols which are 'curl' or 'CURL'
+ * prefixed, otherwise public name space would be polluted.
+ *
+ * NOTE 2:
+ * -------
+ *
+ * Right now you might be staring at file include/curl/curlbuild.h.in or
+ * at file include/curl/curlbuild.h, this is due to the following reason:
+ *
+ * On systems capable of running the configure script, the configure process
+ * will overwrite the distributed include/curl/curlbuild.h file with one that
+ * is suitable and specific to the library being configured and built, which
+ * is generated from the include/curl/curlbuild.h.in template file.
+ *
+ */
+
+/* ================================================================ */
+/* DEFINITION OF THESE SYMBOLS SHALL NOT TAKE PLACE ANYWHERE ELSE */
+/* ================================================================ */
+
+#ifdef CURL_SIZEOF_LONG
+# error "CURL_SIZEOF_LONG shall not be defined except in curlbuild.h"
+ Error Compilation_aborted_CURL_SIZEOF_LONG_already_defined
+#endif
+
+#ifdef CURL_TYPEOF_CURL_SOCKLEN_T
+# error "CURL_TYPEOF_CURL_SOCKLEN_T shall not be defined except in curlbuild.h"
+ Error Compilation_aborted_CURL_TYPEOF_CURL_SOCKLEN_T_already_defined
+#endif
+
+#ifdef CURL_SIZEOF_CURL_SOCKLEN_T
+# error "CURL_SIZEOF_CURL_SOCKLEN_T shall not be defined except in curlbuild.h"
+ Error Compilation_aborted_CURL_SIZEOF_CURL_SOCKLEN_T_already_defined
+#endif
+#ifdef CURL_TYPEOF_CURL_OFF_T
+# error "CURL_TYPEOF_CURL_OFF_T shall not be defined except in curlbuild.h"
+ Error Compilation_aborted_CURL_TYPEOF_CURL_OFF_T_already_defined
+#endif
+
+#ifdef CURL_FORMAT_CURL_OFF_T
+# error "CURL_FORMAT_CURL_OFF_T shall not be defined except in curlbuild.h"
+ Error Compilation_aborted_CURL_FORMAT_CURL_OFF_T_already_defined
+#endif
+
+#ifdef CURL_FORMAT_CURL_OFF_TU
+# error "CURL_FORMAT_CURL_OFF_TU shall not be defined except in curlbuild.h"
+ Error Compilation_aborted_CURL_FORMAT_CURL_OFF_TU_already_defined
+#endif
+
+#ifdef CURL_FORMAT_OFF_T
+# error "CURL_FORMAT_OFF_T shall not be defined except in curlbuild.h"
+ Error Compilation_aborted_CURL_FORMAT_OFF_T_already_defined
+#endif
+
+#ifdef CURL_SIZEOF_CURL_OFF_T
+# error "CURL_SIZEOF_CURL_OFF_T shall not be defined except in curlbuild.h"
+ Error Compilation_aborted_CURL_SIZEOF_CURL_OFF_T_already_defined
+#endif
+
+#ifdef CURL_SUFFIX_CURL_OFF_T
+# error "CURL_SUFFIX_CURL_OFF_T shall not be defined except in curlbuild.h"
+ Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_T_already_defined
+#endif
+
+#ifdef CURL_SUFFIX_CURL_OFF_TU
+# error "CURL_SUFFIX_CURL_OFF_TU shall not be defined except in curlbuild.h"
+ Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_TU_already_defined
+#endif
+
+/* ================================================================ */
+/* EXTERNAL INTERFACE SETTINGS FOR CONFIGURE CAPABLE SYSTEMS ONLY */
+/* ================================================================ */
+
+/* Configure process defines this to 1 when it finds out that system */
+/* header file sys/types.h must be included by the external interface. */
+#cmakedefine CURL_PULL_SYS_TYPES_H ${CURL_PULL_SYS_TYPES_H}
+#ifdef CURL_PULL_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+
+/* Configure process defines this to 1 when it finds out that system */
+/* header file stdint.h must be included by the external interface. */
+#cmakedefine CURL_PULL_STDINT_H ${CURL_PULL_STDINT_H}
+#ifdef CURL_PULL_STDINT_H
+# include <stdint.h>
+#endif
+
+/* Configure process defines this to 1 when it finds out that system */
+/* header file inttypes.h must be included by the external interface. */
+#cmakedefine CURL_PULL_INTTYPES_H ${CURL_PULL_INTTYPES_H}
+#ifdef CURL_PULL_INTTYPES_H
+# include <inttypes.h>
+#endif
+
+/* The size of `long', as computed by sizeof. */
+#cmakedefine CURL_SIZEOF_LONG ${CURL_SIZEOF_LONG}
+
+/* Integral data type used for curl_socklen_t. */
+#cmakedefine CURL_TYPEOF_CURL_SOCKLEN_T ${CURL_TYPEOF_CURL_SOCKLEN_T}
+
+/* on windows socklen_t is in here */
+#ifdef _WIN32
+# include <winsock2.h>
+# include <ws2tcpip.h>
+#endif
+
+#ifdef HAVE_SYS_SOCKET_H
+# include <sys/socket.h>
+#endif
+
+/* Data type definition of curl_socklen_t. */
+typedef CURL_TYPEOF_CURL_SOCKLEN_T curl_socklen_t;
+
+/* The size of `curl_socklen_t', as computed by sizeof. */
+#cmakedefine CURL_SIZEOF_CURL_SOCKLEN_T ${CURL_SIZEOF_CURL_SOCKLEN_T}
+
+/* Signed integral data type used for curl_off_t. */
+#cmakedefine CURL_TYPEOF_CURL_OFF_T ${CURL_TYPEOF_CURL_OFF_T}
+
+/* Data type definition of curl_off_t. */
+typedef CURL_TYPEOF_CURL_OFF_T curl_off_t;
+
+/* curl_off_t formatting string directive without "%" conversion specifier. */
+#cmakedefine CURL_FORMAT_CURL_OFF_T "${CURL_FORMAT_CURL_OFF_T}"
+
+/* unsigned curl_off_t formatting string without "%" conversion specifier. */
+#cmakedefine CURL_FORMAT_CURL_OFF_TU "${CURL_FORMAT_CURL_OFF_TU}"
+
+/* curl_off_t formatting string directive with "%" conversion specifier. */
+#cmakedefine CURL_FORMAT_OFF_T "${CURL_FORMAT_OFF_T}"
+
+/* The size of `curl_off_t', as computed by sizeof. */
+#cmakedefine CURL_SIZEOF_CURL_OFF_T ${CURL_SIZEOF_CURL_OFF_T}
+
+/* curl_off_t constant suffix. */
+#cmakedefine CURL_SUFFIX_CURL_OFF_T ${CURL_SUFFIX_CURL_OFF_T}
+
+/* unsigned curl_off_t constant suffix. */
+#cmakedefine CURL_SUFFIX_CURL_OFF_TU ${CURL_SUFFIX_CURL_OFF_TU}
+
+#endif /* __CURL_CURLBUILD_H */
diff --git a/vendor/voclient/include/curl/curlbuild.h.in b/vendor/voclient/include/curl/curlbuild.h.in
new file mode 100644
index 00000000..cb1de80a
--- /dev/null
+++ b/vendor/voclient/include/curl/curlbuild.h.in
@@ -0,0 +1,190 @@
+#ifndef __CURL_CURLBUILD_H
+#define __CURL_CURLBUILD_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, 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 http://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.
+ *
+ ***************************************************************************/
+
+/* ================================================================ */
+/* NOTES FOR CONFIGURE CAPABLE SYSTEMS */
+/* ================================================================ */
+
+/*
+ * NOTE 1:
+ * -------
+ *
+ * Nothing in this file is intended to be modified or adjusted by the
+ * curl library user nor by the curl library builder.
+ *
+ * If you think that something actually needs to be changed, adjusted
+ * or fixed in this file, then, report it on the libcurl development
+ * mailing list: http://cool.haxx.se/mailman/listinfo/curl-library/
+ *
+ * This header file shall only export symbols which are 'curl' or 'CURL'
+ * prefixed, otherwise public name space would be polluted.
+ *
+ * NOTE 2:
+ * -------
+ *
+ * Right now you might be staring at file include/curl/curlbuild.h.in or
+ * at file include/curl/curlbuild.h, this is due to the following reason:
+ *
+ * On systems capable of running the configure script, the configure process
+ * will overwrite the distributed include/curl/curlbuild.h file with one that
+ * is suitable and specific to the library being configured and built, which
+ * is generated from the include/curl/curlbuild.h.in template file.
+ *
+ */
+
+/* ================================================================ */
+/* DEFINITION OF THESE SYMBOLS SHALL NOT TAKE PLACE ANYWHERE ELSE */
+/* ================================================================ */
+
+#ifdef CURL_SIZEOF_LONG
+# error "CURL_SIZEOF_LONG shall not be defined except in curlbuild.h"
+ Error Compilation_aborted_CURL_SIZEOF_LONG_already_defined
+#endif
+
+#ifdef CURL_TYPEOF_CURL_SOCKLEN_T
+# error "CURL_TYPEOF_CURL_SOCKLEN_T shall not be defined except in curlbuild.h"
+ Error Compilation_aborted_CURL_TYPEOF_CURL_SOCKLEN_T_already_defined
+#endif
+
+#ifdef CURL_SIZEOF_CURL_SOCKLEN_T
+# error "CURL_SIZEOF_CURL_SOCKLEN_T shall not be defined except in curlbuild.h"
+ Error Compilation_aborted_CURL_SIZEOF_CURL_SOCKLEN_T_already_defined
+#endif
+
+#ifdef CURL_TYPEOF_CURL_OFF_T
+# error "CURL_TYPEOF_CURL_OFF_T shall not be defined except in curlbuild.h"
+ Error Compilation_aborted_CURL_TYPEOF_CURL_OFF_T_already_defined
+#endif
+
+#ifdef CURL_FORMAT_CURL_OFF_T
+# error "CURL_FORMAT_CURL_OFF_T shall not be defined except in curlbuild.h"
+ Error Compilation_aborted_CURL_FORMAT_CURL_OFF_T_already_defined
+#endif
+
+#ifdef CURL_FORMAT_CURL_OFF_TU
+# error "CURL_FORMAT_CURL_OFF_TU shall not be defined except in curlbuild.h"
+ Error Compilation_aborted_CURL_FORMAT_CURL_OFF_TU_already_defined
+#endif
+
+#ifdef CURL_FORMAT_OFF_T
+# error "CURL_FORMAT_OFF_T shall not be defined except in curlbuild.h"
+ Error Compilation_aborted_CURL_FORMAT_OFF_T_already_defined
+#endif
+
+#ifdef CURL_SIZEOF_CURL_OFF_T
+# error "CURL_SIZEOF_CURL_OFF_T shall not be defined except in curlbuild.h"
+ Error Compilation_aborted_CURL_SIZEOF_CURL_OFF_T_already_defined
+#endif
+
+#ifdef CURL_SUFFIX_CURL_OFF_T
+# error "CURL_SUFFIX_CURL_OFF_T shall not be defined except in curlbuild.h"
+ Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_T_already_defined
+#endif
+
+#ifdef CURL_SUFFIX_CURL_OFF_TU
+# error "CURL_SUFFIX_CURL_OFF_TU shall not be defined except in curlbuild.h"
+ Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_TU_already_defined
+#endif
+
+/* ================================================================ */
+/* EXTERNAL INTERFACE SETTINGS FOR CONFIGURE CAPABLE SYSTEMS ONLY */
+/* ================================================================ */
+
+/* Configure process defines this to 1 when it finds out that system */
+/* header file ws2tcpip.h must be included by the external interface. */
+#undef CURL_PULL_WS2TCPIP_H
+#ifdef CURL_PULL_WS2TCPIP_H
+# ifndef WIN32_LEAN_AND_MEAN
+# define WIN32_LEAN_AND_MEAN
+# endif
+# include <windows.h>
+# include <winsock2.h>
+# include <ws2tcpip.h>
+#endif
+
+/* Configure process defines this to 1 when it finds out that system */
+/* header file sys/types.h must be included by the external interface. */
+#undef CURL_PULL_SYS_TYPES_H
+#ifdef CURL_PULL_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+
+/* Configure process defines this to 1 when it finds out that system */
+/* header file stdint.h must be included by the external interface. */
+#undef CURL_PULL_STDINT_H
+#ifdef CURL_PULL_STDINT_H
+# include <stdint.h>
+#endif
+
+/* Configure process defines this to 1 when it finds out that system */
+/* header file inttypes.h must be included by the external interface. */
+#undef CURL_PULL_INTTYPES_H
+#ifdef CURL_PULL_INTTYPES_H
+# include <inttypes.h>
+#endif
+
+/* Configure process defines this to 1 when it finds out that system */
+/* header file sys/socket.h must be included by the external interface. */
+#undef CURL_PULL_SYS_SOCKET_H
+#ifdef CURL_PULL_SYS_SOCKET_H
+# include <sys/socket.h>
+#endif
+
+/* The size of `long', as computed by sizeof. */
+#undef CURL_SIZEOF_LONG
+
+/* Integral data type used for curl_socklen_t. */
+#undef CURL_TYPEOF_CURL_SOCKLEN_T
+
+/* The size of `curl_socklen_t', as computed by sizeof. */
+#undef CURL_SIZEOF_CURL_SOCKLEN_T
+
+/* Data type definition of curl_socklen_t. */
+typedef CURL_TYPEOF_CURL_SOCKLEN_T curl_socklen_t;
+
+/* Signed integral data type used for curl_off_t. */
+#undef CURL_TYPEOF_CURL_OFF_T
+
+/* Data type definition of curl_off_t. */
+typedef CURL_TYPEOF_CURL_OFF_T curl_off_t;
+
+/* curl_off_t formatting string directive without "%" conversion specifier. */
+#undef CURL_FORMAT_CURL_OFF_T
+
+/* unsigned curl_off_t formatting string without "%" conversion specifier. */
+#undef CURL_FORMAT_CURL_OFF_TU
+
+/* curl_off_t formatting string directive with "%" conversion specifier. */
+#undef CURL_FORMAT_OFF_T
+
+/* The size of `curl_off_t', as computed by sizeof. */
+#undef CURL_SIZEOF_CURL_OFF_T
+
+/* curl_off_t constant suffix. */
+#undef CURL_SUFFIX_CURL_OFF_T
+
+/* unsigned curl_off_t constant suffix. */
+#undef CURL_SUFFIX_CURL_OFF_TU
+
+#endif /* __CURL_CURLBUILD_H */
diff --git a/vendor/voclient/include/curl/curlrules.h b/vendor/voclient/include/curl/curlrules.h
new file mode 100644
index 00000000..8aad1df6
--- /dev/null
+++ b/vendor/voclient/include/curl/curlrules.h
@@ -0,0 +1,252 @@
+#ifndef __CURL_CURLRULES_H
+#define __CURL_CURLRULES_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, 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 http://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.
+ *
+ ***************************************************************************/
+
+/* ================================================================ */
+/* COMPILE TIME SANITY CHECKS */
+/* ================================================================ */
+
+/*
+ * NOTE 1:
+ * -------
+ *
+ * All checks done in this file are intentionally placed in a public
+ * header file which is pulled by curl/curl.h when an application is
+ * being built using an already built libcurl library. Additionally
+ * this file is also included and used when building the library.
+ *
+ * If compilation fails on this file it is certainly sure that the
+ * problem is elsewhere. It could be a problem in the curlbuild.h
+ * header file, or simply that you are using different compilation
+ * settings than those used to build the library.
+ *
+ * Nothing in this file is intended to be modified or adjusted by the
+ * curl library user nor by the curl library builder.
+ *
+ * Do not deactivate any check, these are done to make sure that the
+ * library is properly built and used.
+ *
+ * You can find further help on the libcurl development mailing list:
+ * http://cool.haxx.se/mailman/listinfo/curl-library/
+ *
+ * NOTE 2
+ * ------
+ *
+ * Some of the following compile time checks are based on the fact
+ * that the dimension of a constant array can not be a negative one.
+ * In this way if the compile time verification fails, the compilation
+ * will fail issuing an error. The error description wording is compiler
+ * dependent but it will be quite similar to one of the following:
+ *
+ * "negative subscript or subscript is too large"
+ * "array must have at least one element"
+ * "-1 is an illegal array size"
+ * "size of array is negative"
+ *
+ * If you are building an application which tries to use an already
+ * built libcurl library and you are getting this kind of errors on
+ * this file, it is a clear indication that there is a mismatch between
+ * how the library was built and how you are trying to use it for your
+ * application. Your already compiled or binary library provider is the
+ * only one who can give you the details you need to properly use it.
+ */
+
+/*
+ * Verify that some macros are actually defined.
+ */
+
+#ifndef CURL_SIZEOF_LONG
+# error "CURL_SIZEOF_LONG definition is missing!"
+ Error Compilation_aborted_CURL_SIZEOF_LONG_is_missing
+#endif
+
+#ifndef CURL_TYPEOF_CURL_SOCKLEN_T
+# error "CURL_TYPEOF_CURL_SOCKLEN_T definition is missing!"
+ Error Compilation_aborted_CURL_TYPEOF_CURL_SOCKLEN_T_is_missing
+#endif
+
+#ifndef CURL_SIZEOF_CURL_SOCKLEN_T
+# error "CURL_SIZEOF_CURL_SOCKLEN_T definition is missing!"
+ Error Compilation_aborted_CURL_SIZEOF_CURL_SOCKLEN_T_is_missing
+#endif
+
+#ifndef CURL_TYPEOF_CURL_OFF_T
+# error "CURL_TYPEOF_CURL_OFF_T definition is missing!"
+ Error Compilation_aborted_CURL_TYPEOF_CURL_OFF_T_is_missing
+#endif
+
+#ifndef CURL_FORMAT_CURL_OFF_T
+# error "CURL_FORMAT_CURL_OFF_T definition is missing!"
+ Error Compilation_aborted_CURL_FORMAT_CURL_OFF_T_is_missing
+#endif
+
+#ifndef CURL_FORMAT_CURL_OFF_TU
+# error "CURL_FORMAT_CURL_OFF_TU definition is missing!"
+ Error Compilation_aborted_CURL_FORMAT_CURL_OFF_TU_is_missing
+#endif
+
+#ifndef CURL_FORMAT_OFF_T
+# error "CURL_FORMAT_OFF_T definition is missing!"
+ Error Compilation_aborted_CURL_FORMAT_OFF_T_is_missing
+#endif
+
+#ifndef CURL_SIZEOF_CURL_OFF_T
+# error "CURL_SIZEOF_CURL_OFF_T definition is missing!"
+ Error Compilation_aborted_CURL_SIZEOF_CURL_OFF_T_is_missing
+#endif
+
+#ifndef CURL_SUFFIX_CURL_OFF_T
+# error "CURL_SUFFIX_CURL_OFF_T definition is missing!"
+ Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_T_is_missing
+#endif
+
+#ifndef CURL_SUFFIX_CURL_OFF_TU
+# error "CURL_SUFFIX_CURL_OFF_TU definition is missing!"
+ Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_TU_is_missing
+#endif
+
+/*
+ * Macros private to this header file.
+ */
+
+#define CurlchkszEQ(t, s) sizeof(t) == s ? 1 : -1
+
+#define CurlchkszGE(t1, t2) sizeof(t1) >= sizeof(t2) ? 1 : -1
+
+/*
+ * Verify that the size previously defined and expected for long
+ * is the same as the one reported by sizeof() at compile time.
+ */
+
+typedef char
+ __curl_rule_01__
+ [CurlchkszEQ(long, CURL_SIZEOF_LONG)];
+
+/*
+ * Verify that the size previously defined and expected for
+ * curl_off_t is actually the the same as the one reported
+ * by sizeof() at compile time.
+ */
+
+typedef char
+ __curl_rule_02__
+ [CurlchkszEQ(curl_off_t, CURL_SIZEOF_CURL_OFF_T)];
+
+/*
+ * Verify at compile time that the size of curl_off_t as reported
+ * by sizeof() is greater or equal than the one reported for long
+ * for the current compilation.
+ */
+
+typedef char
+ __curl_rule_03__
+ [CurlchkszGE(curl_off_t, long)];
+
+/*
+ * Verify that the size previously defined and expected for
+ * curl_socklen_t is actually the the same as the one reported
+ * by sizeof() at compile time.
+ */
+
+typedef char
+ __curl_rule_04__
+ [CurlchkszEQ(curl_socklen_t, CURL_SIZEOF_CURL_SOCKLEN_T)];
+
+/*
+ * Verify at compile time that the size of curl_socklen_t as reported
+ * by sizeof() is greater or equal than the one reported for int for
+ * the current compilation.
+ */
+
+typedef char
+ __curl_rule_05__
+ [CurlchkszGE(curl_socklen_t, int)];
+
+/* ================================================================ */
+/* EXTERNALLY AND INTERNALLY VISIBLE DEFINITIONS */
+/* ================================================================ */
+
+/*
+ * 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
+ * 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.
+ */
+
+#ifdef CURL_ISOCPP
+# define __CURL_OFF_T_C_HELPER2(Val,Suffix) Val ## Suffix
+#else
+# define __CURL_OFF_T_C_HELPER2(Val,Suffix) Val/**/Suffix
+#endif
+#define __CURL_OFF_T_C_HELPER1(Val,Suffix) __CURL_OFF_T_C_HELPER2(Val,Suffix)
+#define CURL_OFF_T_C(Val) __CURL_OFF_T_C_HELPER1(Val,CURL_SUFFIX_CURL_OFF_T)
+#define CURL_OFF_TU_C(Val) __CURL_OFF_T_C_HELPER1(Val,CURL_SUFFIX_CURL_OFF_TU)
+
+/*
+ * Get rid of macros private to this header file.
+ */
+
+#undef CurlchkszEQ
+#undef CurlchkszGE
+
+/*
+ * Get rid of macros not intended to exist beyond this point.
+ */
+
+#undef CURL_PULL_WS2TCPIP_H
+#undef CURL_PULL_SYS_TYPES_H
+#undef CURL_PULL_SYS_SOCKET_H
+#undef CURL_PULL_STDINT_H
+#undef CURL_PULL_INTTYPES_H
+
+#undef CURL_TYPEOF_CURL_SOCKLEN_T
+#undef CURL_TYPEOF_CURL_OFF_T
+
+#ifdef CURL_NO_OLDIES
+#undef CURL_FORMAT_OFF_T /* not required since 7.19.0 - obsoleted in 7.20.0 */
+#endif
+
+#endif /* __CURL_CURLRULES_H */
diff --git a/vendor/voclient/include/curl/curlver.h b/vendor/voclient/include/curl/curlver.h
new file mode 100644
index 00000000..35ca9a8d
--- /dev/null
+++ b/vendor/voclient/include/curl/curlver.h
@@ -0,0 +1,69 @@
+#ifndef __CURL_CURLVER_H
+#define __CURL_CURLVER_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, 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 http://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 - 2010 Daniel Stenberg, <daniel@haxx.se>."
+
+/* This is the version number of the libcurl package from which this header
+ file origins: */
+#define LIBCURL_VERSION "7.20.1"
+
+/* The numeric version number is also available "in parts" by using these
+ defines: */
+#define LIBCURL_VERSION_MAJOR 7
+#define LIBCURL_VERSION_MINOR 20
+#define LIBCURL_VERSION_PATCH 1
+
+/* 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.
+*/
+#define LIBCURL_VERSION_NUM 0x071401
+
+/*
+ * 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 should follow this template:
+ *
+ * "Mon Feb 12 11:35:33 UTC 2007"
+ */
+#define LIBCURL_TIMESTAMP "Wed Apr 14 14:55:20 UTC 2010"
+
+#endif /* __CURL_CURLVER_H */
diff --git a/vendor/voclient/include/curl/easy.h b/vendor/voclient/include/curl/easy.h
new file mode 100644
index 00000000..1ddb4fe5
--- /dev/null
+++ b/vendor/voclient/include/curl/easy.h
@@ -0,0 +1,102 @@
+#ifndef __CURL_EASY_H
+#define __CURL_EASY_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, 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 http://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 persistant connections cannot
+ * be transfered. 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/vendor/voclient/include/curl/mprintf.h b/vendor/voclient/include/curl/mprintf.h
new file mode 100644
index 00000000..de7dd2f3
--- /dev/null
+++ b/vendor/voclient/include/curl/mprintf.h
@@ -0,0 +1,81 @@
+#ifndef __CURL_MPRINTF_H
+#define __CURL_MPRINTF_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2006, Daniel Stenberg, <daniel@haxx.se>, 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 http://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 <stdarg.h>
+#include <stdio.h> /* needed for FILE */
+
+#include "curl.h"
+
+#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 _MPRINTF_REPLACE
+# undef printf
+# undef fprintf
+# undef sprintf
+# undef vsprintf
+# undef snprintf
+# undef vprintf
+# undef vfprintf
+# undef vsnprintf
+# undef aprintf
+# undef vaprintf
+# define printf curl_mprintf
+# define fprintf curl_mfprintf
+#ifdef CURLDEBUG
+/* When built with CURLDEBUG we define away the sprintf() functions since we
+ don't want internal code to be using them */
+# define sprintf sprintf_was_used
+# define vsprintf vsprintf_was_used
+#else
+# define sprintf curl_msprintf
+# define vsprintf curl_mvsprintf
+#endif
+# define snprintf curl_msnprintf
+# define vprintf curl_mvprintf
+# define vfprintf curl_mvfprintf
+# define vsnprintf curl_mvsnprintf
+# define aprintf curl_maprintf
+# define vaprintf curl_mvaprintf
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CURL_MPRINTF_H */
diff --git a/vendor/voclient/include/curl/multi.h b/vendor/voclient/include/curl/multi.h
new file mode 100644
index 00000000..f9656666
--- /dev/null
+++ b/vendor/voclient/include/curl/multi.h
@@ -0,0 +1,345 @@
+#ifndef __CURL_MULTI_H
+#define __CURL_MULTI_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, 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 http://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
+ * <curl/curl.h> 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
+
+typedef void CURLM;
+
+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_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
+
+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;
+
+/*
+ * 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_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 invidual 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 informations. 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),
+
+ 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);
+
+#ifdef __cplusplus
+} /* end of extern "C" */
+#endif
+
+#endif
diff --git a/vendor/voclient/include/curl/stamp-h3 b/vendor/voclient/include/curl/stamp-h3
new file mode 100644
index 00000000..e4ea1b88
--- /dev/null
+++ b/vendor/voclient/include/curl/stamp-h3
@@ -0,0 +1 @@
+timestamp for include/curl/curlbuild.h
diff --git a/vendor/voclient/include/curl/stdcheaders.h b/vendor/voclient/include/curl/stdcheaders.h
new file mode 100644
index 00000000..ad82ef63
--- /dev/null
+++ b/vendor/voclient/include/curl/stdcheaders.h
@@ -0,0 +1,33 @@
+#ifndef __STDC_HEADERS_H
+#define __STDC_HEADERS_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, 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 http://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 <sys/types.h>
+
+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/vendor/voclient/include/curl/typecheck-gcc.h b/vendor/voclient/include/curl/typecheck-gcc.h
new file mode 100644
index 00000000..c4fad516
--- /dev/null
+++ b/vendor/voclient/include/curl/typecheck-gcc.h
@@ -0,0 +1,550 @@
+#ifndef __CURL_TYPECHECK_GCC_H
+#define __CURL_TYPECHECK_GCC_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, 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 http://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) && ! _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
+ *
+ * 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) && !_curl_is_long(value)) \
+ _curl_easy_setopt_err_long(); \
+ if (_curl_is_off_t_option(_curl_opt) && !_curl_is_off_t(value)) \
+ _curl_easy_setopt_err_curl_off_t(); \
+ if (_curl_is_string_option(_curl_opt) && !_curl_is_string(value)) \
+ _curl_easy_setopt_err_string(); \
+ if (_curl_is_write_cb_option(_curl_opt) && !_curl_is_write_cb(value)) \
+ _curl_easy_setopt_err_write_callback(); \
+ if ((_curl_opt) == CURLOPT_READFUNCTION && !_curl_is_read_cb(value)) \
+ _curl_easy_setopt_err_read_cb(); \
+ if ((_curl_opt) == CURLOPT_IOCTLFUNCTION && !_curl_is_ioctl_cb(value)) \
+ _curl_easy_setopt_err_ioctl_cb(); \
+ if ((_curl_opt) == CURLOPT_SOCKOPTFUNCTION && !_curl_is_sockopt_cb(value))\
+ _curl_easy_setopt_err_sockopt_cb(); \
+ if ((_curl_opt) == CURLOPT_OPENSOCKETFUNCTION && \
+ !_curl_is_opensocket_cb(value)) \
+ _curl_easy_setopt_err_opensocket_cb(); \
+ if ((_curl_opt) == CURLOPT_PROGRESSFUNCTION && \
+ !_curl_is_progress_cb(value)) \
+ _curl_easy_setopt_err_progress_cb(); \
+ if ((_curl_opt) == CURLOPT_DEBUGFUNCTION && !_curl_is_debug_cb(value)) \
+ _curl_easy_setopt_err_debug_cb(); \
+ if ((_curl_opt) == CURLOPT_SSL_CTX_FUNCTION && \
+ !_curl_is_ssl_ctx_cb(value)) \
+ _curl_easy_setopt_err_ssl_ctx_cb(); \
+ if (_curl_is_conv_cb_option(_curl_opt) && !_curl_is_conv_cb(value)) \
+ _curl_easy_setopt_err_conv_cb(); \
+ if ((_curl_opt) == CURLOPT_SEEKFUNCTION && !_curl_is_seek_cb(value)) \
+ _curl_easy_setopt_err_seek_cb(); \
+ if (_curl_is_cb_data_option(_curl_opt) && !_curl_is_cb_data(value)) \
+ _curl_easy_setopt_err_cb_data(); \
+ if ((_curl_opt) == CURLOPT_ERRORBUFFER && !_curl_is_error_buffer(value)) \
+ _curl_easy_setopt_err_error_buffer(); \
+ if ((_curl_opt) == CURLOPT_STDERR && !_curl_is_FILE(value)) \
+ _curl_easy_setopt_err_FILE(); \
+ if (_curl_is_postfields_option(_curl_opt) && !_curl_is_postfields(value)) \
+ _curl_easy_setopt_err_postfields(); \
+ if ((_curl_opt) == CURLOPT_HTTPPOST && \
+ !_curl_is_arr((value), struct curl_httppost)) \
+ _curl_easy_setopt_err_curl_httpost(); \
+ if (_curl_is_slist_option(_curl_opt) && \
+ !_curl_is_arr((value), struct curl_slist)) \
+ _curl_easy_setopt_err_curl_slist(); \
+ if ((_curl_opt) == CURLOPT_SHARE && !_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) && !_curl_is_arr((arg), char *)) \
+ _curl_easy_getinfo_err_string(); \
+ if (_curl_is_long_info(_curl_info) && !_curl_is_arr((arg), long)) \
+ _curl_easy_getinfo_err_long(); \
+ if (_curl_is_double_info(_curl_info) && !_curl_is_arr((arg), double)) \
+ _curl_easy_getinfo_err_double(); \
+ if (_curl_is_slist_info(_curl_info) && \
+ !_curl_is_arr((arg), struct curl_slist *)) \
+ _curl_easy_getinfo_err_curl_slist(); \
+ } \
+ 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_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_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")
+
+/* 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_URL || \
+ (option) == CURLOPT_PROXY || \
+ (option) == CURLOPT_INTERFACE || \
+ (option) == CURLOPT_NETRC_FILE || \
+ (option) == CURLOPT_USERPWD || \
+ (option) == CURLOPT_USERNAME || \
+ (option) == CURLOPT_PASSWORD || \
+ (option) == CURLOPT_PROXYUSERPWD || \
+ (option) == CURLOPT_PROXYUSERNAME || \
+ (option) == CURLOPT_PROXYPASSWORD || \
+ (option) == CURLOPT_NOPROXY || \
+ (option) == CURLOPT_ENCODING || \
+ (option) == CURLOPT_REFERER || \
+ (option) == CURLOPT_USERAGENT || \
+ (option) == CURLOPT_COOKIE || \
+ (option) == CURLOPT_COOKIEFILE || \
+ (option) == CURLOPT_COOKIEJAR || \
+ (option) == CURLOPT_COOKIELIST || \
+ (option) == CURLOPT_FTPPORT || \
+ (option) == CURLOPT_FTP_ALTERNATIVE_TO_USER || \
+ (option) == CURLOPT_FTP_ACCOUNT || \
+ (option) == CURLOPT_RANGE || \
+ (option) == CURLOPT_CUSTOMREQUEST || \
+ (option) == CURLOPT_SSLCERT || \
+ (option) == CURLOPT_SSLCERTTYPE || \
+ (option) == CURLOPT_SSLKEY || \
+ (option) == CURLOPT_SSLKEYTYPE || \
+ (option) == CURLOPT_KEYPASSWD || \
+ (option) == CURLOPT_SSLENGINE || \
+ (option) == CURLOPT_CAINFO || \
+ (option) == CURLOPT_CAPATH || \
+ (option) == CURLOPT_RANDOM_FILE || \
+ (option) == CURLOPT_EGDSOCKET || \
+ (option) == CURLOPT_SSL_CIPHER_LIST || \
+ (option) == CURLOPT_KRBLEVEL || \
+ (option) == CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 || \
+ (option) == CURLOPT_SSH_PUBLIC_KEYFILE || \
+ (option) == CURLOPT_SSH_PRIVATE_KEYFILE || \
+ (option) == CURLOPT_CRLFILE || \
+ (option) == CURLOPT_ISSUERCERT || \
+ 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_WRITEDATA || \
+ (option) == CURLOPT_READDATA || \
+ (option) == CURLOPT_IOCTLDATA || \
+ (option) == CURLOPT_SOCKOPTDATA || \
+ (option) == CURLOPT_OPENSOCKETDATA || \
+ (option) == CURLOPT_PROGRESSDATA || \
+ (option) == CURLOPT_WRITEHEADER || \
+ (option) == CURLOPT_DEBUGDATA || \
+ (option) == CURLOPT_SSL_CTX_DATA || \
+ (option) == CURLOPT_SEEKDATA || \
+ (option) == CURLOPT_PRIVATE || \
+ 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_HTTPHEADER || \
+ (option) == CURLOPT_HTTP200ALIASES || \
+ (option) == CURLOPT_QUOTE || \
+ (option) == CURLOPT_POSTQUOTE || \
+ (option) == CURLOPT_PREQUOTE || \
+ (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) \
+ (CURLINFO_SLIST < (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) \
+ (__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) \
+ (__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_read_callback or "similar" */
+#define _curl_is_read_cb(expr) \
+ (_curl_is_NULL(expr) || \
+ __builtin_types_compatible_p(__typeof__(expr), __typeof__(fread)) || \
+ __builtin_types_compatible_p(__typeof__(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) || \
+ __builtin_types_compatible_p(__typeof__(expr), __typeof__(fwrite)) || \
+ __builtin_types_compatible_p(__typeof__(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) || \
+ __builtin_types_compatible_p(__typeof__(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) || \
+ __builtin_types_compatible_p(__typeof__(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) || \
+ __builtin_types_compatible_p(__typeof__(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) || \
+ __builtin_types_compatible_p(__typeof__(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) || \
+ __builtin_types_compatible_p(__typeof__(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))
+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 *);
+
+/* 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) || \
+ __builtin_types_compatible_p(__typeof__(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) || \
+ __builtin_types_compatible_p(__typeof__(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) || \
+ __builtin_types_compatible_p(__typeof__(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/vendor/voclient/include/curl/types.h b/vendor/voclient/include/curl/types.h
new file mode 100644
index 00000000..d37d6ae9
--- /dev/null
+++ b/vendor/voclient/include/curl/types.h
@@ -0,0 +1 @@
+/* not used */
diff --git a/vendor/voclient/include/expat.h b/vendor/voclient/include/expat.h
new file mode 100644
index 00000000..20a8278f
--- /dev/null
+++ b/vendor/voclient/include/expat.h
@@ -0,0 +1,1014 @@
+/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
+ See the file COPYING for copying permission.
+*/
+
+#ifndef Expat_INCLUDED
+#define Expat_INCLUDED 1
+
+#ifdef __VMS
+/* 0 1 2 3 0 1 2 3
+ 1234567890123456789012345678901 1234567890123456789012345678901 */
+#define XML_SetProcessingInstructionHandler XML_SetProcessingInstrHandler
+#define XML_SetUnparsedEntityDeclHandler XML_SetUnparsedEntDeclHandler
+#define XML_SetStartNamespaceDeclHandler XML_SetStartNamespcDeclHandler
+#define XML_SetExternalEntityRefHandlerArg XML_SetExternalEntRefHandlerArg
+#endif
+
+#include <stdlib.h>
+#include "expat_external.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct XML_ParserStruct;
+typedef struct XML_ParserStruct *XML_Parser;
+
+/* Should this be defined using stdbool.h when C99 is available? */
+typedef unsigned char XML_Bool;
+#define XML_TRUE ((XML_Bool) 1)
+#define XML_FALSE ((XML_Bool) 0)
+
+/* The XML_Status enum gives the possible return values for several
+ API functions. The preprocessor #defines are included so this
+ stanza can be added to code that still needs to support older
+ versions of Expat 1.95.x:
+
+ #ifndef XML_STATUS_OK
+ #define XML_STATUS_OK 1
+ #define XML_STATUS_ERROR 0
+ #endif
+
+ Otherwise, the #define hackery is quite ugly and would have been
+ dropped.
+*/
+enum XML_Status {
+ XML_STATUS_ERROR = 0,
+#define XML_STATUS_ERROR XML_STATUS_ERROR
+ XML_STATUS_OK = 1,
+#define XML_STATUS_OK XML_STATUS_OK
+ XML_STATUS_SUSPENDED = 2
+#define XML_STATUS_SUSPENDED XML_STATUS_SUSPENDED
+};
+
+enum XML_Error {
+ XML_ERROR_NONE,
+ XML_ERROR_NO_MEMORY,
+ XML_ERROR_SYNTAX,
+ XML_ERROR_NO_ELEMENTS,
+ XML_ERROR_INVALID_TOKEN,
+ XML_ERROR_UNCLOSED_TOKEN,
+ XML_ERROR_PARTIAL_CHAR,
+ XML_ERROR_TAG_MISMATCH,
+ XML_ERROR_DUPLICATE_ATTRIBUTE,
+ XML_ERROR_JUNK_AFTER_DOC_ELEMENT,
+ XML_ERROR_PARAM_ENTITY_REF,
+ XML_ERROR_UNDEFINED_ENTITY,
+ XML_ERROR_RECURSIVE_ENTITY_REF,
+ XML_ERROR_ASYNC_ENTITY,
+ XML_ERROR_BAD_CHAR_REF,
+ XML_ERROR_BINARY_ENTITY_REF,
+ XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF,
+ XML_ERROR_MISPLACED_XML_PI,
+ XML_ERROR_UNKNOWN_ENCODING,
+ XML_ERROR_INCORRECT_ENCODING,
+ XML_ERROR_UNCLOSED_CDATA_SECTION,
+ XML_ERROR_EXTERNAL_ENTITY_HANDLING,
+ XML_ERROR_NOT_STANDALONE,
+ XML_ERROR_UNEXPECTED_STATE,
+ XML_ERROR_ENTITY_DECLARED_IN_PE,
+ XML_ERROR_FEATURE_REQUIRES_XML_DTD,
+ XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING,
+ /* Added in 1.95.7. */
+ XML_ERROR_UNBOUND_PREFIX,
+ /* Added in 1.95.8. */
+ XML_ERROR_UNDECLARING_PREFIX,
+ XML_ERROR_INCOMPLETE_PE,
+ XML_ERROR_XML_DECL,
+ XML_ERROR_TEXT_DECL,
+ XML_ERROR_PUBLICID,
+ XML_ERROR_SUSPENDED,
+ XML_ERROR_NOT_SUSPENDED,
+ XML_ERROR_ABORTED,
+ XML_ERROR_FINISHED,
+ XML_ERROR_SUSPEND_PE,
+ /* Added in 2.0. */
+ XML_ERROR_RESERVED_PREFIX_XML,
+ XML_ERROR_RESERVED_PREFIX_XMLNS,
+ XML_ERROR_RESERVED_NAMESPACE_URI
+};
+
+enum XML_Content_Type {
+ XML_CTYPE_EMPTY = 1,
+ XML_CTYPE_ANY,
+ XML_CTYPE_MIXED,
+ XML_CTYPE_NAME,
+ XML_CTYPE_CHOICE,
+ XML_CTYPE_SEQ
+};
+
+enum XML_Content_Quant {
+ XML_CQUANT_NONE,
+ XML_CQUANT_OPT,
+ XML_CQUANT_REP,
+ XML_CQUANT_PLUS
+};
+
+/* If type == XML_CTYPE_EMPTY or XML_CTYPE_ANY, then quant will be
+ XML_CQUANT_NONE, and the other fields will be zero or NULL.
+ If type == XML_CTYPE_MIXED, then quant will be NONE or REP and
+ numchildren will contain number of elements that may be mixed in
+ and children point to an array of XML_Content cells that will be
+ all of XML_CTYPE_NAME type with no quantification.
+
+ If type == XML_CTYPE_NAME, then the name points to the name, and
+ the numchildren field will be zero and children will be NULL. The
+ quant fields indicates any quantifiers placed on the name.
+
+ CHOICE and SEQ will have name NULL, the number of children in
+ numchildren and children will point, recursively, to an array
+ of XML_Content cells.
+
+ The EMPTY, ANY, and MIXED types will only occur at top level.
+*/
+
+typedef struct XML_cp XML_Content;
+
+struct XML_cp {
+ enum XML_Content_Type type;
+ enum XML_Content_Quant quant;
+ XML_Char * name;
+ unsigned int numchildren;
+ XML_Content * children;
+};
+
+
+/* This is called for an element declaration. See above for
+ description of the model argument. It's the caller's responsibility
+ to free model when finished with it.
+*/
+typedef void (XMLCALL *XML_ElementDeclHandler) (void *userData,
+ const XML_Char *name,
+ XML_Content *model);
+
+XMLPARSEAPI(void)
+XML_SetElementDeclHandler(XML_Parser parser,
+ XML_ElementDeclHandler eldecl);
+
+/* The Attlist declaration handler is called for *each* attribute. So
+ a single Attlist declaration with multiple attributes declared will
+ generate multiple calls to this handler. The "default" parameter
+ may be NULL in the case of the "#IMPLIED" or "#REQUIRED"
+ keyword. The "isrequired" parameter will be true and the default
+ value will be NULL in the case of "#REQUIRED". If "isrequired" is
+ true and default is non-NULL, then this is a "#FIXED" default.
+*/
+typedef void (XMLCALL *XML_AttlistDeclHandler) (
+ void *userData,
+ const XML_Char *elname,
+ const XML_Char *attname,
+ const XML_Char *att_type,
+ const XML_Char *dflt,
+ int isrequired);
+
+XMLPARSEAPI(void)
+XML_SetAttlistDeclHandler(XML_Parser parser,
+ XML_AttlistDeclHandler attdecl);
+
+/* The XML declaration handler is called for *both* XML declarations
+ and text declarations. The way to distinguish is that the version
+ parameter will be NULL for text declarations. The encoding
+ parameter may be NULL for XML declarations. The standalone
+ parameter will be -1, 0, or 1 indicating respectively that there
+ was no standalone parameter in the declaration, that it was given
+ as no, or that it was given as yes.
+*/
+typedef void (XMLCALL *XML_XmlDeclHandler) (void *userData,
+ const XML_Char *version,
+ const XML_Char *encoding,
+ int standalone);
+
+XMLPARSEAPI(void)
+XML_SetXmlDeclHandler(XML_Parser parser,
+ XML_XmlDeclHandler xmldecl);
+
+
+typedef struct {
+ void *(*malloc_fcn)(size_t size);
+ void *(*realloc_fcn)(void *ptr, size_t size);
+ void (*free_fcn)(void *ptr);
+} XML_Memory_Handling_Suite;
+
+/* Constructs a new parser; encoding is the encoding specified by the
+ external protocol or NULL if there is none specified.
+*/
+XMLPARSEAPI(XML_Parser)
+XML_ParserCreate(const XML_Char *encoding);
+
+/* Constructs a new parser and namespace processor. Element type
+ names and attribute names that belong to a namespace will be
+ expanded; unprefixed attribute names are never expanded; unprefixed
+ element type names are expanded only if there is a default
+ namespace. The expanded name is the concatenation of the namespace
+ URI, the namespace separator character, and the local part of the
+ name. If the namespace separator is '\0' then the namespace URI
+ and the local part will be concatenated without any separator.
+ It is a programming error to use the separator '\0' with namespace
+ triplets (see XML_SetReturnNSTriplet).
+*/
+XMLPARSEAPI(XML_Parser)
+XML_ParserCreateNS(const XML_Char *encoding, XML_Char namespaceSeparator);
+
+
+/* Constructs a new parser using the memory management suite referred to
+ by memsuite. If memsuite is NULL, then use the standard library memory
+ suite. If namespaceSeparator is non-NULL it creates a parser with
+ namespace processing as described above. The character pointed at
+ will serve as the namespace separator.
+
+ All further memory operations used for the created parser will come from
+ the given suite.
+*/
+XMLPARSEAPI(XML_Parser)
+XML_ParserCreate_MM(const XML_Char *encoding,
+ const XML_Memory_Handling_Suite *memsuite,
+ const XML_Char *namespaceSeparator);
+
+/* Prepare a parser object to be re-used. This is particularly
+ valuable when memory allocation overhead is disproportionatly high,
+ such as when a large number of small documnents need to be parsed.
+ All handlers are cleared from the parser, except for the
+ unknownEncodingHandler. The parser's external state is re-initialized
+ except for the values of ns and ns_triplets.
+
+ Added in Expat 1.95.3.
+*/
+XMLPARSEAPI(XML_Bool)
+XML_ParserReset(XML_Parser parser, const XML_Char *encoding);
+
+/* atts is array of name/value pairs, terminated by 0;
+ names and values are 0 terminated.
+*/
+typedef void (XMLCALL *XML_StartElementHandler) (void *userData,
+ const XML_Char *name,
+ const XML_Char **atts);
+
+typedef void (XMLCALL *XML_EndElementHandler) (void *userData,
+ const XML_Char *name);
+
+
+/* s is not 0 terminated. */
+typedef void (XMLCALL *XML_CharacterDataHandler) (void *userData,
+ const XML_Char *s,
+ int len);
+
+/* target and data are 0 terminated */
+typedef void (XMLCALL *XML_ProcessingInstructionHandler) (
+ void *userData,
+ const XML_Char *target,
+ const XML_Char *data);
+
+/* data is 0 terminated */
+typedef void (XMLCALL *XML_CommentHandler) (void *userData,
+ const XML_Char *data);
+
+typedef void (XMLCALL *XML_StartCdataSectionHandler) (void *userData);
+typedef void (XMLCALL *XML_EndCdataSectionHandler) (void *userData);
+
+/* This is called for any characters in the XML document for which
+ there is no applicable handler. This includes both characters that
+ are part of markup which is of a kind that is not reported
+ (comments, markup declarations), or characters that are part of a
+ construct which could be reported but for which no handler has been
+ supplied. The characters are passed exactly as they were in the XML
+ document except that they will be encoded in UTF-8 or UTF-16.
+ Line boundaries are not normalized. Note that a byte order mark
+ character is not passed to the default handler. There are no
+ guarantees about how characters are divided between calls to the
+ default handler: for example, a comment might be split between
+ multiple calls.
+*/
+typedef void (XMLCALL *XML_DefaultHandler) (void *userData,
+ const XML_Char *s,
+ int len);
+
+/* This is called for the start of the DOCTYPE declaration, before
+ any DTD or internal subset is parsed.
+*/
+typedef void (XMLCALL *XML_StartDoctypeDeclHandler) (
+ void *userData,
+ const XML_Char *doctypeName,
+ const XML_Char *sysid,
+ const XML_Char *pubid,
+ int has_internal_subset);
+
+/* This is called for the start of the DOCTYPE declaration when the
+ closing > is encountered, but after processing any external
+ subset.
+*/
+typedef void (XMLCALL *XML_EndDoctypeDeclHandler)(void *userData);
+
+/* This is called for entity declarations. The is_parameter_entity
+ argument will be non-zero if the entity is a parameter entity, zero
+ otherwise.
+
+ For internal entities (<!ENTITY foo "bar">), value will
+ be non-NULL and systemId, publicID, and notationName will be NULL.
+ The value string is NOT nul-terminated; the length is provided in
+ the value_length argument. Since it is legal to have zero-length
+ values, do not use this argument to test for internal entities.
+
+ For external entities, value will be NULL and systemId will be
+ non-NULL. The publicId argument will be NULL unless a public
+ identifier was provided. The notationName argument will have a
+ non-NULL value only for unparsed entity declarations.
+
+ Note that is_parameter_entity can't be changed to XML_Bool, since
+ that would break binary compatibility.
+*/
+typedef void (XMLCALL *XML_EntityDeclHandler) (
+ void *userData,
+ const XML_Char *entityName,
+ int is_parameter_entity,
+ const XML_Char *value,
+ int value_length,
+ const XML_Char *base,
+ const XML_Char *systemId,
+ const XML_Char *publicId,
+ const XML_Char *notationName);
+
+XMLPARSEAPI(void)
+XML_SetEntityDeclHandler(XML_Parser parser,
+ XML_EntityDeclHandler handler);
+
+/* OBSOLETE -- OBSOLETE -- OBSOLETE
+ This handler has been superceded by the EntityDeclHandler above.
+ It is provided here for backward compatibility.
+
+ This is called for a declaration of an unparsed (NDATA) entity.
+ The base argument is whatever was set by XML_SetBase. The
+ entityName, systemId and notationName arguments will never be
+ NULL. The other arguments may be.
+*/
+typedef void (XMLCALL *XML_UnparsedEntityDeclHandler) (
+ void *userData,
+ const XML_Char *entityName,
+ const XML_Char *base,
+ const XML_Char *systemId,
+ const XML_Char *publicId,
+ const XML_Char *notationName);
+
+/* This is called for a declaration of notation. The base argument is
+ whatever was set by XML_SetBase. The notationName will never be
+ NULL. The other arguments can be.
+*/
+typedef void (XMLCALL *XML_NotationDeclHandler) (
+ void *userData,
+ const XML_Char *notationName,
+ const XML_Char *base,
+ const XML_Char *systemId,
+ const XML_Char *publicId);
+
+/* When namespace processing is enabled, these are called once for
+ each namespace declaration. The call to the start and end element
+ handlers occur between the calls to the start and end namespace
+ declaration handlers. For an xmlns attribute, prefix will be
+ NULL. For an xmlns="" attribute, uri will be NULL.
+*/
+typedef void (XMLCALL *XML_StartNamespaceDeclHandler) (
+ void *userData,
+ const XML_Char *prefix,
+ const XML_Char *uri);
+
+typedef void (XMLCALL *XML_EndNamespaceDeclHandler) (
+ void *userData,
+ const XML_Char *prefix);
+
+/* This is called if the document is not standalone, that is, it has an
+ external subset or a reference to a parameter entity, but does not
+ have standalone="yes". If this handler returns XML_STATUS_ERROR,
+ then processing will not continue, and the parser will return a
+ XML_ERROR_NOT_STANDALONE error.
+ If parameter entity parsing is enabled, then in addition to the
+ conditions above this handler will only be called if the referenced
+ entity was actually read.
+*/
+typedef int (XMLCALL *XML_NotStandaloneHandler) (void *userData);
+
+/* This is called for a reference to an external parsed general
+ entity. The referenced entity is not automatically parsed. The
+ application can parse it immediately or later using
+ XML_ExternalEntityParserCreate.
+
+ The parser argument is the parser parsing the entity containing the
+ reference; it can be passed as the parser argument to
+ XML_ExternalEntityParserCreate. The systemId argument is the
+ system identifier as specified in the entity declaration; it will
+ not be NULL.
+
+ The base argument is the system identifier that should be used as
+ the base for resolving systemId if systemId was relative; this is
+ set by XML_SetBase; it may be NULL.
+
+ The publicId argument is the public identifier as specified in the
+ entity declaration, or NULL if none was specified; the whitespace
+ in the public identifier will have been normalized as required by
+ the XML spec.
+
+ The context argument specifies the parsing context in the format
+ expected by the context argument to XML_ExternalEntityParserCreate;
+ context is valid only until the handler returns, so if the
+ referenced entity is to be parsed later, it must be copied.
+ context is NULL only when the entity is a parameter entity.
+
+ The handler should return XML_STATUS_ERROR if processing should not
+ continue because of a fatal error in the handling of the external
+ entity. In this case the calling parser will return an
+ XML_ERROR_EXTERNAL_ENTITY_HANDLING error.
+
+ Note that unlike other handlers the first argument is the parser,
+ not userData.
+*/
+typedef int (XMLCALL *XML_ExternalEntityRefHandler) (
+ XML_Parser parser,
+ const XML_Char *context,
+ const XML_Char *base,
+ const XML_Char *systemId,
+ const XML_Char *publicId);
+
+/* This is called in two situations:
+ 1) An entity reference is encountered for which no declaration
+ has been read *and* this is not an error.
+ 2) An internal entity reference is read, but not expanded, because
+ XML_SetDefaultHandler has been called.
+ Note: skipped parameter entities in declarations and skipped general
+ entities in attribute values cannot be reported, because
+ the event would be out of sync with the reporting of the
+ declarations or attribute values
+*/
+typedef void (XMLCALL *XML_SkippedEntityHandler) (
+ void *userData,
+ const XML_Char *entityName,
+ int is_parameter_entity);
+
+/* This structure is filled in by the XML_UnknownEncodingHandler to
+ provide information to the parser about encodings that are unknown
+ to the parser.
+
+ The map[b] member gives information about byte sequences whose
+ first byte is b.
+
+ If map[b] is c where c is >= 0, then b by itself encodes the
+ Unicode scalar value c.
+
+ If map[b] is -1, then the byte sequence is malformed.
+
+ If map[b] is -n, where n >= 2, then b is the first byte of an
+ n-byte sequence that encodes a single Unicode scalar value.
+
+ The data member will be passed as the first argument to the convert
+ function.
+
+ The convert function is used to convert multibyte sequences; s will
+ point to a n-byte sequence where map[(unsigned char)*s] == -n. The
+ convert function must return the Unicode scalar value represented
+ by this byte sequence or -1 if the byte sequence is malformed.
+
+ The convert function may be NULL if the encoding is a single-byte
+ encoding, that is if map[b] >= -1 for all bytes b.
+
+ When the parser is finished with the encoding, then if release is
+ not NULL, it will call release passing it the data member; once
+ release has been called, the convert function will not be called
+ again.
+
+ Expat places certain restrictions on the encodings that are supported
+ using this mechanism.
+
+ 1. Every ASCII character that can appear in a well-formed XML document,
+ other than the characters
+
+ $@\^`{}~
+
+ must be represented by a single byte, and that byte must be the
+ same byte that represents that character in ASCII.
+
+ 2. No character may require more than 4 bytes to encode.
+
+ 3. All characters encoded must have Unicode scalar values <=
+ 0xFFFF, (i.e., characters that would be encoded by surrogates in
+ UTF-16 are not allowed). Note that this restriction doesn't
+ apply to the built-in support for UTF-8 and UTF-16.
+
+ 4. No Unicode character may be encoded by more than one distinct
+ sequence of bytes.
+*/
+typedef struct {
+ int map[256];
+ void *data;
+ int (XMLCALL *convert)(void *data, const char *s);
+ void (XMLCALL *release)(void *data);
+} XML_Encoding;
+
+/* This is called for an encoding that is unknown to the parser.
+
+ The encodingHandlerData argument is that which was passed as the
+ second argument to XML_SetUnknownEncodingHandler.
+
+ The name argument gives the name of the encoding as specified in
+ the encoding declaration.
+
+ If the callback can provide information about the encoding, it must
+ fill in the XML_Encoding structure, and return XML_STATUS_OK.
+ Otherwise it must return XML_STATUS_ERROR.
+
+ If info does not describe a suitable encoding, then the parser will
+ return an XML_UNKNOWN_ENCODING error.
+*/
+typedef int (XMLCALL *XML_UnknownEncodingHandler) (
+ void *encodingHandlerData,
+ const XML_Char *name,
+ XML_Encoding *info);
+
+XMLPARSEAPI(void)
+XML_SetElementHandler(XML_Parser parser,
+ XML_StartElementHandler start,
+ XML_EndElementHandler end);
+
+XMLPARSEAPI(void)
+XML_SetStartElementHandler(XML_Parser parser,
+ XML_StartElementHandler handler);
+
+XMLPARSEAPI(void)
+XML_SetEndElementHandler(XML_Parser parser,
+ XML_EndElementHandler handler);
+
+XMLPARSEAPI(void)
+XML_SetCharacterDataHandler(XML_Parser parser,
+ XML_CharacterDataHandler handler);
+
+XMLPARSEAPI(void)
+XML_SetProcessingInstructionHandler(XML_Parser parser,
+ XML_ProcessingInstructionHandler handler);
+XMLPARSEAPI(void)
+XML_SetCommentHandler(XML_Parser parser,
+ XML_CommentHandler handler);
+
+XMLPARSEAPI(void)
+XML_SetCdataSectionHandler(XML_Parser parser,
+ XML_StartCdataSectionHandler start,
+ XML_EndCdataSectionHandler end);
+
+XMLPARSEAPI(void)
+XML_SetStartCdataSectionHandler(XML_Parser parser,
+ XML_StartCdataSectionHandler start);
+
+XMLPARSEAPI(void)
+XML_SetEndCdataSectionHandler(XML_Parser parser,
+ XML_EndCdataSectionHandler end);
+
+/* This sets the default handler and also inhibits expansion of
+ internal entities. These entity references will be passed to the
+ default handler, or to the skipped entity handler, if one is set.
+*/
+XMLPARSEAPI(void)
+XML_SetDefaultHandler(XML_Parser parser,
+ XML_DefaultHandler handler);
+
+/* This sets the default handler but does not inhibit expansion of
+ internal entities. The entity reference will not be passed to the
+ default handler.
+*/
+XMLPARSEAPI(void)
+XML_SetDefaultHandlerExpand(XML_Parser parser,
+ XML_DefaultHandler handler);
+
+XMLPARSEAPI(void)
+XML_SetDoctypeDeclHandler(XML_Parser parser,
+ XML_StartDoctypeDeclHandler start,
+ XML_EndDoctypeDeclHandler end);
+
+XMLPARSEAPI(void)
+XML_SetStartDoctypeDeclHandler(XML_Parser parser,
+ XML_StartDoctypeDeclHandler start);
+
+XMLPARSEAPI(void)
+XML_SetEndDoctypeDeclHandler(XML_Parser parser,
+ XML_EndDoctypeDeclHandler end);
+
+XMLPARSEAPI(void)
+XML_SetUnparsedEntityDeclHandler(XML_Parser parser,
+ XML_UnparsedEntityDeclHandler handler);
+
+XMLPARSEAPI(void)
+XML_SetNotationDeclHandler(XML_Parser parser,
+ XML_NotationDeclHandler handler);
+
+XMLPARSEAPI(void)
+XML_SetNamespaceDeclHandler(XML_Parser parser,
+ XML_StartNamespaceDeclHandler start,
+ XML_EndNamespaceDeclHandler end);
+
+XMLPARSEAPI(void)
+XML_SetStartNamespaceDeclHandler(XML_Parser parser,
+ XML_StartNamespaceDeclHandler start);
+
+XMLPARSEAPI(void)
+XML_SetEndNamespaceDeclHandler(XML_Parser parser,
+ XML_EndNamespaceDeclHandler end);
+
+XMLPARSEAPI(void)
+XML_SetNotStandaloneHandler(XML_Parser parser,
+ XML_NotStandaloneHandler handler);
+
+XMLPARSEAPI(void)
+XML_SetExternalEntityRefHandler(XML_Parser parser,
+ XML_ExternalEntityRefHandler handler);
+
+/* If a non-NULL value for arg is specified here, then it will be
+ passed as the first argument to the external entity ref handler
+ instead of the parser object.
+*/
+XMLPARSEAPI(void)
+XML_SetExternalEntityRefHandlerArg(XML_Parser parser,
+ void *arg);
+
+XMLPARSEAPI(void)
+XML_SetSkippedEntityHandler(XML_Parser parser,
+ XML_SkippedEntityHandler handler);
+
+XMLPARSEAPI(void)
+XML_SetUnknownEncodingHandler(XML_Parser parser,
+ XML_UnknownEncodingHandler handler,
+ void *encodingHandlerData);
+
+/* This can be called within a handler for a start element, end
+ element, processing instruction or character data. It causes the
+ corresponding markup to be passed to the default handler.
+*/
+XMLPARSEAPI(void)
+XML_DefaultCurrent(XML_Parser parser);
+
+/* If do_nst is non-zero, and namespace processing is in effect, and
+ a name has a prefix (i.e. an explicit namespace qualifier) then
+ that name is returned as a triplet in a single string separated by
+ the separator character specified when the parser was created: URI
+ + sep + local_name + sep + prefix.
+
+ If do_nst is zero, then namespace information is returned in the
+ default manner (URI + sep + local_name) whether or not the name
+ has a prefix.
+
+ Note: Calling XML_SetReturnNSTriplet after XML_Parse or
+ XML_ParseBuffer has no effect.
+*/
+
+XMLPARSEAPI(void)
+XML_SetReturnNSTriplet(XML_Parser parser, int do_nst);
+
+/* This value is passed as the userData argument to callbacks. */
+XMLPARSEAPI(void)
+XML_SetUserData(XML_Parser parser, void *userData);
+
+/* Returns the last value set by XML_SetUserData or NULL. */
+#define XML_GetUserData(parser) (*(void **)(parser))
+
+/* This is equivalent to supplying an encoding argument to
+ XML_ParserCreate. On success XML_SetEncoding returns non-zero,
+ zero otherwise.
+ Note: Calling XML_SetEncoding after XML_Parse or XML_ParseBuffer
+ has no effect and returns XML_STATUS_ERROR.
+*/
+XMLPARSEAPI(enum XML_Status)
+XML_SetEncoding(XML_Parser parser, const XML_Char *encoding);
+
+/* If this function is called, then the parser will be passed as the
+ first argument to callbacks instead of userData. The userData will
+ still be accessible using XML_GetUserData.
+*/
+XMLPARSEAPI(void)
+XML_UseParserAsHandlerArg(XML_Parser parser);
+
+/* If useDTD == XML_TRUE is passed to this function, then the parser
+ will assume that there is an external subset, even if none is
+ specified in the document. In such a case the parser will call the
+ externalEntityRefHandler with a value of NULL for the systemId
+ argument (the publicId and context arguments will be NULL as well).
+ Note: For the purpose of checking WFC: Entity Declared, passing
+ useDTD == XML_TRUE will make the parser behave as if the document
+ had a DTD with an external subset.
+ Note: If this function is called, then this must be done before
+ the first call to XML_Parse or XML_ParseBuffer, since it will
+ have no effect after that. Returns
+ XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING.
+ Note: If the document does not have a DOCTYPE declaration at all,
+ then startDoctypeDeclHandler and endDoctypeDeclHandler will not
+ be called, despite an external subset being parsed.
+ Note: If XML_DTD is not defined when Expat is compiled, returns
+ XML_ERROR_FEATURE_REQUIRES_XML_DTD.
+*/
+XMLPARSEAPI(enum XML_Error)
+XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD);
+
+
+/* Sets the base to be used for resolving relative URIs in system
+ identifiers in declarations. Resolving relative identifiers is
+ left to the application: this value will be passed through as the
+ base argument to the XML_ExternalEntityRefHandler,
+ XML_NotationDeclHandler and XML_UnparsedEntityDeclHandler. The base
+ argument will be copied. Returns XML_STATUS_ERROR if out of memory,
+ XML_STATUS_OK otherwise.
+*/
+XMLPARSEAPI(enum XML_Status)
+XML_SetBase(XML_Parser parser, const XML_Char *base);
+
+XMLPARSEAPI(const XML_Char *)
+XML_GetBase(XML_Parser parser);
+
+/* Returns the number of the attribute/value pairs passed in last call
+ to the XML_StartElementHandler that were specified in the start-tag
+ rather than defaulted. Each attribute/value pair counts as 2; thus
+ this correspondds to an index into the atts array passed to the
+ XML_StartElementHandler.
+*/
+XMLPARSEAPI(int)
+XML_GetSpecifiedAttributeCount(XML_Parser parser);
+
+/* Returns the index of the ID attribute passed in the last call to
+ XML_StartElementHandler, or -1 if there is no ID attribute. Each
+ attribute/value pair counts as 2; thus this correspondds to an
+ index into the atts array passed to the XML_StartElementHandler.
+*/
+XMLPARSEAPI(int)
+XML_GetIdAttributeIndex(XML_Parser parser);
+
+/* Parses some input. Returns XML_STATUS_ERROR if a fatal error is
+ detected. The last call to XML_Parse must have isFinal true; len
+ may be zero for this call (or any other).
+
+ Though the return values for these functions has always been
+ described as a Boolean value, the implementation, at least for the
+ 1.95.x series, has always returned exactly one of the XML_Status
+ values.
+*/
+XMLPARSEAPI(enum XML_Status)
+XML_Parse(XML_Parser parser, const char *s, int len, int isFinal);
+
+XMLPARSEAPI(void *)
+XML_GetBuffer(XML_Parser parser, int len);
+
+XMLPARSEAPI(enum XML_Status)
+XML_ParseBuffer(XML_Parser parser, int len, int isFinal);
+
+/* Stops parsing, causing XML_Parse() or XML_ParseBuffer() to return.
+ Must be called from within a call-back handler, except when aborting
+ (resumable = 0) an already suspended parser. Some call-backs may
+ still follow because they would otherwise get lost. Examples:
+ - endElementHandler() for empty elements when stopped in
+ startElementHandler(),
+ - endNameSpaceDeclHandler() when stopped in endElementHandler(),
+ and possibly others.
+
+ Can be called from most handlers, including DTD related call-backs,
+ except when parsing an external parameter entity and resumable != 0.
+ Returns XML_STATUS_OK when successful, XML_STATUS_ERROR otherwise.
+ Possible error codes:
+ - XML_ERROR_SUSPENDED: when suspending an already suspended parser.
+ - XML_ERROR_FINISHED: when the parser has already finished.
+ - XML_ERROR_SUSPEND_PE: when suspending while parsing an external PE.
+
+ When resumable != 0 (true) then parsing is suspended, that is,
+ XML_Parse() and XML_ParseBuffer() return XML_STATUS_SUSPENDED.
+ Otherwise, parsing is aborted, that is, XML_Parse() and XML_ParseBuffer()
+ return XML_STATUS_ERROR with error code XML_ERROR_ABORTED.
+
+ *Note*:
+ This will be applied to the current parser instance only, that is, if
+ there is a parent parser then it will continue parsing when the
+ externalEntityRefHandler() returns. It is up to the implementation of
+ the externalEntityRefHandler() to call XML_StopParser() on the parent
+ parser (recursively), if one wants to stop parsing altogether.
+
+ When suspended, parsing can be resumed by calling XML_ResumeParser().
+*/
+XMLPARSEAPI(enum XML_Status)
+XML_StopParser(XML_Parser parser, XML_Bool resumable);
+
+/* Resumes parsing after it has been suspended with XML_StopParser().
+ Must not be called from within a handler call-back. Returns same
+ status codes as XML_Parse() or XML_ParseBuffer().
+ Additional error code XML_ERROR_NOT_SUSPENDED possible.
+
+ *Note*:
+ This must be called on the most deeply nested child parser instance
+ first, and on its parent parser only after the child parser has finished,
+ to be applied recursively until the document entity's parser is restarted.
+ That is, the parent parser will not resume by itself and it is up to the
+ application to call XML_ResumeParser() on it at the appropriate moment.
+*/
+XMLPARSEAPI(enum XML_Status)
+XML_ResumeParser(XML_Parser parser);
+
+enum XML_Parsing {
+ XML_INITIALIZED,
+ XML_PARSING,
+ XML_FINISHED,
+ XML_SUSPENDED
+};
+
+typedef struct {
+ enum XML_Parsing parsing;
+ XML_Bool finalBuffer;
+} XML_ParsingStatus;
+
+/* Returns status of parser with respect to being initialized, parsing,
+ finished, or suspended and processing the final buffer.
+ XXX XML_Parse() and XML_ParseBuffer() should return XML_ParsingStatus,
+ XXX with XML_FINISHED_OK or XML_FINISHED_ERROR replacing XML_FINISHED
+*/
+XMLPARSEAPI(void)
+XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status);
+
+/* Creates an XML_Parser object that can parse an external general
+ entity; context is a '\0'-terminated string specifying the parse
+ context; encoding is a '\0'-terminated string giving the name of
+ the externally specified encoding, or NULL if there is no
+ externally specified encoding. The context string consists of a
+ sequence of tokens separated by formfeeds (\f); a token consisting
+ of a name specifies that the general entity of the name is open; a
+ token of the form prefix=uri specifies the namespace for a
+ particular prefix; a token of the form =uri specifies the default
+ namespace. This can be called at any point after the first call to
+ an ExternalEntityRefHandler so longer as the parser has not yet
+ been freed. The new parser is completely independent and may
+ safely be used in a separate thread. The handlers and userData are
+ initialized from the parser argument. Returns NULL if out of memory.
+ Otherwise returns a new XML_Parser object.
+*/
+XMLPARSEAPI(XML_Parser)
+XML_ExternalEntityParserCreate(XML_Parser parser,
+ const XML_Char *context,
+ const XML_Char *encoding);
+
+enum XML_ParamEntityParsing {
+ XML_PARAM_ENTITY_PARSING_NEVER,
+ XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE,
+ XML_PARAM_ENTITY_PARSING_ALWAYS
+};
+
+/* Controls parsing of parameter entities (including the external DTD
+ subset). If parsing of parameter entities is enabled, then
+ references to external parameter entities (including the external
+ DTD subset) will be passed to the handler set with
+ XML_SetExternalEntityRefHandler. The context passed will be 0.
+
+ Unlike external general entities, external parameter entities can
+ only be parsed synchronously. If the external parameter entity is
+ to be parsed, it must be parsed during the call to the external
+ entity ref handler: the complete sequence of
+ XML_ExternalEntityParserCreate, XML_Parse/XML_ParseBuffer and
+ XML_ParserFree calls must be made during this call. After
+ XML_ExternalEntityParserCreate has been called to create the parser
+ for the external parameter entity (context must be 0 for this
+ call), it is illegal to make any calls on the old parser until
+ XML_ParserFree has been called on the newly created parser.
+ If the library has been compiled without support for parameter
+ entity parsing (ie without XML_DTD being defined), then
+ XML_SetParamEntityParsing will return 0 if parsing of parameter
+ entities is requested; otherwise it will return non-zero.
+ Note: If XML_SetParamEntityParsing is called after XML_Parse or
+ XML_ParseBuffer, then it has no effect and will always return 0.
+*/
+XMLPARSEAPI(int)
+XML_SetParamEntityParsing(XML_Parser parser,
+ enum XML_ParamEntityParsing parsing);
+
+/* If XML_Parse or XML_ParseBuffer have returned XML_STATUS_ERROR, then
+ XML_GetErrorCode returns information about the error.
+*/
+XMLPARSEAPI(enum XML_Error)
+XML_GetErrorCode(XML_Parser parser);
+
+/* These functions return information about the current parse
+ location. They may be called from any callback called to report
+ some parse event; in this case the location is the location of the
+ first of the sequence of characters that generated the event. When
+ called from callbacks generated by declarations in the document
+ prologue, the location identified isn't as neatly defined, but will
+ be within the relevant markup. When called outside of the callback
+ functions, the position indicated will be just past the last parse
+ event (regardless of whether there was an associated callback).
+
+ They may also be called after returning from a call to XML_Parse
+ or XML_ParseBuffer. If the return value is XML_STATUS_ERROR then
+ the location is the location of the character at which the error
+ was detected; otherwise the location is the location of the last
+ parse event, as described above.
+*/
+XMLPARSEAPI(XML_Size) XML_GetCurrentLineNumber(XML_Parser parser);
+XMLPARSEAPI(XML_Size) XML_GetCurrentColumnNumber(XML_Parser parser);
+XMLPARSEAPI(XML_Index) XML_GetCurrentByteIndex(XML_Parser parser);
+
+/* Return the number of bytes in the current event.
+ Returns 0 if the event is in an internal entity.
+*/
+XMLPARSEAPI(int)
+XML_GetCurrentByteCount(XML_Parser parser);
+
+/* If XML_CONTEXT_BYTES is defined, returns the input buffer, sets
+ the integer pointed to by offset to the offset within this buffer
+ of the current parse position, and sets the integer pointed to by size
+ to the size of this buffer (the number of input bytes). Otherwise
+ returns a NULL pointer. Also returns a NULL pointer if a parse isn't
+ active.
+
+ NOTE: The character pointer returned should not be used outside
+ the handler that makes the call.
+*/
+XMLPARSEAPI(const char *)
+XML_GetInputContext(XML_Parser parser,
+ int *offset,
+ int *size);
+
+/* For backwards compatibility with previous versions. */
+#define XML_GetErrorLineNumber XML_GetCurrentLineNumber
+#define XML_GetErrorColumnNumber XML_GetCurrentColumnNumber
+#define XML_GetErrorByteIndex XML_GetCurrentByteIndex
+
+/* Frees the content model passed to the element declaration handler */
+XMLPARSEAPI(void)
+XML_FreeContentModel(XML_Parser parser, XML_Content *model);
+
+/* Exposing the memory handling functions used in Expat */
+XMLPARSEAPI(void *)
+XML_MemMalloc(XML_Parser parser, size_t size);
+
+XMLPARSEAPI(void *)
+XML_MemRealloc(XML_Parser parser, void *ptr, size_t size);
+
+XMLPARSEAPI(void)
+XML_MemFree(XML_Parser parser, void *ptr);
+
+/* Frees memory used by the parser. */
+XMLPARSEAPI(void)
+XML_ParserFree(XML_Parser parser);
+
+/* Returns a string describing the error. */
+XMLPARSEAPI(const XML_LChar *)
+XML_ErrorString(enum XML_Error code);
+
+/* Return a string containing the version number of this expat */
+XMLPARSEAPI(const XML_LChar *)
+XML_ExpatVersion(void);
+
+typedef struct {
+ int major;
+ int minor;
+ int micro;
+} XML_Expat_Version;
+
+/* Return an XML_Expat_Version structure containing numeric version
+ number information for this version of expat.
+*/
+XMLPARSEAPI(XML_Expat_Version)
+XML_ExpatVersionInfo(void);
+
+/* Added in Expat 1.95.5. */
+enum XML_FeatureEnum {
+ XML_FEATURE_END = 0,
+ XML_FEATURE_UNICODE,
+ XML_FEATURE_UNICODE_WCHAR_T,
+ XML_FEATURE_DTD,
+ XML_FEATURE_CONTEXT_BYTES,
+ XML_FEATURE_MIN_SIZE,
+ XML_FEATURE_SIZEOF_XML_CHAR,
+ XML_FEATURE_SIZEOF_XML_LCHAR,
+ XML_FEATURE_NS,
+ XML_FEATURE_LARGE_SIZE
+ /* Additional features must be added to the end of this enum. */
+};
+
+typedef struct {
+ enum XML_FeatureEnum feature;
+ const XML_LChar *name;
+ long int value;
+} XML_Feature;
+
+XMLPARSEAPI(const XML_Feature *)
+XML_GetFeatureList(void);
+
+
+/* Expat follows the GNU/Linux convention of odd number minor version for
+ beta/development releases and even number minor version for stable
+ releases. Micro is bumped with each release, and set to 0 with each
+ change to major or minor version.
+*/
+#define XML_MAJOR_VERSION 2
+#define XML_MINOR_VERSION 0
+#define XML_MICRO_VERSION 1
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* not Expat_INCLUDED */
diff --git a/vendor/voclient/include/expat_external.h b/vendor/voclient/include/expat_external.h
new file mode 100644
index 00000000..2c03284e
--- /dev/null
+++ b/vendor/voclient/include/expat_external.h
@@ -0,0 +1,115 @@
+/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
+ See the file COPYING for copying permission.
+*/
+
+#ifndef Expat_External_INCLUDED
+#define Expat_External_INCLUDED 1
+
+/* External API definitions */
+
+#if defined(_MSC_EXTENSIONS) && !defined(__BEOS__) && !defined(__CYGWIN__)
+#define XML_USE_MSC_EXTENSIONS 1
+#endif
+
+/* Expat tries very hard to make the API boundary very specifically
+ defined. There are two macros defined to control this boundary;
+ each of these can be defined before including this header to
+ achieve some different behavior, but doing so it not recommended or
+ tested frequently.
+
+ XMLCALL - The calling convention to use for all calls across the
+ "library boundary." This will default to cdecl, and
+ try really hard to tell the compiler that's what we
+ want.
+
+ XMLIMPORT - Whatever magic is needed to note that a function is
+ to be imported from a dynamically loaded library
+ (.dll, .so, or .sl, depending on your platform).
+
+ The XMLCALL macro was added in Expat 1.95.7. The only one which is
+ expected to be directly useful in client code is XMLCALL.
+
+ Note that on at least some Unix versions, the Expat library must be
+ compiled with the cdecl calling convention as the default since
+ system headers may assume the cdecl convention.
+*/
+#ifndef XMLCALL
+#if defined(_MSC_VER)
+#define XMLCALL __cdecl
+#elif defined(__GNUC__) && defined(__i386) && !defined(__INTEL_COMPILER)
+#define XMLCALL __attribute__((cdecl))
+#else
+/* For any platform which uses this definition and supports more than
+ one calling convention, we need to extend this definition to
+ declare the convention used on that platform, if it's possible to
+ do so.
+
+ If this is the case for your platform, please file a bug report
+ with information on how to identify your platform via the C
+ pre-processor and how to specify the same calling convention as the
+ platform's malloc() implementation.
+*/
+#define XMLCALL
+#endif
+#endif /* not defined XMLCALL */
+
+
+#if !defined(XML_STATIC) && !defined(XMLIMPORT)
+#ifndef XML_BUILDING_EXPAT
+/* using Expat from an application */
+
+#ifdef XML_USE_MSC_EXTENSIONS
+#define XMLIMPORT __declspec(dllimport)
+#endif
+
+#endif
+#endif /* not defined XML_STATIC */
+
+
+/* If we didn't define it above, define it away: */
+#ifndef XMLIMPORT
+#define XMLIMPORT
+#endif
+
+
+#define XMLPARSEAPI(type) XMLIMPORT type XMLCALL
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef XML_UNICODE_WCHAR_T
+#define XML_UNICODE
+#endif
+
+#ifdef XML_UNICODE /* Information is UTF-16 encoded. */
+#ifdef XML_UNICODE_WCHAR_T
+typedef wchar_t XML_Char;
+typedef wchar_t XML_LChar;
+#else
+typedef unsigned short XML_Char;
+typedef char XML_LChar;
+#endif /* XML_UNICODE_WCHAR_T */
+#else /* Information is UTF-8 encoded. */
+typedef char XML_Char;
+typedef char XML_LChar;
+#endif /* XML_UNICODE */
+
+#ifdef XML_LARGE_SIZE /* Use large integers for file/stream positions. */
+#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400
+typedef __int64 XML_Index;
+typedef unsigned __int64 XML_Size;
+#else
+typedef long long XML_Index;
+typedef unsigned long long XML_Size;
+#endif
+#else
+typedef long XML_Index;
+typedef unsigned long XML_Size;
+#endif /* XML_LARGE_SIZE */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* not Expat_External_INCLUDED */
diff --git a/vendor/voclient/include/samp.h b/vendor/voclient/include/samp.h
new file mode 100644
index 00000000..7184b178
--- /dev/null
+++ b/vendor/voclient/include/samp.h
@@ -0,0 +1,519 @@
+/**
+ * SAMP.H -- SAMP interface include file.
+ *
+ * @brief SAMP interface include file.
+ *
+ * @file samp.h
+ * @author Mike FItzpatrick
+ * @date 7/10/09
+ */
+
+#include <xmlrpc-c/base.h> /* XMLRPC-C interface */
+#include <xmlrpc-c/client.h>
+#include <xmlrpc-c/server.h>
+#include <xmlrpc-c/server_abyss.h>
+#include <sys/types.h> /* for struct stat */
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include "xrpc.h" /* XRPC Wrapper Definitions */
+
+#ifndef SZ_NAME
+#define SZ_NAME 256 /** size of a file path */
+#endif
+#ifndef SZ_LINE
+#define SZ_LINE 256 /** size of a text line */
+#endif
+
+#define SZ_SECRET 64 /** size of secret string */
+#define SZ_DESC 8192 /** len of a description */
+#define SZ_URL 1024 /** len of a URL */
+#define SZ_CMD 1024 /** len of a command */
+#define SZ_SBUF 65536 /** big string buffer */
+#define SZ_RESSTR 1024 /** len of result string */
+
+#define DEF_PORT 9876 /** server port */
+#define DEF_TIMEOUT "15" /** sync message timeout */
+
+#define MAX_SAMPS 16 /** max clients allowed */
+#define MAX_HUBS 16 /** max hubs allowed */
+#define MAX_MDATTRS 32 /** max metadata attrs */
+#define MAX_SUBS 256 /** max subscriptions allowed */
+#define MAX_CLIENTS 32 /** max number of clients */
+#define MAX_ROWS 256 /** max rows to highlight */
+
+#define SAMP_ERR -1 /** error return */
+#define SAMP_PENDING 0 /** pending operation */
+#define SAMP_OK 1 /** ok return */
+
+#define SAMP_CBR 0 /** use call-by-reference */
+#define SAMP_CBV 1 /** use call-by-value */
+
+#define SAMP_SYNCH 0 /** synchronous pattern */
+#define SAMP_ASYNCH 1 /** asynchronous pattern */
+#define SAMP_NOTIFY 2 /** notification pattern */
+
+#define SAMP_INT TY_INT /* values from xrpcP.h */
+#define SAMP_DOUBLE TY_DOUBLE
+#define SAMP_BOOL TY_BOOL
+#define SAMP_STRING TY_STRING
+#define SAMP_DATETIME TY_DATETIME
+#define SAMP_SAMPRUCT TY_STRUCT
+#define SAMP_ARRAY TY_ARRAY
+
+#define SAMP_TRACE 0 /** debug trace */
+
+
+/**
+ * Special Hub events
+ */
+#define HUB_SHUTDOWN 0 /** Hub is shutting down */
+#define HUB_REGISTER 1 /** An app has registered */
+#define HUB_UNREGISTER 2 /** An app has unregistered */
+#define HUB_SUBSCRIPTIONS 3 /** An app declared subscritions */
+#define HUB_METADATA 4 /** An app declared metadata */
+#define HUB_DISCONNECT 5 /** An app is forcibly disconnected */
+
+
+#define LEN_DESC 32768 /** max len of description */
+
+#ifdef min
+#undef min
+#endif
+#ifdef max
+#undef max
+#endif
+
+#define min(a,b) (a<b?a:b)
+#define max(a,b) (a>b?a:b)
+
+
+typedef long handle_t; /** generic object handle */
+typedef int Map; /** SAMP Map datatype */
+typedef int List; /** SAMP List datatype */
+typedef int Msg; /** SAMP Msg datatype */
+typedef int Param; /** SAMP Param datatype */
+typedef char *String; /** SAMP String datatype */
+
+
+/**
+ * Application (and Hub) metadata.
+ */
+typedef struct {
+ char name[SZ_LINE]; /** name */
+ char desc[SZ_DESC]; /** descriptive text */
+ char iconURL[SZ_URL]; /** icon URL */
+ char docURL[SZ_URL]; /** documentation URL */
+
+ char *descHTML; /** descriptive text (HTML) */
+
+ int nkeys; /** number of meta keys */
+ char *aKey[MAX_MDATTRS]; /** attr keyword */
+ char *aVal[MAX_MDATTRS]; /** attr value */
+} appMD, *appMDP;
+
+
+
+/**
+ * Message subscription.
+ */
+typedef struct {
+ char mtype[SZ_LINE]; /** mtype string */
+ int (*userFunc)(void *p); /** user handler function */
+ /** samp handler function */
+ int (*sampFunc)(char *sid, char *sender, char *msgid, Map map);
+} Subs, *SubsP;
+
+
+
+/**
+ * Registered Client name mappings.
+ */
+typedef struct {
+ char pubId[SZ_NAME]; /** public name */
+ char name[SZ_NAME]; /** app name */
+} Client, *ClientP;
+
+
+/**
+ * Hub description. Our application connects to this hub by default, but
+ * the structure will be valid for any Hub.
+ */
+typedef struct {
+ char appName[SZ_LINE]; /** application name */
+ char appVer[SZ_LINE]; /** application version */
+ char description[SZ_LINE]; /** descriptive text */
+
+ appMD meta; /** metadata */
+
+ char secret[SZ_SECRET]; /** registration string */
+ char url[SZ_URL]; /** Hub service endpoint */
+ char version[SZ_NAME]; /** Hub version string */
+
+ int id; /** Hub XML-RPC connection */
+
+ char appId[SZ_NAME]; /** client key */
+ char privateKey[SZ_LINE]; /** client key value */
+ char hubId[SZ_LINE]; /** Hub id value */
+ char selfId[SZ_LINE]; /** Client id value */
+ char timeout[SZ_NAME]; /** Sync msg timeout (str) */
+
+ void *samp; /** back pointer */
+} Hub, *HubP;
+
+
+/**
+ * SAMP application description. By default this describes our app by
+ * may be used to store information about other apps in the network as
+ * well.
+ */
+typedef struct {
+ char appName[SZ_NAME]; /** application name */
+ char appVer[SZ_LINE]; /** application version */
+ char description[SZ_NAME]; /** application description */
+
+ char errortxt[SZ_LINE]; /** last msh error string */
+
+ appMD meta; /** metadata */
+
+ pthread_t svrThread; /** server thread number */
+
+ /** default user handler */
+ int (*defaultUserFunc)(char *sender, char *msgid, Map map);
+
+ Subs subs[MAX_SUBS]; /** message subscriptions */
+ int nsubs; /** number of subscriptions */
+
+ Client clients[MAX_CLIENTS]; /** samp clients */
+ int nclients; /** number of samp clients */
+
+ int serverTid; /** samp server threadId */
+ int serverPort; /** samp server port */
+
+ Hub *hub; /** Hub connection */
+ handle_t hubHandle; /** Hub handle alias */
+ int hubThreadID; /** Hub thread id */
+
+ int active; /** is interface active */
+ int mapClients; /** map other clients */
+ int msgMode; /** (a)synch message mode */
+ int handlerMode; /** CBR / CBV for user handlers */
+
+ FILE *logfd; /** log file descriptor */
+ int debug; /** debug flag */
+ int verbose; /** verbose flag */
+ int trace; /** trace flag */
+} Samp, *SampP;
+
+
+#define MSG_SYNC 0
+#define MSG_ASYNC 1
+#define MSG_NOTIFY 2
+#define DEF_CALLMODE MSG_ASYNC
+
+
+
+/**
+ * Prototype declarations.
+ */
+
+/******************************************************************************
+ ** Public Interface Methods
+ *****************************************************************************/
+
+/* samp.c -- Methods called by user apps to initialize the interface.
+ */
+handle_t sampInit (String appName, String description);
+void samp_Metadata (handle_t handle, String field, String value);
+void samp_Subscribe (handle_t handle, String mtype, void *func);
+void samp_Unsubscribe (handle_t handle, String mtype);
+int sampStartup (handle_t handle);
+int sampShutdown (handle_t handle);
+int sampDebug (handle_t handle, int value);
+int sampVerbose (handle_t handle, int value);
+void sampClose (handle_t handle);
+int samp_hubActive (handle_t handle);
+int samp_setOpt (handle_t handle, char *opt, int value);
+
+void samp_setSyncMode (handle_t handle);
+void samp_setASyncMode (handle_t handle);
+void samp_setNotifyMode (handle_t handle);
+void samp_setMsgMode (handle_t handle, int mode);
+void samp_setCallByRef (handle_t handle);
+void samp_setCallMode (handle_t handle, int mode);
+
+void samp_setReplyCallback (handle_t handle, int *func);
+void samp_setResponseCallback (handle_t handle, int *func);
+void samp_setTimeout (handle_t handle, int timeout);
+void samp_setAppName (handle_t handle, String name);
+void samp_setAppVersion (handle_t handle, String version);
+
+void samp_defaultReplyHandler (handle_t handle);
+void samp_deaultfResponseHandler (handle_t handle);
+int samp_replyStatus (handle_t handle);
+
+int samp_mapClients (handle_t handle);
+int samp_listClients (handle_t handle);
+char *samp_getClients (handle_t handle);
+int samp_addClient (handle_t handle, String name, String id);
+int samp_removeClient (handle_t handle, String id);
+
+Map samp_getOKMap (void);
+Map samp_getNullMap (void);
+
+
+/* sampCommands.c -- Methods called to send messages to the Hub.
+ */
+int samp_Register (handle_t handle);
+int samp_UnRegister (handle_t handle);
+int samp_DeclareMetadata (handle_t handle);
+int samp_Ping (handle_t handle, String appName);
+Map samp_GetMetadata (handle_t handle, String pubId);
+int samp_DeclareSubscriptions (handle_t handle);
+Map samp_GetSubscriptions (handle_t handle, String pubId);
+List samp_GetRegisteredClients (handle_t handle);
+List samp_GetSubscribedClients (handle_t handle, String mtype);
+
+
+/* sampMType.c -- Methods called to send messages to other apps.
+ */
+int samp_tableLoadVOTable (handle_t handle, String recip, String url,
+ String tableId, String name);
+int samp_tableLoadFITS (handle_t handle, String recip, String url,
+ String tableId, String name);
+int samp_imageLoadFITS (handle_t handle, String recip, String url,
+ String imageId, String name);
+
+int samp_tableHighlightRow (handle_t handle, String recip, String tableId,
+ String url, int row);
+int samp_tableSelectRowList (handle_t handle, String recip, String tableId,
+ String url, int rows[], int nrows);
+int samp_coordPointAtSky (handle_t handle, String recip,
+ float ra, float dec);
+int samp_specLoadSSAGeneric (handle_t handle, String recip, String url,
+ Map meta, String spectrumId, String name);
+
+int samp_cmdExec (handle_t handle, String recip, String cmd);
+char *samp_envGet (handle_t handle, String recip, String name);
+int samp_envSet (handle_t handle, String recip, String name, String value);
+char *samp_paramGet (handle_t handle, String recip, String name);
+int samp_paramSet(handle_t handle, String recip, String name, String value);
+int samp_bibLoad (handle_t handle, String recip, String bibcode);
+int samp_resourceLoad (handle_t handle, String recip, String type,
+ String name, Map resMap);
+
+int samp_sendGeneric (handle_t handle, String recip, String mtype,
+ String args[]);
+int samp_sendMsg (handle_t handle, String recip, Map msg);
+
+
+
+/* sampClient.c -- Low-level methods to send messages.
+ */
+void samp_notify (handle_t handle, String recipId, Map msg);
+List samp_notifyAll (handle_t handle, Map msg);
+String samp_call (handle_t handle, String recipId, String tag, Map msg);
+int samp_callAll (handle_t handle, String msg_tag, Map msg);
+int samp_callAndWait (handle_t handle, String recipId, String msg_tag,
+ Map msg);
+int samp_Reply (handle_t handle, String msg_id, Map resp);
+
+String samp_clientName (handle_t handle, String pubId);
+int samp_setErr (handle_t handle, Map resp);
+String samp_getErr (handle_t handle);
+
+
+/* sampMethods.c -- SAMP methods implemented by a callable client.
+ */
+int samp_receiveCall (void *data);
+int samp_receiveNotification (void *data);
+int samp_receiveResponse (void *data);
+
+void samp_setHandlerReply (Map resp);
+Map samp_getHandlerReply (void);
+
+
+/* sampHandlers.c -- Handlers to responses from the message.
+ */
+void samp_setUserHandler (handle_t handle, String mtype, void *func);
+void samp_setSampHandler (handle_t handle, String mtype, void *func);
+void *samp_getUserHandler (String mtype);
+void *samp_getSampHandler (String mtype);
+void samp_execUserHandler (String mtype, String sender,
+ String msg_id, Map params);
+
+int samp_genericMsgHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+
+int samp_PingHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_StatusHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+
+int samp_imLoadHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_tbLoadHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_tbLoadFITSHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_tbLoadVOTHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+
+int samp_tbHighlightHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_tbSelectHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_pointAtHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+
+int samp_specLoadHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_specSSAHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+
+int samp_cmdExecHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_envGetHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_envSetHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_paramGetHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_paramSetHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+
+int samp_bibcodeHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+
+int samp_resLoadHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_resConeHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_resSiapHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_resSsapHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_resTapHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_resVOSpaceHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+
+void samp_printMessage (String mtype, String sender, String msg_id,
+ Map params);
+
+void samp_printMap (String name, Map map);
+int samp_nullResponse (void *data);
+int samp_testEcho (void *data);
+
+
+
+/******************************************************************************
+ ** Internal Interface Methods
+ *****************************************************************************/
+
+/* sampHub.c
+ */
+handle_t samp_hubOpen (Samp *samp);
+int samp_hubClose (handle_t handle);
+List samp_getAvailableHubs (handle_t handle);
+char *samp_getActiveHubName (handle_t handle);
+int samp_getActiveHub (handle_t handle);
+int samp_hubRunning (void);
+int samp_hubInit (handle_t samp, char *appName, char *descr);
+
+int samp_processHubEvent (String mtype, Map params);
+int samp_hubEvent (String mtype);
+
+int samp_hubRegister (Hub *hub);
+int samp_hubUnRegister (Hub *hub);
+int samp_hubSendShutdown (Hub *hub);
+int samp_hubSetXmlrpcCallback (Hub *hub);
+int samp_hubPing (Hub *hub);
+int samp_hubDeclareMetadata (Hub *hub);
+int samp_hubDeclareSubscriptions (Hub *hub);
+
+
+/* sampList.c
+*/
+handle_t samp_newList ();
+void samp_freeList (List list);
+int samp_listLen (List list);
+
+void samp_setStringInList (List list, char *value);
+void samp_setMapInList (List list, Map map);
+void samp_setListInList (List list1, List list2);
+void samp_setIntInList (List list, int value);
+void samp_setFloatInList (List list, float value);
+
+char *samp_getStringFromList (List list, int index);
+Map samp_getMapFromList (List list, int index);
+List samp_getListFromList (List list, int index);
+int samp_getIntFromList (List list, int index);
+float samp_getFloatFromList (List list, int index);
+
+
+/* sampMap.c
+*/
+handle_t samp_newMap (void);
+void samp_freeMap (Map map);
+
+int samp_getMapSize (Map map);
+char *samp_getMapKey (Map map, int index);
+char *samp_getMapVal (Map map, int index);
+
+void samp_setStringInMap (Map map, char *key, char *value);
+void samp_setMapInMap (Map map1, char *key, Map map2);
+void samp_setListInMap (Map map, char *key, List list);
+void samp_setIntInMap (Map map, char *key, int value);
+void samp_setFloatInMap (Map map, char *key, float value);
+
+char *samp_getStringFromMap (Map map, char *key);
+Map samp_getMapFromMap (Map map, char *key);
+List samp_getListFromMap (Map map, char *key);
+int samp_getIntFromMap (Map map, char *key);
+float samp_getFloatFromMap (Map map, char *key);
+
+
+/* sampMsg.c
+ */
+Msg samp_newMsg (void);
+void samp_freeMsg (Msg msg);
+void samp_msgMType (Msg msg, String mtype);
+void samp_msgParam (Msg msg, Param param);
+char *samp_msgTag (void);
+
+
+/* sampParam.c
+ */
+Param samp_newParam (void);
+void samp_freeParam (Param param);
+Param samp_paramInit (Msg msg);
+void samp_addStringParam (Msg msg, char *keyw, String val);
+void samp_addMapParam (Msg msg, char *keyw, Map val);
+void samp_addListParam (Msg msg, char *keyw, List val);
+void samp_addIntParam (Msg msg, char *keyw, int val);
+void samp_addFloatParam (Msg msg, char *keyw, float val);
+int samp_paramLen (Msg msg);
+
+
+/* sampLog.c
+*/
+void sampLog (handle_t handle, char *format, ...);
+void sampTrace (handle_t handle, char *format, ...);
+
+
+/* sampUtil.c
+ */
+handle_t samp_newHandle (void *ptr);
+void samp_freeHandle (handle_t handle);
+
+handle_t samp_P2H (void *ptr);
+void *samp_H2P (handle_t handle);
+
+char *samp_app2id (handle_t handle, char *appName);
+char *samp_id2app (handle_t handle, char *pubId);
+
+int samp_serverPort (void);
+void samp_printMetadata (handle_t handle, String name);
+char *samp_getMetadata (handle_t handle, String name);
+
diff --git a/vendor/voclient/include/sampDecl.h b/vendor/voclient/include/sampDecl.h
new file mode 100644
index 00000000..fdecf2cb
--- /dev/null
+++ b/vendor/voclient/include/sampDecl.h
@@ -0,0 +1,438 @@
+/**
+ * SAMPDECL.H -- SAMP interface method declarations.
+ *
+ * @brief SAMP interface method declarations.
+ *
+ * @file sampDecl.h
+ * @author Mike FItzpatrick
+ * @date 8/10/11
+ */
+
+
+
+typedef XINT handle_t; /** generic object handle */
+typedef int Map; /** SAMP Map datatype */
+typedef int List; /** SAMP List datatype */
+typedef int Msg; /** SAMP Msg datatype */
+typedef int Param; /** SAMP Param datatype */
+typedef char *String; /** SAMP String datatype */
+
+#define SZ_NAME 256 /** size of a file path */
+#define SZ_LINE 256 /** size of a text line */
+#define SZ_SECRET 64 /** size of secret string */
+#define SZ_DESC 8192 /** len of a description */
+#define SZ_URL 1024 /** len of a URL */
+#define SZ_CMD 1024 /** len of a command */
+
+#define MAX_SAMPS 16 /** max clients allowed */
+#define MAX_HUBS 16 /** max hubs allowed */
+#define MAX_MDATTRS 32 /** max metadata attrs */
+#define MAX_SUBS 256 /** max subscriptions allowed */
+#define MAX_CLIENTS 32 /** max number of clients */
+#define MAX_ROWS 256 /** max rows to highlight */
+
+
+/**
+ * Application (and Hub) metadata.
+ */
+typedef struct {
+ char name[SZ_LINE]; /** name */
+ char desc[SZ_DESC]; /** descriptive text */
+ char iconURL[SZ_URL]; /** icon URL */
+ char docURL[SZ_URL]; /** documentation URL */
+
+ char *descHTML; /** descriptive text (HTML) */
+
+ int nkeys; /** number of meta keys */
+ char *aKey[MAX_MDATTRS]; /** attr keyword */
+ char *aVal[MAX_MDATTRS]; /** attr value */
+} appMD, *appMDP;
+
+
+/**
+ * Message subscription.
+ */
+typedef struct {
+ char mtype[SZ_LINE]; /** mtype string */
+ int (*userFunc)(void *p); /** user handler function */
+ /** samp handler function */
+ int (*sampFunc)(char *sid, char *sender, char *msgid, Map map);
+} Subs, *SubsP;
+
+
+/**
+ * Registered Client name mappings.
+ */
+typedef struct {
+ char pubId[SZ_NAME]; /** public name */
+ char name[SZ_NAME]; /** app name */
+} Client, *ClientP;
+
+
+/**
+ * Hub description. Our application connects to this hub by default, but
+ * the structure will be valid for any Hub.
+ */
+typedef struct {
+ char appName[SZ_LINE]; /** application name */
+ char appVer[SZ_LINE]; /** application version */
+ char description[SZ_LINE]; /** descriptive text */
+
+ appMD meta; /** metadata */
+
+ char secret[SZ_SECRET]; /** registration string */
+ char url[SZ_URL]; /** Hub service endpoint */
+ char version[SZ_NAME]; /** Hub version string */
+
+ int id; /** Hub XML-RPC connection */
+
+ char appId[SZ_NAME]; /** client key */
+ char privateKey[SZ_LINE]; /** client key value */
+ char hubId[SZ_LINE]; /** Hub id value */
+ char selfId[SZ_LINE]; /** Client id value */
+ char timeout[SZ_NAME]; /** Sync msg timeout (str) */
+
+ void *samp; /** back pointer */
+} Hub, *HubP;
+
+
+/**
+ * SAMP application description. By default this describes our app by
+ * may be used to store information about other apps in the network as
+ * well.
+ */
+typedef struct {
+ char appName[SZ_NAME]; /** application name */
+ char appVer[SZ_LINE]; /** application version */
+ char description[SZ_NAME]; /** application description */
+
+ char errortxt[SZ_LINE]; /** last msh error string */
+
+ appMD meta; /** metadata */
+
+ pthread_t svrThread; /** server thread number */
+
+ /** default user handler */
+ int (*defaultUserFunc)(char *sender, char *msgid, Map map);
+
+ Subs subs[MAX_SUBS]; /** message subscriptions */
+ int nsubs; /** number of subscriptions */
+
+ Client clients[MAX_CLIENTS]; /** samp clients */
+ int nclients; /** number of samp clients */
+
+ int serverTid; /** samp server threadId */
+ int serverPort; /** samp server port */
+
+ Hub *hub; /** Hub connection */
+ handle_t hubHandle; /** Hub handle alias */
+ int hubThreadID; /** Hub thread id */
+
+ int active; /** is interface active */
+ int msgMode; /** (a)synch message mode */
+ int handlerMode; /** CBR / CBV for user handlers */
+
+ FILE *logfd; /** log file descriptor */
+ int debug; /** debug flag */
+ int trace; /** trace flag */
+} Samp, *SampP;
+
+
+#define MSG_SYNC 0
+#define MSG_ASYNC 1
+#define MSG_NOTIFY 2
+#define DEF_CALLMODE MSG_ASYNC
+
+
+
+/**
+ * Prototype declarations.
+ */
+
+/******************************************************************************
+ ** Public Interface Methods
+ *****************************************************************************/
+
+/* samp.c -- Methods called by user apps to initialize the interface.
+ */
+handle_t sampInit (String appName, String description);
+void samp_Metadata (handle_t handle, String field, String value);
+void samp_Subscribe (handle_t handle, String mtype, void *func);
+void samp_Unsubscribe (handle_t handle, String mtype);
+int sampStartup (handle_t handle);
+int sampShutdown (handle_t handle);
+void sampClose (handle_t handle);
+
+void samp_setSyncMode (handle_t handle);
+void samp_setASyncMode (handle_t handle);
+void samp_setNotifyMode (handle_t handle);
+void samp_setCallByRef (handle_t handle);
+void samp_setCallMode (handle_t handle, int mode);
+
+void samp_setReplyCallback (handle_t handle, int *func);
+void samp_setResponseCallback (handle_t handle, int *func);
+void samp_setTimeout (handle_t handle, int timeout);
+void samp_setAppName (handle_t handle, String name);
+void samp_setAppVersion (handle_t handle, String version);
+
+void samp_defaultReplyHandler (handle_t handle);
+void samp_deaultfResponseHandler (handle_t handle);
+int samp_replyStatus (handle_t handle);
+
+int samp_mapClients (handle_t handle);
+int samp_listClients (handle_t handle);
+int samp_addClient (handle_t handle, String name, String id);
+int samp_removeClient (handle_t handle, String id);
+
+Map samp_getOKMap (void);
+Map samp_getNullMap (void);
+
+
+/* sampCommands.c -- Methods called to send messages to the Hub.
+ */
+int samp_Register (handle_t handle);
+int samp_UnRegister (handle_t handle);
+int samp_DeclareMetadata (handle_t handle);
+int samp_Ping (handle_t handle, String appName);
+Map samp_GetMetadata (handle_t handle, String pubId);
+int samp_DeclareSubscriptions (handle_t handle);
+Map samp_GetSubscriptions (handle_t handle, String pubId);
+List samp_GetRegisteredClients (handle_t handle);
+List samp_GetSubscribedClients (handle_t handle, String mtype);
+
+
+/* sampMType.c -- Methods called to send messages to other apps.
+ */
+int samp_tableLoadVOTable (handle_t handle, String recip, String url,
+ String tableId, String name);
+int samp_tableLoadFITS (handle_t handle, String recip, String url,
+ String tableId, String name);
+int samp_imageLoadFITS (handle_t handle, String recip, String url,
+ String imageId, String name);
+
+int samp_tableHighlightRow (handle_t handle, String recip, String tableId,
+ String url, int row);
+int samp_tableSelectRowList (handle_t handle, String recip, String tableId,
+ String url, int rows[], int nrows);
+int samp_coordPointAtSky (handle_t handle, String recip,
+ float ra, float dec);
+int samp_specLoadSSAGeneric (handle_t handle, String recip, String url,
+ Map meta, String spectrumId, String name);
+
+int samp_cmdExec (handle_t handle, String recip, String cmd);
+char *samp_envGet (handle_t handle, String recip, String name);
+int samp_envSet (handle_t handle, String recip, String name, String value);
+char *samp_paramGet (handle_t handle, String recip, String name);
+int samp_paramSet(handle_t handle, String recip, String name, String value);
+int samp_bibLoad (handle_t handle, String recip, String bibcode);
+int samp_resourceLoad (handle_t handle, String recip, String type,
+ String name, Map resMap);
+
+int samp_sendGeneric (handle_t handle, String recip, String mtype,
+ String args[]);
+int samp_sendMsg (handle_t handle, String recip, Map msg);
+
+
+
+/* sampClient.c -- Low-level methods to send messages.
+ */
+void samp_notify (handle_t handle, String recipId, Map msg);
+List samp_notifyAll (handle_t handle, Map msg);
+String samp_call (handle_t handle, String recipId, String tag, Map msg);
+int samp_callAll (handle_t handle, String msg_tag, Map msg);
+int samp_callAndWait (handle_t handle, String recipId, String msg_tag,
+ Map msg);
+int samp_Reply (handle_t handle, String msg_id, Map resp);
+
+String samp_clientName (handle_t handle, String pubId);
+int samp_setErr (handle_t handle, Map resp);
+String samp_getErr (handle_t handle);
+
+
+/* sampMethods.c -- SAMP methods implemented by a callable client.
+ */
+int samp_receiveCall (void *data);
+int samp_receiveNotification (void *data);
+int samp_receiveResponse (void *data);
+
+
+/* sampHandlers.c -- Handlers to responses from the message.
+ */
+void samp_setUserHandler (handle_t handle, String mtype, void *func);
+void samp_setSampHandler (handle_t handle, String mtype, void *func);
+void *samp_getUserHandler (String mtype);
+void *samp_getSampHandler (String mtype);
+void samp_execUserHandler (String mtype, String sender,
+ String msg_id, Map params);
+
+int samp_genericMsgHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+
+int samp_PingHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_StatusHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+
+int samp_imLoadHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_tbLoadHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_tbLoadFITSHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_tbLoadVOTHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_specLoadHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_specSSAHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+
+int samp_tbHighlightHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_tbSelectHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_pointAtHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_bibcodeHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+
+int samp_cmdExecHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_envGetHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_envSetHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_paramGetHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_paramSetHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+
+int samp_resLoadHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_resConeHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_resSiapHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_resSsapHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_resTapHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+int samp_resVOSpaceHandler (String sender, String mtype, String msg_id,
+ Map msg_map);
+
+void samp_printMessage (String mtype, String sender, String msg_id,
+ Map params);
+
+void samp_printMap (String name, Map map);
+int samp_nullResponse (void *data);
+int samp_testEcho (void *data);
+
+
+
+/******************************************************************************
+ ** Internal Interface Methods
+ *****************************************************************************/
+
+/* sampHub.c
+ */
+handle_t samp_hubOpen (Samp *samp);
+int samp_hubClose (handle_t handle);
+List samp_getAvailableHubs (handle_t handle);
+char *samp_getActiveHubName (handle_t handle);
+int samp_getActiveHub (handle_t handle);
+int samp_hubInit (handle_t samp, char *appName, char *descr);
+
+int samp_processHubEvent (String mtype, Map params);
+int samp_hubEvent (String mtype);
+
+int samp_hubRegister (Hub *hub);
+int samp_hubUnRegister (Hub *hub);
+int samp_hubSendShutdown (Hub *hub);
+int samp_hubSetXmlrpcCallback (Hub *hub);
+int samp_hubPing (Hub *hub);
+int samp_hubDeclareMetadata (Hub *hub);
+int samp_hubDeclareSubscriptions (Hub *hub);
+
+
+/* sampList.c
+*/
+handle_t samp_newList ();
+void samp_freeList (List list);
+int samp_listLen (List list);
+
+void samp_setStringInList (List list, char *value);
+void samp_setMapInList (List list, Map map);
+void samp_setListInList (List list1, List list2);
+void samp_setIntInList (List list, int value);
+void samp_setFloatInList (List list, float value);
+
+char *samp_getStringFromList (List list, int index);
+Map samp_getMapFromList (List list, int index);
+List samp_getListFromList (List list, int index);
+int samp_getIntFromList (List list, int index);
+float samp_getFloatFromList (List list, int index);
+
+
+/* sampMap.c
+*/
+handle_t samp_newMap (void);
+void samp_freeMap (Map map);
+
+int samp_getMapSize (Map map);
+char *samp_getMapKey (Map map, int index);
+char *samp_getMapVal (Map map, int index);
+
+void samp_setStringInMap (Map map, char *key, char *value);
+void samp_setMapInMap (Map map1, char *key, Map map2);
+void samp_setListInMap (Map map, char *key, List list);
+void samp_setIntInMap (Map map, char *key, int value);
+void samp_setFloatInMap (Map map, char *key, float value);
+
+char *samp_getStringFromMap (Map map, char *key);
+Map samp_getMapFromMap (Map map, char *key);
+List samp_getListFromMap (Map map, char *key);
+int samp_getIntFromMap (Map map, char *key);
+float samp_getFloatFromMap (Map map, char *key);
+
+
+/* sampMsg.c
+ */
+Msg samp_newMsg (void);
+void samp_freeMsg (Msg msg);
+void samp_msgMType (Msg msg, String mtype);
+void samp_msgParam (Msg msg, Param param);
+char *samp_msgTag (void);
+
+
+/* sampParam.c
+ */
+Param samp_newParam (void);
+void samp_freeParam (Param param);
+Param samp_paramInit (Msg msg);
+void samp_addStringParam (Msg msg, char *keyw, String val);
+void samp_addMapParam (Msg msg, char *keyw, Map val);
+void samp_addListParam (Msg msg, char *keyw, List val);
+void samp_addIntParam (Msg msg, char *keyw, int val);
+void samp_addFloatParam (Msg msg, char *keyw, float val);
+int samp_paramLen (Msg msg);
+
+
+/* sampLog.c
+*/
+void sampLog (handle_t handle, char *format, ...);
+void sampTrace (handle_t handle, char *format, ...);
+
+
+/* sampUtil.c
+ */
+handle_t samp_newHandle (void *ptr);
+void samp_freeHandle (handle_t handle);
+
+handle_t samp_P2H (void *ptr);
+void *samp_H2P (handle_t handle);
+
+char *samp_app2id (handle_t handle, char *appName);
+char *samp_id2app (handle_t handle, char *pubId);
+
+int samp_serverPort (void);
+void samp_printMetadata (handle_t handle, char *name);
+char *samp_getMetadata (handle_t handle, char *name);
diff --git a/vendor/voclient/include/votParse.h b/vendor/voclient/include/votParse.h
new file mode 100644
index 00000000..3f452dad
--- /dev/null
+++ b/vendor/voclient/include/votParse.h
@@ -0,0 +1,181 @@
+/**
+ * VOTPARSE.H -- Public procedure declarations for the VOTable interface.
+ *
+ * @file votParse.h
+ * @author Mike Fitzpatrick and Eric Timmermann
+ * @date 8/03/09
+ *
+ * @brief Public procedure declarations for the VOTable interface.
+ */
+
+
+/**
+ * VOTable element types
+ */
+#define NUM_ELEMENTS 25
+
+#define TY_ROOT 000000000 /* Element Type Definitions */
+#define TY_VOTABLE 000000001
+#define TY_RESOURCE 000000002
+#define TY_FIELD 000000004
+#define TY_PARAM 000000010
+#define TY_INFO 000000020
+#define TY_TR 000000040
+#define TY_TD 000000100
+#define TY_TABLE 000000200
+#define TY_STREAM 000000400
+#define TY_FITS 000001000
+#define TY_GROUP 000002000
+#define TY_FIELDREF 000004000
+#define TY_PARAMREF 000010000
+#define TY_MIN 000020000
+#define TY_MAX 000040000
+#define TY_OPTION 000100000
+#define TY_VALUES 000200000
+#define TY_LINK 000400000
+#define TY_DATA 001000000
+#define TY_DESCRIPTION 002000000
+#define TY_TABLEDATA 004000000
+#define TY_BINARY 010000000
+#define TY_BINARY2 020000000
+
+#define TY_COOSYS 100000000 /* deprecated elements */
+#define TY_DEFINITIONS 200000000
+
+
+#ifndef OK /* Utility values */
+#define OK 0
+#endif
+#ifndef ERR
+#define ERR 1
+#endif
+
+#ifndef TRUE
+#define TRUE 1
+#endif
+#ifndef FALSE
+#define FALSE 0
+#endif
+
+
+#ifndef handle_t
+#define handle_t int
+#endif
+
+
+/** *************************************************************************
+ * Public LIBVOTABLE interface.
+ ** ************************************************************************/
+
+handle_t vot_openVOTABLE (char *arg);
+void vot_closeVOTABLE (handle_t vot);
+
+handle_t vot_getRESOURCE (handle_t handle);
+handle_t vot_getTABLE (handle_t handle);
+handle_t vot_getFIELD (handle_t handle);
+handle_t vot_getDATA (handle_t handle);
+handle_t vot_getTABLEDATA (handle_t handle);
+handle_t vot_getTR (handle_t handle);
+handle_t vot_getTD (handle_t handle);
+handle_t vot_getBINARY (handle_t handle);
+handle_t vot_getBINARY2 (handle_t handle);
+handle_t vot_getFITS (handle_t handle);
+handle_t vot_getGROUP (handle_t handle);
+handle_t vot_getFIELDRef (handle_t handle);
+handle_t vot_getPARAMRef (handle_t handle);
+handle_t vot_getDESCRIPTION (handle_t handle);
+handle_t vot_getPARAM (handle_t handle);
+handle_t vot_getINFO (handle_t handle);
+handle_t vot_getSTREAM (handle_t handle);
+handle_t vot_getVALUES (handle_t handle);
+handle_t vot_getMIN (handle_t handle);
+handle_t vot_getMAX (handle_t handle);
+handle_t vot_getOPTION (handle_t handle);
+handle_t vot_getLINK (handle_t handle);
+handle_t vot_getCOOSYS (handle_t handle);
+
+handle_t vot_newRESOURCE (handle_t parent_h);
+handle_t vot_newTABLE (handle_t parent_h);
+handle_t vot_newFIELD (handle_t parent_h);
+handle_t vot_newDATA (handle_t parent_h);
+handle_t vot_newTABLEDATA (handle_t parent_h);
+handle_t vot_newTR (handle_t parent_h);
+handle_t vot_newTD (handle_t parent_h);
+handle_t vot_newBINARY (handle_t parent_h);
+handle_t vot_newBINARY2 (handle_t parent_h);
+handle_t vot_newFITS (handle_t parent_h);
+handle_t vot_newGROUP (handle_t parent_h);
+handle_t vot_newFIELDRef (handle_t parent_h);
+handle_t vot_newPARAMRef (handle_t parent_h);
+handle_t vot_newDESCRIPTION (handle_t parent_h);
+handle_t vot_newPARAM (handle_t parent_h);
+handle_t vot_newINFO (handle_t parent_h);
+handle_t vot_newSTREAM (handle_t parent_h);
+handle_t vot_newVALUES (handle_t parent_h);
+handle_t vot_newMIN (handle_t parent_h);
+handle_t vot_newMAX (handle_t parent_h);
+handle_t vot_newOPTION (handle_t parent_h);
+handle_t vot_newLINK (handle_t parent_h);
+handle_t vot_newCOOSYS (handle_t parent_h);
+
+int vot_getDATAType (handle_t data_h);
+char *vot_getDATATypeString (handle_t data_h);
+
+/****************************************************************************/
+
+handle_t vot_newNode (handle_t parent, int type);
+void vot_freeNode (handle_t delete_me);
+void vot_attachNode (handle_t parent, handle_t new);
+void vot_deleteNode (handle_t element);
+handle_t vot_copyElement (handle_t src_h, handle_t parent_h);
+
+
+/*****************************************************************************
+ * Utility methods
+ ****************************************************************************/
+
+int vot_getNCols (handle_t tdata_h);
+int vot_getNRows (handle_t tdata_h);
+char *vot_getTableCell (handle_t tdata_h, int row, int col);
+int vot_sortTable (handle_t tdata_h, int col, int sort_strings, int order);
+int vot_getLength (handle_t elem_h);
+int vot_getNumberOf (handle_t elem_h, int type);
+
+int vot_colByAttr (handle_t tab, char *attr, char *name, char *alt);
+int vot_colByName (handle_t tab, char *name, char *alt);
+int vot_colByUCD (handle_t tab, char *name, char *alt);
+int vot_colByID (handle_t tab, char *name, char *alt);
+
+handle_t vot_findByAttr (handle_t parent, char *name, char *value);
+handle_t *vot_findInGroup (handle_t group, int type);
+handle_t vot_getNext (handle_t elem_h);
+handle_t vot_getSibling(handle_t elem_h);
+handle_t vot_getChild (handle_t elem_h);
+handle_t vot_getParent (handle_t elem_h);
+handle_t vot_getChildOfType (handle_t elem_h, int type);
+int vot_valueOf (handle_t elem_h);
+int vot_typeOf (handle_t elem_h);
+int vot_handleCount ();
+
+int vot_setValue (handle_t elem_h, char *value);
+char *vot_getValue(handle_t elem_h);
+int vot_setAttr (handle_t elem_h, char *attr, char *value);
+char *vot_getAttr (handle_t elem_h, char *attr);
+
+void vot_setWarnings (int value);
+void votEmsg (char *msg);
+
+
+/****************************************************************************
+ * Write
+ ***************************************************************************/
+
+void vot_writeVOTable (handle_t node, char *fname, int indent);
+void vot_writeHTML (handle_t node, char *ifname, char *ofname);
+void vot_writeSHTML (handle_t node, char *ifname, char *ofname);
+void vot_writeASV (handle_t node, char *fname, int hdr);
+void vot_writeBSV (handle_t node, char *fname, int hdr);
+void vot_writeCSV (handle_t node, char *fname, int hdr);
+void vot_writeTSV (handle_t node, char *fname, int hdr);
+void vot_writeFITS (handle_t node, char *fname);
+
diff --git a/vendor/voclient/include/votParse_spp.h b/vendor/voclient/include/votParse_spp.h
new file mode 100644
index 00000000..7d5c5ab3
--- /dev/null
+++ b/vendor/voclient/include/votParse_spp.h
@@ -0,0 +1,137 @@
+##
+# VOTPARSE_SPP.H -- Include file for the SPP libvotable interface.
+#
+# @file votParse_spp.h
+# @author M. Fitzpatrick,
+# @date 4/16/2011
+#
+# @brief Include file for the SPP libvotable interface.
+#
+##
+
+
+# Define UCD defaults for well-known VOTable columns.
+
+define DEF_ACREF_UCD "VOX:Image_AccessReference"
+define DEF_FORMAT_UCD "VOX:Image_Format"
+
+
+# VOTable Summary structure. Our purpose here is to save some of the
+# commonly referenced elements from the parsing to simplify the applications
+# code. Many times we'll just want to skip straight to the table data,
+# this gives us handles to the key nodes in case we need to get at more
+# detailed parts of the document. For nodes such as <FIELD>, we store the
+# handle to the first element in the list and use the interface iterators
+# to loop.
+
+define SZ_VOT_STRUCT 11
+
+define VOT_ROOT Memi[$1 ] # root VOTable handle
+define VOT_RES Memi[$1+1] # RESOURCE handle
+define VOT_TAB Memi[$1+2] # TABLE handle
+define VOT_DATA Memi[$1+3] # DATA handle
+define VOT_TDATA Memi[$1+4] # TABLEDATA handle
+
+define VOT_INFO Memi[$1+5] # INFO handle
+define VOT_PARAM Memi[$1+6] # PARAM handle
+define VOT_FIELD Memi[$1+7] # FIELD handle
+
+define VOT_NRES Memi[$1+8] # No. of RESOURCES
+define VOT_NROWS Memi[$1+9] # No. of TABLEDATA rows
+define VOT_NCOLS Memi[$1+10] # No. of TABLEDATA cols
+
+
+
+# Procedure declarations. In the SPP code we wish to allow readable names,
+# but must map these to the 6 chars produced in the compiled code.
+
+define vx_openVOTABLE vopene
+define vx_closeVOTABLE vclose
+
+define vx_getRESOURCE vgetre
+define vx_getTABLE vgette
+define vx_getFIELD vgetfd
+define vx_getDATA vgetda
+define vx_getTABLEDATA vgetta
+define vx_getTR vgettr
+define vx_getTD vgettd
+define vx_getBINARY vgetby
+define vx_getBINARY2 vgetb2
+define vx_getFITS vgetfs
+define vx_getGROUP vgetgp
+define vx_getFIELDREF vgetff
+define vx_getPARAMREF vgetpf
+define vx_getDESCRIPTION vgetdn
+define vx_getPARAM vgetpm
+define vx_getINFO vgetio
+define vx_getSTREAM vgetsm
+define vx_getVALUES vgetvs
+define vx_getMIN vgetmn
+define vx_getMAX vgetmx
+define vx_getOPTION vgeton
+define vx_getLINK vgetlk
+define vx_getCOOSYS vgetcs
+
+define vx_newRESOURCE vnetre
+define vx_newTABLE vnette
+define vx_newFIELD vnetfd
+define vx_newDATA vnetda
+define vx_newTABLEDATA vnetta
+define vx_newTR vnettr
+define vx_newTD vnettd
+define vx_newBINARY vnetby
+define vx_newBINARY2 vnetb2
+define vx_newFITS vnetfs
+define vx_newGROUP vnetgp
+define vx_newFIELDREF vnetff
+define vx_newPARAMREF vnetpf
+define vx_newDESCRIPTION vnetdn
+define vx_newPARAM vnetpm
+define vx_newINFO vnetio
+define vx_newSTREAM vnetsm
+define vx_newVALUES vnetvs
+define vx_newMIN vnetmn
+define vx_newMAX vnetmx
+define vx_newOPTION vneton
+define vx_newLINK vnetlk
+define vx_newCOOSYS vnetcs
+
+define vx_getDATAType vgetde
+define vx_getDATATypeStr vgetdr
+
+define vx_newNode vnewne
+define vx_freeNode vfreee
+define vx_attachNode vattae
+define vx_deleteNode vdelee
+define vx_copyElement vcopyt
+define vx_getNCols vgncol
+define vx_getNRows vgnrow
+define vx_getTableCell vgstab
+define vx_getTableInt vgitab
+define vx_getTableReal vgrtab
+define vx_getLength vgetlh
+define vx_getNumberOF vgetnf
+
+define vx_colByAttr vcbatr
+define vx_colByName vcbnam
+define vx_colByUCD vcbucd
+define vx_colByID vcbyid
+
+define vx_findByAttr vfindr
+define vx_findInGroup vfindp
+define vx_nextInGroup vnextp
+
+define vx_getNext vgetnt
+define vx_getSibling vgetsg
+define vx_getChild vgetcd
+define vx_getParent vgetpt
+define vx_ChildOfType vchile
+define vx_valueOf vvaluf
+define vx_typeOf vtypef
+define vx_setValue vsetve
+define vx_getValue vgsval
+define vx_getIntValue vgival
+define vx_getRealValue vgrval
+define vx_setAttr vsetar
+define vx_getAttr vgetar
+define vx_writeXML vwritl
diff --git a/vendor/voclient/include/xmlrpc-c/abyss.h b/vendor/voclient/include/xmlrpc-c/abyss.h
new file mode 100644
index 00000000..ec76a442
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc-c/abyss.h
@@ -0,0 +1,560 @@
+/*****************************************************************************
+ abyss.h
+******************************************************************************
+
+ This file is the interface header for the Abyss HTTP server component of
+ XML-RPC For C/C++ (Xmlrpc-c).
+
+ The Abyss component of Xmlrpc-c is based on the independently developed
+ and distributed Abyss web server package from 2001.
+
+ Copyright information is at the end of the file.
+****************************************************************************/
+
+#ifndef XMLRPC_ABYSS_H_INCLUDED
+#define XMLRPC_ABYSS_H_INCLUDED
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <sys/types.h>
+
+#include <xmlrpc-c/inttypes.h>
+
+/****************************************************************************
+ STUFF FOR THE OUTER CONTROL PROGRAM TO USE
+****************************************************************************/
+
+typedef int abyss_bool;
+
+/****************************************************************************
+ GLOBAL (STATIC) PROGRAM STUFF
+****************************************************************************/
+
+void
+AbyssInit(const char ** const errorP);
+
+void
+AbyssTerm(void);
+
+/*********************************************************************
+** MIMEType
+*********************************************************************/
+
+typedef struct MIMEType MIMEType;
+
+MIMEType *
+MIMETypeCreate(void);
+
+void
+MIMETypeDestroy(MIMEType * const MIMETypeP);
+
+void
+MIMETypeInit(void);
+
+void
+MIMETypeTerm(void);
+
+abyss_bool
+MIMETypeAdd2(MIMEType * const MIMETypeP,
+ const char * const type,
+ const char * const ext);
+
+abyss_bool
+MIMETypeAdd(const char * const type,
+ const char * const ext);
+
+
+enum abyss_foreback {ABYSS_FOREGROUND, ABYSS_BACKGROUND};
+
+#define HAVE_CHANSWITCH
+
+typedef struct _TChanSwitch TChanSwitch;
+typedef struct _TChannel TChannel;
+typedef struct _TSocket TSocket;
+
+#ifdef WIN32
+ #include <xmlrpc-c/abyss_winsock.h>
+#else
+ #include <xmlrpc-c/abyss_unixsock.h>
+#endif
+
+void
+ChanSwitchInit(const char ** const errorP);
+
+void
+ChanSwitchTerm(void);
+
+/* If you're wondering where the constructors for TChanSwitch,
+ TChannel, and TSocket are: They're implementation-specific, so look
+ in abyss_unixsock.h, etc.
+*/
+
+void
+ChanSwitchDestroy(TChanSwitch * const chanSwitchP);
+
+void
+ChannelInit(const char ** const errorP);
+
+void
+ChannelTerm(void);
+
+void
+ChannelDestroy(TChannel * const channelP);
+
+void
+SocketDestroy(TSocket * const socketP);
+
+
+typedef struct {
+ /* Before Xmlrpc-c 1.04, the internal server representation,
+ struct _TServer, was exposed to users and was the only way to
+ set certain parameters of the server. Now, use the (new)
+ ServerSet...() functions. Use the HAVE_ macros to determine
+ which method you have to use.
+ */
+ struct _TServer * srvP;
+} TServer;
+
+typedef struct _TSession TSession;
+
+abyss_bool
+ServerCreate(TServer * const serverP,
+ const char * const name,
+ xmlrpc_uint16_t const port,
+ const char * const filespath,
+ const char * const logfilename);
+
+void
+ServerCreateSwitch(TServer * const serverP,
+ TChanSwitch * const chanSwitchP,
+ const char ** const errorP);
+
+abyss_bool
+ServerCreateSocket(TServer * const serverP,
+ const char * const name,
+ TOsSocket const socketFd,
+ const char * const filespath,
+ const char * const logfilename);
+
+#define HAVE_SERVER_CREATE_SOCKET_2
+void
+ServerCreateSocket2(TServer * const serverP,
+ TSocket * const socketP,
+ const char ** const errorP);
+
+abyss_bool
+ServerCreateNoAccept(TServer * const serverP,
+ const char * const name,
+ const char * const filespath,
+ const char * const logfilename);
+
+void
+ServerFree(TServer * const serverP);
+
+void
+ServerSetName(TServer * const serverP,
+ const char * const name);
+
+void
+ServerSetFilesPath(TServer * const serverP,
+ const char * const filesPath);
+
+void
+ServerSetLogFileName(TServer * const serverP,
+ const char * const logFileName);
+
+#define HAVE_SERVER_SET_KEEPALIVE_TIMEOUT 1
+void
+ServerSetKeepaliveTimeout(TServer * const serverP,
+ xmlrpc_uint32_t const keepaliveTimeout);
+
+#define HAVE_SERVER_SET_KEEPALIVE_MAX_CONN 1
+void
+ServerSetKeepaliveMaxConn(TServer * const serverP,
+ xmlrpc_uint32_t const keepaliveMaxConn);
+
+#define HAVE_SERVER_SET_TIMEOUT 1
+void
+ServerSetTimeout(TServer * const serverP,
+ xmlrpc_uint32_t const timeout);
+
+#define HAVE_SERVER_SET_ADVERTISE 1
+void
+ServerSetAdvertise(TServer * const serverP,
+ abyss_bool const advertise);
+
+#define HAVE_SERVER_SET_MIME_TYPE 1
+void
+ServerSetMimeType(TServer * const serverP,
+ MIMEType * const MIMETypeP);
+
+void
+ServerInit(TServer * const serverP);
+
+void
+ServerRun(TServer * const serverP);
+
+void
+ServerRunOnce(TServer * const serverP);
+
+/* ServerRunOnce2() is obsolete. See user's guide. */
+void
+ServerRunOnce2(TServer * const serverP,
+ enum abyss_foreback const foregroundBackground);
+
+void
+ServerRunChannel(TServer * const serverP,
+ TChannel * const channelP,
+ void * const channelInfoP,
+ const char ** const errorP);
+
+#define HAVE_SERVER_RUN_CONN_2
+void
+ServerRunConn2(TServer * const serverP,
+ TSocket * const connectedSocketP,
+ const char ** const errorP);
+
+void
+ServerRunConn(TServer * const serverP,
+ TOsSocket const connectedSocket);
+
+void
+ServerDaemonize(TServer * const serverP);
+
+void
+ServerTerminate(TServer * const serverP);
+
+void
+ServerResetTerminate(TServer * const serverP);
+
+void
+ServerUseSigchld(TServer * const serverP);
+
+#ifndef WIN32
+void
+ServerHandleSigchld(pid_t const pid);
+#endif
+
+typedef abyss_bool (*URIHandler) (TSession *); /* deprecated */
+
+struct URIHandler2;
+
+typedef void (*initHandlerFn)(struct URIHandler2 *, abyss_bool *);
+
+typedef void (*termHandlerFn)(void *);
+
+typedef void (*handleReq3Fn)(void *,
+ TSession *,
+ abyss_bool *);
+
+typedef void (*handleReq2Fn)(struct URIHandler2 *,
+ TSession *,
+ abyss_bool *);
+
+struct ServerReqHandler3 {
+ termHandlerFn term;
+ handleReq3Fn handleReq;
+ void * userdata;
+ size_t handleReqStackSize; /* zero = default */
+};
+
+void
+ServerAddHandler3(TServer * const serverP,
+ const struct ServerReqHandler3 * const handlerP,
+ abyss_bool * const successP);
+
+typedef struct URIHandler2 {
+ initHandlerFn init;
+ termHandlerFn term;
+ handleReq2Fn handleReq2;
+ URIHandler handleReq1; /* deprecated */
+ void * userdata;
+} URIHandler2;
+
+void
+ServerAddHandler2(TServer * const srvP,
+ URIHandler2 * const handlerP,
+ abyss_bool * const successP);
+
+abyss_bool
+ServerAddHandler(TServer * const srvP,
+ URIHandler const handler);
+
+typedef abyss_bool (*THandlerDflt) (TSession *);
+
+/* Note: 'handler' used to be URIHandler; THandlerDflt is a newer name
+ for the same type
+*/
+
+void
+ServerDefaultHandler(TServer * const srvP,
+ THandlerDflt const handler);
+
+/* ConfReadServerFile() is inappropriately named; it was a mistake.
+ But then, so is having this function at all. The config file is
+ inappropriate for an API.
+*/
+
+abyss_bool
+ConfReadServerFile(const char * const filename,
+ TServer * const srvP);
+
+void
+LogWrite(TServer * const srvP,
+ const char * const c);
+
+/****************************************************************************
+ STUFF FOR HTTP REQUEST HANDLERS TO USE
+****************************************************************************/
+
+typedef enum {
+ m_unknown, m_get, m_put, m_head, m_post, m_delete, m_trace, m_options
+} TMethod;
+
+typedef struct {
+ TMethod method;
+ const char * uri;
+ /* This is NOT the URI. It is the pathname part of the URI.
+ We really should fix that and put the pathname in another
+ member. If the URI does not contain a pathname, this is "*".
+ */
+ const char * query;
+ /* The query part of the URI (stuff after '?'). NULL if none. */
+ const char * host;
+ /* NOT the value of the host: header. Rather, the name of the
+ target host (could be part of the host: value; could be from the
+ URI). No port number. NULL if request does not specify a host
+ name.
+ */
+ const char * from;
+ const char * useragent;
+ const char * referer;
+ const char * requestline;
+ const char * user;
+ /* Requesting user (from authorization: header). NULL if
+ request doesn't specify or handler has not authenticated it.
+ */
+ xmlrpc_uint16_t port;
+ /* The port number from the URI, or default 80 if the URI doesn't
+ specify a port.
+ */
+ abyss_bool keepalive;
+} TRequestInfo;
+
+abyss_bool
+SessionRefillBuffer(TSession * const sessionP);
+
+size_t
+SessionReadDataAvail(TSession * const sessionP);
+
+void
+SessionGetReadData(TSession * const sessionP,
+ size_t const max,
+ const char ** const outStartP,
+ size_t * const outLenP);
+
+void
+SessionGetRequestInfo(TSession * const sessionP,
+ const TRequestInfo ** const requestInfoPP);
+
+void
+SessionGetChannelInfo(TSession * const sessionP,
+ void ** const channelInfoPP);
+
+void *
+SessionGetDefaultHandlerCtx(TSession * const sessionP);
+
+char *
+RequestHeaderValue(TSession * const sessionP,
+ const char * const name);
+
+abyss_bool
+ResponseAddField(TSession * const sessionP,
+ const char * const name,
+ const char * const value);
+
+void
+ResponseWriteStart(TSession * const sessionP);
+
+/* For backward compatibility: */
+#define ResponseWrite ResponseWriteStart
+
+abyss_bool
+ResponseWriteBody(TSession * const sessionP,
+ const char * const data,
+ xmlrpc_uint32_t const len);
+
+abyss_bool
+ResponseWriteEnd(TSession * const sessionP);
+
+abyss_bool
+ResponseChunked(TSession * const sessionP);
+
+xmlrpc_uint16_t
+ResponseStatusFromErrno(int const errnoArg);
+
+void
+ResponseStatus(TSession * const sessionP,
+ xmlrpc_uint16_t const code);
+
+void
+ResponseStatusErrno(TSession * const sessionP);
+
+abyss_bool
+ResponseContentType(TSession * const serverP,
+ const char * const type);
+
+abyss_bool
+ResponseContentLength(TSession * const sessionP,
+ xmlrpc_uint64_t const len);
+
+void
+ResponseError2(TSession * const sessionP,
+ const char * const explanation);
+
+void
+ResponseError(TSession * const sessionP);
+
+const char *
+MIMETypeFromExt(const char * const ext);
+
+const char *
+MIMETypeFromExt2(MIMEType * const MIMETypeP,
+ const char * const ext);
+
+const char *
+MIMETypeFromFileName2(MIMEType * const MIMETypeP,
+ const char * const fileName);
+
+const char *
+MIMETypeFromFileName(const char * const fileName);
+
+const char *
+MIMETypeGuessFromFile2(MIMEType * const MIMETypeP,
+ const char * const fileName);
+
+const char *
+MIMETypeGuessFromFile(const char * const filename);
+
+
+/****************************************************************************
+ STUFF THAT PROBABLY DOESN'T BELONG IN THIS FILE BECAUSE IT IS INTERNAL
+
+ Some day, we sort this out.
+****************************************************************************/
+
+
+#define CR '\r'
+#define LF '\n'
+#define CRLF "\r\n"
+
+/*********************************************************************
+** Paths and so on...
+*********************************************************************/
+
+#ifdef WIN32
+#define DEFAULT_ROOT "c:\\abyss"
+#define DEFAULT_DOCS DEFAULT_ROOT"\\htdocs"
+#define DEFAULT_CONF_FILE DEFAULT_ROOT"\\conf\\abyss.conf"
+#define DEFAULT_LOG_FILE DEFAULT_ROOT"\\log\\abyss.log"
+#else
+#ifdef __rtems__
+#define DEFAULT_ROOT "/abyss"
+#else
+#define DEFAULT_ROOT "/usr/local/abyss"
+#endif
+#define DEFAULT_DOCS DEFAULT_ROOT"/htdocs"
+#define DEFAULT_CONF_FILE DEFAULT_ROOT"/conf/abyss.conf"
+#define DEFAULT_LOG_FILE DEFAULT_ROOT"/log/abyss.log"
+#endif
+
+/*********************************************************************
+** Maximum number of simultaneous connections
+*********************************************************************/
+
+#define MAX_CONN 16
+
+/*********************************************************************
+** General purpose definitions
+*********************************************************************/
+
+#ifndef NULL
+#define NULL ((void *)0)
+#endif /* NULL */
+
+#ifndef TRUE
+#define TRUE 1
+#endif /* TRUE */
+
+#ifndef FALSE
+#define FALSE 0
+#endif /* FALSE */
+
+/*********************************************************************
+** Range
+*********************************************************************/
+
+abyss_bool
+RangeDecode(char * const str,
+ xmlrpc_uint64_t const filesize,
+ xmlrpc_uint64_t * const start,
+ xmlrpc_uint64_t * const end);
+
+abyss_bool DateInit(void);
+
+/*********************************************************************
+** Base64
+*********************************************************************/
+
+void
+Base64Encode(const char * const chars,
+ char * const base64);
+
+/*********************************************************************
+** Session
+*********************************************************************/
+
+abyss_bool SessionLog(TSession * const s);
+
+
+#ifdef __cplusplus
+}
+
+
+#endif
+
+/*****************************************************************************
+** Here is the copyright notice from the Abyss web server project file from
+** which this file is derived.
+**
+** Copyright (C) 2000 by Moez Mahfoudh <mmoez@bigfoot.com>.
+** 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 AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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.
+**
+******************************************************************************/
+#endif /* _ABYSS_H_ */
diff --git a/vendor/voclient/include/xmlrpc-c/abyss_unixsock.h b/vendor/voclient/include/xmlrpc-c/abyss_unixsock.h
new file mode 100644
index 00000000..023f9580
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc-c/abyss_unixsock.h
@@ -0,0 +1,42 @@
+/* This is just a sub-file for abyss.h */
+
+#include <sys/socket.h>
+
+struct abyss_unix_chaninfo {
+ size_t peerAddrLen;
+ struct sockaddr peerAddr;
+};
+
+void
+ChanSwitchUnixCreate(unsigned short const portNumber,
+ TChanSwitch ** const chanSwitchPP,
+ const char ** const errorP);
+
+void
+ChanSwitchUnixCreateFd(int const fd,
+ TChanSwitch ** const chanSwitchPP,
+ const char ** const errorP);
+
+void
+ChannelUnixCreateFd(int const fd,
+ TChannel ** const channelPP,
+ struct abyss_unix_chaninfo ** const channelInfoPP,
+ const char ** const errorP);
+
+void
+ChannelUnixGetPeerName(TChannel * const channelP,
+ struct sockaddr ** const sockaddrPP,
+ size_t * const sockaddrLenP,
+ const char ** const errorP);
+
+void
+SocketUnixCreateFd(int const fd,
+ TSocket ** const socketPP);
+
+typedef int TOsSocket;
+ /* TOsSocket is the type of a conventional socket offered by our OS.
+ This is for backward compatibility; everyone should use TChanSwitch
+ and TChannel instead today.
+ */
+
+
diff --git a/vendor/voclient/include/xmlrpc-c/abyss_winsock.h b/vendor/voclient/include/xmlrpc-c/abyss_winsock.h
new file mode 100644
index 00000000..f376446b
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc-c/abyss_winsock.h
@@ -0,0 +1,27 @@
+/* This is just a sub-file for abyss.h */
+
+#include <winsock.h>
+
+struct abyss_win_chaninfo {
+ size_t peerAddrLen;
+ struct sockaddr peerAddr;
+};
+
+
+void
+ChanSwitchWinCreate(unsigned short const portNumber,
+ TChanSwitch ** const chanSwitchPP,
+ const char ** const errorP);
+
+void
+ChanSwitchWinCreateWinsock(SOCKET const winsock,
+ TChanSwitch ** const chanSwitchPP,
+ const char ** const errorP);
+
+void
+ChannelWinCreateWinsock(SOCKET const fd,
+ TChannel ** const channelPP,
+ struct abyss_win_chaninfo ** const channelInfoPP,
+ const char ** const errorP);
+
+typedef SOCKET TOsSocket;
diff --git a/vendor/voclient/include/xmlrpc-c/base.h b/vendor/voclient/include/xmlrpc-c/base.h
new file mode 100644
index 00000000..4778f80d
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc-c/base.h
@@ -0,0 +1,757 @@
+/* Copyright and license information is at the end of the file */
+
+#ifndef XMLRPC_H_INCLUDED
+#define XMLRPC_H_INCLUDED
+
+#include <stddef.h>
+#include <stdarg.h>
+#include <time.h>
+#include <xmlrpc-c/util.h>
+#include <xmlrpc-c/config.h>
+ /* Defines XMLRPC_HAVE_WCHAR, XMLRPC_INT64, XMLRPC_HAVE_TIMEVAL */
+
+#if XMLRPC_HAVE_WCHAR
+#include <wchar.h>
+#endif
+
+#if XMLRPC_HAVE_TIMEVAL
+#include <sys/time.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/*=========================================================================
+** Version of libxmlrpc
+**=======================================================================*/
+extern unsigned int const xmlrpc_version_major;
+extern unsigned int const xmlrpc_version_minor;
+extern unsigned int const xmlrpc_version_point;
+
+/*=========================================================================
+** C types equivalent to XML-RPC types
+**=======================================================================*/
+
+/* We define names for these types, because they may change from platform
+ to platform.
+*/
+
+typedef signed int xmlrpc_int;
+ /* An integer of the type defined by XML-RPC <int>; i.e. 32 bit */
+typedef XMLRPC_INT32 xmlrpc_int32;
+ /* An integer of the type defined by XML-RPC <i4>; i.e. 32 bit */
+typedef XMLRPC_INT64 xmlrpc_int64;
+ /* An integer of the type defined by "XML-RPC" <i8>; i.e. 64 bit */
+typedef int xmlrpc_bool;
+ /* A boolean (of the type defined by XML-RPC <boolean>, but there's
+ really only one kind)
+ */
+typedef double xmlrpc_double;
+ /* A double precision floating point number as defined by
+ XML-RPC <float>. But the C "double" type is universally the same,
+ so it's probably clearer just to use that. This typedef is here
+ for mathematical completeness.
+ */
+
+/* xmlrpc_socket is just for backward compatibility, in case someone decided
+ to use this in user code. New code should use the native type for a
+ socket (e.g. int or SOCKET). (We stopped using this because for winsock
+ users, we would have to #include <winsock.h> in every file that
+ #includes <xmlrpc-c/base.h> and we don't want that).
+*/
+typedef int xmlrpc_socket;
+
+#define XMLRPC_INT32_MAX 0x7fffffff
+#define XMLRPC_INT32_MIN (-XMLRPC_INT32_MAX - 1)
+
+#define XMLRPC_INT64_MAX 0x7fffffffffffffffll
+#define XMLRPC_INT64_MIN (-XMLRPC_INT64_MAX - 1)
+
+
+/*=========================================================================
+** xmlrpc_value
+**=========================================================================
+** An XML-RPC value (of any type).
+*/
+
+typedef enum {
+ XMLRPC_TYPE_INT = 0,
+ XMLRPC_TYPE_BOOL = 1,
+ XMLRPC_TYPE_DOUBLE = 2,
+ XMLRPC_TYPE_DATETIME = 3,
+ XMLRPC_TYPE_STRING = 4,
+ XMLRPC_TYPE_BASE64 = 5,
+ XMLRPC_TYPE_ARRAY = 6,
+ XMLRPC_TYPE_STRUCT = 7,
+ XMLRPC_TYPE_C_PTR = 8,
+ XMLRPC_TYPE_NIL = 9,
+ XMLRPC_TYPE_I8 = 10,
+ XMLRPC_TYPE_DEAD = 0xDEAD
+} xmlrpc_type;
+
+#define XMLRPC_HAVE_I8 1
+
+/* These are *always* allocated on the heap. No exceptions. */
+typedef struct _xmlrpc_value xmlrpc_value;
+
+const char *
+xmlrpc_type_name(xmlrpc_type const type);
+
+void
+xmlrpc_abort_if_array_bad(xmlrpc_value * const arrayP);
+
+#define XMLRPC_ASSERT_ARRAY_OK(val) \
+ xmlrpc_abort_if_array_bad(val)
+
+/* Increment the reference count of an xmlrpc_value. */
+extern void xmlrpc_INCREF (xmlrpc_value* const value);
+
+/* Decrement the reference count of an xmlrpc_value. If there
+** are no more references, free it. */
+extern void xmlrpc_DECREF (xmlrpc_value* const value);
+
+/* Get the type of an XML-RPC value. */
+extern xmlrpc_type xmlrpc_value_type (xmlrpc_value* const value);
+
+xmlrpc_value *
+xmlrpc_int_new(xmlrpc_env * const envP,
+ int const intValue);
+
+xmlrpc_value *
+xmlrpc_i8_new(xmlrpc_env * const envP,
+ xmlrpc_int64 const value);
+
+void
+xmlrpc_read_int(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+ int * const intValueP);
+
+xmlrpc_value *
+xmlrpc_bool_new(xmlrpc_env * const envP,
+ xmlrpc_bool const boolValue);
+
+void
+xmlrpc_read_bool(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+ xmlrpc_bool * const boolValueP);
+
+xmlrpc_value *
+xmlrpc_double_new(xmlrpc_env * const envP,
+ double const doubleValue);
+
+void
+xmlrpc_read_double(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+ xmlrpc_double * const doubleValueP);
+
+xmlrpc_value *
+xmlrpc_datetime_new_str(xmlrpc_env * const envP,
+ const char * const value);
+
+xmlrpc_value *
+xmlrpc_datetime_new_sec(xmlrpc_env * const envP,
+ time_t const value);
+
+xmlrpc_value*
+xmlrpc_datetime_new_usec(xmlrpc_env * const envP,
+ time_t const secs,
+ unsigned int const usecs);
+
+#if XMLRPC_HAVE_TIMEVAL
+xmlrpc_value *
+xmlrpc_datetime_new_timeval(xmlrpc_env * const envP,
+ struct timeval const value);
+#endif
+
+#if XMLRPC_HAVE_TIMESPEC
+xmlrpc_value *
+xmlrpc_datetime_new_timespec(xmlrpc_env * const envP,
+ struct timespec const value);
+#endif
+
+void
+xmlrpc_read_datetime_str(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+ const char ** const stringValueP);
+
+void
+xmlrpc_read_datetime_sec(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+ time_t * const timeValueP);
+
+void
+xmlrpc_read_datetime_usec(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+ time_t * const secsP,
+ unsigned int * const usecsP);
+
+#if XMLRPC_HAVE_TIMEVAL
+void
+xmlrpc_read_datetime_timeval(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+ struct timeval * const timeValueP);
+#endif
+
+#if XMLRPC_HAVE_TIMESPEC
+void
+xmlrpc_read_datetime_timespec(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+ struct timespec * const timeValueP);
+#endif
+
+xmlrpc_value *
+xmlrpc_string_new(xmlrpc_env * const envP,
+ const char * const stringValue);
+
+xmlrpc_value *
+xmlrpc_string_new_lp(xmlrpc_env * const envP,
+ size_t const length,
+ const char * const stringValue);
+
+xmlrpc_value *
+xmlrpc_string_new_va(xmlrpc_env * const envP,
+ const char * const format,
+ va_list args);
+
+xmlrpc_value *
+xmlrpc_string_new_f(xmlrpc_env * const envP,
+ const char * const format,
+ ...);
+
+xmlrpc_value *
+xmlrpc_string_new_lp_cr(xmlrpc_env * const envP,
+ size_t const length,
+ const char * const value);
+
+xmlrpc_value *
+xmlrpc_string_new_cr(xmlrpc_env * const envP,
+ const char * const value);
+
+void
+xmlrpc_read_string(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+ const char ** const stringValueP);
+
+
+void
+xmlrpc_read_string_crlf(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+ const char ** const stringValueP);
+
+void
+xmlrpc_read_string_lp_crlf(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+ size_t * const lengthP,
+ const char ** const stringValueP);
+
+void
+xmlrpc_read_string_lp(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+ size_t * const lengthP,
+ const char ** const stringValueP);
+
+#if XMLRPC_HAVE_WCHAR
+xmlrpc_value *
+xmlrpc_string_w_new(xmlrpc_env * const envP,
+ const wchar_t * const stringValue);
+
+xmlrpc_value *
+xmlrpc_string_w_new_lp(xmlrpc_env * const envP,
+ size_t const length,
+ const wchar_t * const stringValue);
+
+void
+xmlrpc_read_string_w(xmlrpc_env * const envP,
+ xmlrpc_value * const valueP,
+ const wchar_t ** const stringValueP);
+
+void
+xmlrpc_read_string_w_crlf(xmlrpc_env * const envP,
+ xmlrpc_value * const valueP,
+ const wchar_t ** const stringValueP);
+
+void
+xmlrpc_read_string_w_lp(xmlrpc_env * const envP,
+ xmlrpc_value * const valueP,
+ size_t * const lengthP,
+ const wchar_t ** const stringValueP);
+
+void
+xmlrpc_read_string_w_lp_crlf(xmlrpc_env * const envP,
+ xmlrpc_value * const valueP,
+ size_t * const lengthP,
+ const wchar_t ** const stringValueP);
+
+xmlrpc_value *
+xmlrpc_string_w_new_lp_cr(xmlrpc_env * const envP,
+ size_t const length,
+ const wchar_t * const value);
+
+xmlrpc_value *
+xmlrpc_string_w_new_cr(xmlrpc_env * const envP,
+ const wchar_t * const value);
+
+#endif /* XMLRPC_HAVE_WCHAR */
+
+xmlrpc_value *
+xmlrpc_base64_new(xmlrpc_env * const envP,
+ size_t const length,
+ const unsigned char * const value);
+
+void
+xmlrpc_read_base64(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+ size_t * const lengthP,
+ const unsigned char ** const bytestringValueP);
+
+void
+xmlrpc_read_base64_size(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+ size_t * const lengthP);
+
+xmlrpc_value *
+xmlrpc_array_new(xmlrpc_env * const envP);
+
+/* Return the number of elements in an XML-RPC array.
+** Sets XMLRPC_TYPE_ERROR if 'array' is not an array. */
+int
+xmlrpc_array_size(xmlrpc_env * const env,
+ const xmlrpc_value * const array);
+
+/* Append an item to an XML-RPC array.
+** Sets XMLRPC_TYPE_ERROR if 'array' is not an array. */
+extern void
+xmlrpc_array_append_item (xmlrpc_env * const envP,
+ xmlrpc_value * const arrayP,
+ xmlrpc_value * const valueP);
+
+void
+xmlrpc_array_read_item(xmlrpc_env * const envP,
+ const xmlrpc_value * const arrayP,
+ unsigned int const index,
+ xmlrpc_value ** const valuePP);
+
+/* Deprecated. Use xmlrpc_array_read_item() instead.
+
+ Get an item from an XML-RPC array.
+ Does not increment the reference count of the returned value.
+ Sets XMLRPC_TYPE_ERROR if 'array' is not an array.
+ Sets XMLRPC_INDEX_ERROR if 'index' is out of bounds.
+*/
+xmlrpc_value *
+xmlrpc_array_get_item(xmlrpc_env * const envP,
+ const xmlrpc_value * const arrayP,
+ int const index);
+
+/* Not implemented--we don't need it yet.
+extern
+int xmlrpc_array_set_item (xmlrpc_env* env,
+xmlrpc_value* array,
+int index,
+ xmlrpc_value* value);
+*/
+
+xmlrpc_value *
+xmlrpc_struct_new(xmlrpc_env * const env);
+
+/* Return the number of key/value pairs in a struct.
+** Sets XMLRPC_TYPE_ERROR if 'strct' is not a struct. */
+int
+xmlrpc_struct_size (xmlrpc_env * env,
+ xmlrpc_value * strct);
+
+/* Returns true iff 'strct' contains 'key'.
+** Sets XMLRPC_TYPE_ERROR if 'strct' is not a struct. */
+int
+xmlrpc_struct_has_key(xmlrpc_env * const envP,
+ xmlrpc_value * const strctP,
+ const char * const key);
+
+/* The same as the above, but the key may contain zero bytes.
+ Deprecated. xmlrpc_struct_get_value_v() is more general, and this
+ case is not common enough to warrant a shortcut.
+*/
+int
+xmlrpc_struct_has_key_n(xmlrpc_env * const envP,
+ xmlrpc_value * const strctP,
+ const char * const key,
+ size_t const key_len);
+
+#if 0
+/* Not implemented yet, but needed for completeness. */
+int
+xmlrpc_struct_has_key_v(xmlrpc_env * env,
+ xmlrpc_value * strct,
+ xmlrpc_value * const keyval);
+#endif
+
+
+void
+xmlrpc_struct_find_value(xmlrpc_env * const envP,
+ xmlrpc_value * const structP,
+ const char * const key,
+ xmlrpc_value ** const valuePP);
+
+
+void
+xmlrpc_struct_find_value_v(xmlrpc_env * const envP,
+ xmlrpc_value * const structP,
+ xmlrpc_value * const keyP,
+ xmlrpc_value ** const valuePP);
+
+void
+xmlrpc_struct_read_value(xmlrpc_env * const envP,
+ xmlrpc_value * const structP,
+ const char * const key,
+ xmlrpc_value ** const valuePP);
+
+void
+xmlrpc_struct_read_value_v(xmlrpc_env * const envP,
+ xmlrpc_value * const structP,
+ xmlrpc_value * const keyP,
+ xmlrpc_value ** const valuePP);
+
+/* The "get_value" functions are deprecated. Use the "find_value"
+ and "read_value" functions instead.
+*/
+xmlrpc_value *
+xmlrpc_struct_get_value(xmlrpc_env * const envP,
+ xmlrpc_value * const strctP,
+ const char * const key);
+
+/* The same as above, but the key may contain zero bytes.
+ Deprecated. xmlrpc_struct_get_value_v() is more general, and this
+ case is not common enough to warrant a shortcut.
+*/
+xmlrpc_value *
+xmlrpc_struct_get_value_n(xmlrpc_env * const envP,
+ xmlrpc_value * const strctP,
+ const char * const key,
+ size_t const key_len);
+
+/* Set the value associated with 'key' in 'strct' to 'value'.
+ Sets XMLRPC_TYPE_ERROR if 'strct' is not a struct.
+*/
+void
+xmlrpc_struct_set_value(xmlrpc_env * const env,
+ xmlrpc_value * const strct,
+ const char * const key,
+ xmlrpc_value * const value);
+
+/* The same as above, but the key may contain zero bytes. Deprecated.
+ The general way to set a structure value is xmlrpc_struct_set_value_v(),
+ and this case is not common enough to deserve a shortcut.
+*/
+void
+xmlrpc_struct_set_value_n(xmlrpc_env * const env,
+ xmlrpc_value * const strct,
+ const char * const key,
+ size_t const key_len,
+ xmlrpc_value * const value);
+
+/* The same as above, but the key must be an XML-RPC string.
+** Fails with XMLRPC_TYPE_ERROR if 'keyval' is not a string. */
+void
+xmlrpc_struct_set_value_v(xmlrpc_env * const env,
+ xmlrpc_value * const strct,
+ xmlrpc_value * const keyval,
+ xmlrpc_value * const value);
+
+/* Given a zero-based index, return the matching key and value. This
+** is normally used in conjunction with xmlrpc_struct_size.
+** Fails with XMLRPC_TYPE_ERROR if 'struct' is not a struct.
+** Fails with XMLRPC_INDEX_ERROR if 'index' is out of bounds. */
+
+void
+xmlrpc_struct_read_member(xmlrpc_env * const envP,
+ xmlrpc_value * const structP,
+ unsigned int const index,
+ xmlrpc_value ** const keyvalP,
+ xmlrpc_value ** const valueP);
+
+/* The same as above, but does not increment the reference count of the
+ two values it returns, and return NULL for both if it fails, and
+ takes a signed integer for the index (but fails if it is negative).
+
+ Deprecated. Use xmlrpc_struct_read_member() instead.
+*/
+void
+xmlrpc_struct_get_key_and_value(xmlrpc_env * const env,
+ xmlrpc_value * const strct,
+ int const index,
+ xmlrpc_value ** const out_keyval,
+ xmlrpc_value ** const out_value);
+
+void
+xmlrpc_read_cptr(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+ void ** const ptrValueP);
+
+void
+xmlrpc_read_nil(xmlrpc_env * const envP,
+ xmlrpc_value * const valueP);
+
+
+void
+xmlrpc_read_i8(xmlrpc_env * const envP,
+ const xmlrpc_value * const valueP,
+ xmlrpc_int64 * const intValueP);
+
+
+xmlrpc_value *
+xmlrpc_cptr_new(xmlrpc_env * const envP,
+ void * const value);
+
+xmlrpc_value *
+xmlrpc_nil_new(xmlrpc_env * const envP);
+
+
+/* Build an xmlrpc_value from a format string. */
+
+xmlrpc_value *
+xmlrpc_build_value(xmlrpc_env * const env,
+ const char * const format,
+ ...);
+
+/* The same as the above, but using a va_list and more general */
+void
+xmlrpc_build_value_va(xmlrpc_env * const env,
+ const char * const format,
+ va_list const args,
+ xmlrpc_value ** const valPP,
+ const char ** const tailP);
+
+void
+xmlrpc_decompose_value(xmlrpc_env * const envP,
+ xmlrpc_value * const value,
+ const char * const format,
+ ...);
+
+void
+xmlrpc_decompose_value_va(xmlrpc_env * const envP,
+ xmlrpc_value * const value,
+ const char * const format,
+ va_list const args);
+
+/* xmlrpc_parse_value... is the same as xmlrpc_decompose_value... except
+ that it doesn't do proper memory management -- it returns xmlrpc_value's
+ without incrementing the reference count and returns pointers to data
+ inside an xmlrpc_value structure.
+
+ These are deprecated. Use xmlrpc_decompose_value... instead.
+*/
+void
+xmlrpc_parse_value(xmlrpc_env * const envP,
+ xmlrpc_value * const value,
+ const char * const format,
+ ...);
+
+/* The same as the above, but using a va_list. */
+void
+xmlrpc_parse_value_va(xmlrpc_env * const envP,
+ xmlrpc_value * const value,
+ const char * const format,
+ va_list const args);
+
+/*=========================================================================
+** Encoding XML
+**=======================================================================*/
+
+typedef enum xmlrpc_dialect {
+ xmlrpc_dialect_i8,
+ xmlrpc_dialect_apache
+} xmlrpc_dialect;
+
+void
+xmlrpc_serialize_value2(xmlrpc_env * const envP,
+ xmlrpc_mem_block * const outputP,
+ xmlrpc_value * const valueP,
+ xmlrpc_dialect const dialect);
+
+void
+xmlrpc_serialize_value(xmlrpc_env * const envP,
+ xmlrpc_mem_block * const outputP,
+ xmlrpc_value * const valueP);
+
+void
+xmlrpc_serialize_params2(xmlrpc_env * const envP,
+ xmlrpc_mem_block * const outputP,
+ xmlrpc_value * const paramArrayP,
+ xmlrpc_dialect const dialect);
+
+void
+xmlrpc_serialize_params(xmlrpc_env * const envP,
+ xmlrpc_mem_block * const outputP,
+ xmlrpc_value * const paramArrayP);
+
+void
+xmlrpc_serialize_call2(xmlrpc_env * const envP,
+ xmlrpc_mem_block * const outputP,
+ const char * const methodName,
+ xmlrpc_value * const paramArrayP,
+ xmlrpc_dialect const dialect);
+
+void
+xmlrpc_serialize_call(xmlrpc_env * const envP,
+ xmlrpc_mem_block * const outputP,
+ const char * const methodName,
+ xmlrpc_value * const paramArrayP);
+
+void
+xmlrpc_serialize_response2(xmlrpc_env * const envP,
+ xmlrpc_mem_block * const outputP,
+ xmlrpc_value * const valueP,
+ xmlrpc_dialect const dialect);
+
+void
+xmlrpc_serialize_response(xmlrpc_env * const envP,
+ xmlrpc_mem_block * const outputP,
+ xmlrpc_value * const valueP);
+
+void
+xmlrpc_serialize_fault(xmlrpc_env * const envP,
+ xmlrpc_mem_block * const outputP,
+ const xmlrpc_env * const faultP);
+
+
+/*=========================================================================
+** Decoding XML
+**=======================================================================*/
+
+/* Parse an XML-RPC call. If an error occurs, set a fault and set
+** the output variables to NULL.
+** The caller is responsible for calling free(*out_method_name) and
+** xmlrpc_DECREF(*out_param_array). */
+void
+xmlrpc_parse_call(xmlrpc_env * const envP,
+ const char * const xml_data,
+ size_t const xml_len,
+ const char ** const out_method_name,
+ xmlrpc_value ** const out_param_array);
+
+void
+xmlrpc_parse_response2(xmlrpc_env * const envP,
+ const char * const xmlData,
+ size_t const xmlDataLen,
+ xmlrpc_value ** const resultPP,
+ int * const faultCodeP,
+ const char ** const faultStringP);
+
+
+/* xmlrpc_parse_response() is for backward compatibility */
+
+xmlrpc_value *
+xmlrpc_parse_response(xmlrpc_env * const envP,
+ const char * const xmlData,
+ size_t const xmlDataLen);
+
+
+/*=========================================================================
+** XML-RPC Base64 Utilities
+**=========================================================================
+** Here are some lightweight utilities which can be used to encode and
+** decode Base64 data. These are exported mainly for testing purposes.
+*/
+
+/* This routine inserts newlines every 76 characters, as required by the
+** Base64 specification. */
+xmlrpc_mem_block *
+xmlrpc_base64_encode(xmlrpc_env * env,
+ unsigned char * bin_data,
+ size_t bin_len);
+
+/* This routine encodes everything in one line. This is needed for HTTP
+** authentication and similar tasks. */
+xmlrpc_mem_block *
+xmlrpc_base64_encode_without_newlines(xmlrpc_env * env,
+ unsigned char * bin_data,
+ size_t bin_len);
+
+/* This decodes Base64 data with or without newlines. */
+extern xmlrpc_mem_block *
+xmlrpc_base64_decode(xmlrpc_env * const envP,
+ const char * const ascii_data,
+ size_t const ascii_len);
+
+
+/*=========================================================================
+** Authorization Cookie Handling
+**=========================================================================
+** Routines to get and set values for authorizing via authorization
+** cookies. Both the client and server use HTTP_COOKIE_AUTH to store
+** the representation of the authorization value, which is actually
+** just a base64 hash of username:password. (This entire method is
+** a cookie replacement of basic authentication.)
+**/
+
+extern void xmlrpc_authcookie_set(xmlrpc_env * const env,
+ const char * const username,
+ const char * const password);
+
+char *xmlrpc_authcookie(void);
+
+/*=========================================================================
+ Resource Limits
+
+ Ideally, there would be enough resource limits to ensure that
+ XML-RPC partners cannot cause libxmlrpc objects and routines to use
+ more resource than is available for them (either by accident or
+ malice). We have a long way to go to get there.
+
+=========================================================================*/
+/* These functions are _not_ re-entrant and the limits are per-process
+ (i.e. their values live in static global variables).
+*/
+
+/* Limit IDs. There will be more of these as time goes on. */
+#define XMLRPC_NESTING_LIMIT_ID (0)
+#define XMLRPC_XML_SIZE_LIMIT_ID (1)
+#define XMLRPC_LAST_LIMIT_ID (XMLRPC_XML_SIZE_LIMIT_ID)
+
+/* By default, deserialized data may be no more than 64 levels deep. */
+#define XMLRPC_NESTING_LIMIT_DEFAULT (64)
+
+/* By default, XML data from the network may be no larger than 512K.
+** Some client and server modules may fail to enforce this properly. */
+#define XMLRPC_XML_SIZE_LIMIT_DEFAULT (512*1024)
+
+/* Set a specific limit to the specified value. */
+extern void xmlrpc_limit_set (int const limit_id, size_t const value);
+
+/* Get the value of a specified limit. */
+extern size_t xmlrpc_limit_get (int const limit_id);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Copyright (C) 2001 by First Peer, Inc. 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 AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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. */
+
+#endif
+
diff --git a/vendor/voclient/include/xmlrpc-c/base.hpp b/vendor/voclient/include/xmlrpc-c/base.hpp
new file mode 100644
index 00000000..3eaa25ce
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc-c/base.hpp
@@ -0,0 +1,354 @@
+#ifndef XMLRPC_BASE_HPP_INCLUDED
+#define XMLRPC_BASE_HPP_INCLUDED
+
+#include <xmlrpc-c/config.h>
+
+#include <climits>
+#include <cfloat>
+#include <ctime>
+#include <vector>
+#include <map>
+#include <string>
+#if XMLRPC_HAVE_TIMEVAL
+#include <sys/time.h>
+#endif
+
+#include <xmlrpc-c/base.h>
+
+namespace xmlrpc_c {
+
+
+class value {
+ // This is a handle. You don't want to create a pointer to this;
+ // it is in fact a pointer itself.
+public:
+ value();
+ // This creates a placeholder. It can't be used for anything, but
+ // holds memory. instantiate() can turn it into a real object.
+
+ value(xmlrpc_c::value const &value); // copy constructor
+
+ ~value();
+
+ enum type_t {
+ TYPE_INT = 0,
+ TYPE_BOOLEAN = 1,
+ TYPE_DOUBLE = 2,
+ TYPE_DATETIME = 3,
+ TYPE_STRING = 4,
+ TYPE_BYTESTRING = 5,
+ TYPE_ARRAY = 6,
+ TYPE_STRUCT = 7,
+ TYPE_C_PTR = 8,
+ TYPE_NIL = 9,
+ TYPE_I8 = 10,
+ TYPE_DEAD = 0xDEAD
+ };
+
+ type_t type() const;
+
+ xmlrpc_c::value&
+ operator=(xmlrpc_c::value const&);
+
+ bool
+ isInstantiated() const;
+
+ // The following are not meant to be public to users, but just to
+ // other Xmlrpc-c library modules. If we ever go to a pure C++
+ // implementation, not based on C xmlrpc_value objects, this shouldn't
+ // be necessary.
+
+ void
+ appendToCArray(xmlrpc_value * const arrayP) const;
+
+ void
+ addToCStruct(xmlrpc_value * const structP,
+ std::string const key) const;
+
+ xmlrpc_value *
+ cValue() const;
+
+ value(xmlrpc_value * const valueP);
+
+ void
+ instantiate(xmlrpc_value * const valueP);
+ // Works only on a placeholder object created by the no-argument
+ // constructor.
+
+ xmlrpc_value * cValueP;
+ // NULL means this is merely a placeholder object.
+};
+
+
+
+class value_int : public value {
+public:
+ value_int(int const cvalue);
+
+ value_int(xmlrpc_c::value const baseValue);
+
+ operator int() const;
+};
+
+
+
+class value_boolean : public value {
+public:
+ value_boolean(bool const cvalue);
+
+ value_boolean(xmlrpc_c::value const baseValue);
+
+ operator bool() const;
+};
+
+
+
+class value_string : public value {
+public:
+ enum nlCode {nlCode_all, nlCode_lf};
+
+ value_string(std::string const& cppvalue,
+ nlCode const nlCode);
+
+ value_string(std::string const& cppvalue);
+
+ value_string(xmlrpc_c::value const baseValue);
+
+ std::string
+ crlfValue() const;
+
+ operator std::string() const;
+};
+
+
+
+class value_double : public value {
+public:
+ value_double(double const cvalue);
+
+ value_double(xmlrpc_c::value const baseValue);
+
+ operator double() const;
+};
+
+
+
+class value_datetime : public value {
+public:
+ value_datetime(std::string const cvalue);
+ value_datetime(time_t const cvalue);
+#if XMLRPC_HAVE_TIMEVAL
+ value_datetime(struct timeval const& cvalue);
+ operator timeval() const;
+#endif
+#if XMLRPC_HAVE_TIMESPEC
+ value_datetime(struct timespec const& cvalue);
+ operator timespec() const;
+#endif
+
+ value_datetime(xmlrpc_c::value const baseValue);
+
+ operator time_t() const;
+};
+
+
+
+class value_bytestring : public value {
+public:
+ value_bytestring(std::vector<unsigned char> const& cvalue);
+
+ value_bytestring(xmlrpc_c::value const baseValue);
+
+ // You can't cast to a vector because the compiler can't tell which
+ // constructor to use (complains about ambiguity). So we have this:
+ std::vector<unsigned char>
+ vectorUcharValue() const;
+
+ size_t
+ length() const;
+};
+
+
+
+class value_struct : public value {
+public:
+ value_struct(std::map<std::string, xmlrpc_c::value> const& cvalue);
+
+ value_struct(xmlrpc_c::value const baseValue);
+
+ operator std::map<std::string, xmlrpc_c::value>() const;
+};
+
+
+
+class value_array : public value {
+public:
+ value_array(std::vector<xmlrpc_c::value> const& cvalue);
+
+ value_array(xmlrpc_c::value const baseValue);
+
+ std::vector<xmlrpc_c::value>
+ vectorValueValue() const;
+
+ size_t
+ size() const;
+};
+
+
+
+class value_nil : public value {
+public:
+ value_nil();
+
+ value_nil(xmlrpc_c::value const baseValue);
+};
+
+
+
+class value_i8 : public value {
+public:
+ value_i8(xmlrpc_int64 const cvalue);
+
+ value_i8(xmlrpc_c::value const baseValue);
+
+ operator xmlrpc_int64() const;
+};
+
+
+
+class fault {
+/*----------------------------------------------------------------------------
+ This is an XML-RPC fault.
+
+ This object is not intended to be used to represent a fault in the
+ execution of XML-RPC client/server software -- just a fault in an
+ XML-RPC RPC as described by the XML-RPC spec.
+
+ There is no way to represent "no fault" with this object. The object is
+ meaningful only in the context of some fault.
+-----------------------------------------------------------------------------*/
+public:
+ enum code_t {
+ CODE_UNSPECIFIED = 0,
+ CODE_INTERNAL = -500,
+ CODE_TYPE = -501,
+ CODE_INDEX = -502,
+ CODE_PARSE = -503,
+ CODE_NETWORK = -504,
+ CODE_TIMEOUT = -505,
+ CODE_NO_SUCH_METHOD = -506,
+ CODE_REQUEST_REFUSED = -507,
+ CODE_INTROSPECTION_DISABLED = -508,
+ CODE_LIMIT_EXCEEDED = -509,
+ CODE_INVALID_UTF8 = -510
+ };
+
+ fault();
+
+ fault(std::string const _faultString,
+ xmlrpc_c::fault::code_t const _faultCode
+ = xmlrpc_c::fault::CODE_UNSPECIFIED
+ );
+
+ xmlrpc_c::fault::code_t getCode() const;
+
+ std::string getDescription() const;
+
+private:
+ bool valid;
+ xmlrpc_c::fault::code_t code;
+ std::string description;
+};
+
+class rpcOutcome {
+/*----------------------------------------------------------------------------
+ The outcome of a validly executed RPC -- either an XML-RPC fault
+ or an XML-RPC value of the result.
+-----------------------------------------------------------------------------*/
+public:
+ rpcOutcome();
+ rpcOutcome(xmlrpc_c::value const result);
+ rpcOutcome(xmlrpc_c::fault const fault);
+ bool succeeded() const;
+ xmlrpc_c::fault getFault() const;
+ xmlrpc_c::value getResult() const;
+private:
+ bool valid;
+ // This is false in a placeholder variable -- i.e. an object you
+ // create with the no-argument constructor, which is waiting to be
+ // assigned a value. When false, nothing below is valid.
+ bool _succeeded;
+ xmlrpc_c::value result; // valid if 'succeeded'
+ xmlrpc_c::fault fault; // valid if not 'succeeded'
+};
+
+class paramList {
+/*----------------------------------------------------------------------------
+ A parameter list of an XML-RPC call.
+-----------------------------------------------------------------------------*/
+public:
+ paramList(unsigned int const paramCount = 0);
+
+ paramList&
+ add(xmlrpc_c::value const param);
+
+ paramList&
+ addx(xmlrpc_c::value const param);
+
+ unsigned int
+ size() const;
+
+ xmlrpc_c::value operator[](unsigned int const subscript) const;
+
+ int
+ getInt(unsigned int const paramNumber,
+ int const minimum = INT_MIN,
+ int const maximum = INT_MAX) const;
+
+ bool
+ getBoolean(unsigned int const paramNumber) const;
+
+ double
+ getDouble(unsigned int const paramNumber,
+ double const minimum = -DBL_MAX,
+ double const maximum = DBL_MAX) const;
+
+ enum timeConstraint {TC_ANY, TC_NO_PAST, TC_NO_FUTURE};
+
+ time_t
+ getDatetime_sec(unsigned int const paramNumber,
+ timeConstraint const constraint
+ = paramList::TC_ANY) const;
+
+ std::string
+ getString(unsigned int const paramNumber) const;
+
+ std::vector<unsigned char>
+ getBytestring(unsigned int const paramNumber) const;
+
+ std::vector<xmlrpc_c::value>
+ getArray(unsigned int const paramNumber,
+ unsigned int const minSize = 0,
+ unsigned int const maxSize = UINT_MAX) const;
+
+ std::map<std::string, xmlrpc_c::value>
+ getStruct(unsigned int const paramNumber) const;
+
+ void
+ getNil(unsigned int const paramNumber) const;
+
+ xmlrpc_int64
+ getI8(unsigned int const paramNumber,
+ xmlrpc_int64 const minimum = XMLRPC_INT64_MIN,
+ xmlrpc_int64 const maximum = XMLRPC_INT64_MAX) const;
+
+ void
+ verifyEnd(unsigned int const paramNumber) const;
+
+private:
+ std::vector<xmlrpc_c::value> paramVector;
+};
+
+} // namespace
+
+#endif
diff --git a/vendor/voclient/include/xmlrpc-c/c_util.h b/vendor/voclient/include/xmlrpc-c/c_util.h
new file mode 100644
index 00000000..a1ede08a
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc-c/c_util.h
@@ -0,0 +1,20 @@
+#ifndef XMLRPC_C_C_UTIL_H_INCLUDED
+#define XMLRPC_C_C_UTIL_H_INCLUDED
+
+/* C language stuff. Doesn't involve any libraries that aren't part of
+ the compiler.
+*/
+
+#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
+
+/* GNU_PRINTF_ATTR lets the GNU compiler check printf-type
+ calls to be sure the arguments match the format string, thus preventing
+ runtime segmentation faults and incorrect messages.
+*/
+#ifdef __GNUC__
+#define GNU_PRINTF_ATTR(a,b) __attribute__ ((format (printf, a, b)))
+#else
+#define GNU_PRINTF_ATTR(a,b)
+#endif
+
+#endif
diff --git a/vendor/voclient/include/xmlrpc-c/client.h b/vendor/voclient/include/xmlrpc-c/client.h
new file mode 100644
index 00000000..c2e2e619
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc-c/client.h
@@ -0,0 +1,316 @@
+/*============================================================================
+ xmlrpc_client.h
+==============================================================================
+ This header file defines the interface between xmlrpc.c and its users,
+ related to clients.
+
+ Copyright information is at the end of the file.
+============================================================================*/
+
+#ifndef XMLRPC_CLIENT_H_INCLUDED
+#define XMLRPC_CLIENT_H_INCLUDED
+
+#include <xmlrpc-c/base.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+struct xmlrpc_client;
+struct xmlrpc_client_transport;
+struct xmlrpc_client_transport_ops;
+#ifndef __cplusplus
+typedef struct xmlrpc_client xmlrpc_client;
+typedef struct xmlrpc_client_transport xmlrpc_client_transport;
+typedef struct xmlrpc_client_transport_ops xmlrpc_client_transport_ops;
+#endif
+
+/* libxmlrpc_client typically does _not_ actually include all of the
+ XML transports declared here by xmlrpc_*_transport_ops.
+
+ Use 'xmlrpc-c-config --features' to determine which features are
+ installed.
+*/
+
+/* Before Xmlrpc-c 1.13 (December 2007), we declared struct
+ xmlrpc_xportparms, as a sort of "base class." The struct was never
+ complete -- you just cast pointer to it it to pointers to other
+ types. It turned out not to be really helpful and casts are ugly,
+ so now we just use void * as a base class pointer.
+*/
+
+extern struct xmlrpc_client_transport_ops xmlrpc_libwww_transport_ops;
+extern struct xmlrpc_client_transport_ops xmlrpc_wininet_transport_ops;
+extern struct xmlrpc_client_transport_ops xmlrpc_curl_transport_ops;
+
+enum xmlrpc_sslversion {
+ XMLRPC_SSLVERSION_DEFAULT,
+ XMLRPC_SSLVERSION_TLSv1,
+ XMLRPC_SSLVERSION_SSLv2,
+ XMLRPC_SSLVERSION_SSLv3
+};
+
+struct xmlrpc_curl_xportparms {
+ /* This is designed so that zero values are always the defaults. */
+ const char * network_interface;
+ xmlrpc_bool no_ssl_verifypeer;
+ xmlrpc_bool no_ssl_verifyhost;
+ const char * user_agent;
+ const char * ssl_cert;
+ const char * sslcerttype;
+ const char * sslcertpasswd;
+ const char * sslkey;
+ const char * sslkeytype;
+ const char * sslkeypasswd;
+ const char * sslengine;
+ xmlrpc_bool sslengine_default;
+ enum xmlrpc_sslversion sslversion;
+ const char * cainfo;
+ const char * capath;
+ const char * randomfile;
+ const char * egdsocket;
+ const char * ssl_cipher_list;
+ unsigned int timeout;
+};
+
+
+#define XMLRPC_CXPSIZE(mbrname) \
+ XMLRPC_STRUCTSIZE(struct xmlrpc_curl_xportparms, mbrname)
+
+/* XMLRPC_CXPSIZE(xyz) is analogous to XMLRPC_CPSIZE, below */
+
+struct xmlrpc_wininet_xportparms {
+ int allowInvalidSSLCerts;
+};
+
+#define XMLRPC_WXPSIZE(mbrname) \
+ XMLRPC_STRUCTSIZE(struct xmlrpc_wininet_xportparms, mbrname)
+
+/* XMLRPC_WXPSIZE(xyz) is analogous to XMLRPC_CPSIZE, below */
+
+struct xmlrpc_clientparms {
+ /* (transport, transportparmsP, transportparm_size) and
+ (transportOpsP, transportP) are mutually exclusive.
+ */
+ const char * transport;
+ const void * transportparmsP;
+ /* This should be type "const struct ..._xportparms *" */
+ size_t transportparm_size;
+
+ const struct xmlrpc_client_transport_ops * transportOpsP;
+ xmlrpc_client_transport * transportP;
+ xmlrpc_dialect dialect;
+};
+
+#define XMLRPC_CPSIZE(mbrname) \
+ XMLRPC_STRUCTSIZE(struct xmlrpc_clientparms, mbrname)
+
+/* XMLRPC_CPSIZE(xyz) is the minimum size a struct xmlrpc_clientparms
+ must be to include the 'xyz' member. This is essential to forward and
+ backward compatbility, as new members will be added to the end of the
+ struct in future releases. This is how the callee knows whether or
+ not the caller is new enough to have supplied a certain parameter.
+*/
+
+const char *
+xmlrpc_client_get_default_transport(xmlrpc_env * const env);
+
+/* A callback function to handle the response to an asynchronous call.
+** If 'fault->fault_occurred' is true, then response will be NULL. All
+** arguments except 'user_data' will be deallocated internally; please do
+** not free any of them yourself.
+** WARNING: param_array may (or may not) be NULL if fault->fault_occurred
+** is true, and you set up the call using xmlrpc_client_call_asynch.
+** WARNING: If asynchronous calls are still pending when the library is
+** shut down, your handler may (or may not) be called with a fault. */
+typedef void (*xmlrpc_response_handler) (const char *server_url,
+ const char *method_name,
+ xmlrpc_value *param_array,
+ void *user_data,
+ xmlrpc_env *fault,
+ xmlrpc_value *result);
+
+
+/*=========================================================================
+ xmlrpc_server_info
+===========================================================================
+ We normally refer to servers by URL. But sometimes we need to do extra
+ setup for particular servers. In that case, we can create an
+ xmlrpc_server_info object, configure it in various ways, and call the
+ remote server.
+
+ (This interface is also designed to discourage further multiplication
+ of xmlrpc_client_call APIs. We have enough of those already. Please
+ add future options and flags using xmlrpc_server_info.)
+=========================================================================*/
+
+typedef struct _xmlrpc_server_info xmlrpc_server_info;
+
+/* Create a new server info record, pointing to the specified server. */
+xmlrpc_server_info *
+xmlrpc_server_info_new(xmlrpc_env * const envP,
+ const char * const serverUrl);
+
+/* Create a new server info record, with a copy of the old server. */
+extern xmlrpc_server_info *
+xmlrpc_server_info_copy(xmlrpc_env * const envP,
+ xmlrpc_server_info * const srcP);
+
+void
+xmlrpc_server_info_free(xmlrpc_server_info * const serverP);
+
+
+void
+xmlrpc_server_info_set_user(xmlrpc_env * const envP,
+ xmlrpc_server_info * const serverInfoP,
+ const char * const username,
+ const char * const password);
+
+void
+xmlrpc_server_info_set_basic_auth(xmlrpc_env * const envP,
+ xmlrpc_server_info * const serverP,
+ const char * const username,
+ const char * const password);
+
+void
+xmlrpc_server_info_allow_auth_basic(xmlrpc_env * const envP,
+ xmlrpc_server_info * const sP);
+
+void
+xmlrpc_server_info_disallow_auth_basic(xmlrpc_env * const envP,
+ xmlrpc_server_info * const sP);
+
+void
+xmlrpc_server_info_allow_auth_digest(xmlrpc_env * const envP,
+ xmlrpc_server_info * const sP);
+
+void
+xmlrpc_server_info_disallow_auth_digest(xmlrpc_env * const envP,
+ xmlrpc_server_info * const sP);
+
+void
+xmlrpc_server_info_allow_auth_negotiate(xmlrpc_env * const envP,
+ xmlrpc_server_info * const sP);
+
+void
+xmlrpc_server_info_disallow_auth_negotiate(xmlrpc_env * const envP,
+ xmlrpc_server_info * const sP);
+
+void
+xmlrpc_server_info_allow_auth_ntlm(xmlrpc_env * const envP,
+ xmlrpc_server_info * const sP);
+
+void
+xmlrpc_server_info_disallow_auth_ntlm(xmlrpc_env * const envP,
+ xmlrpc_server_info * const sP);
+
+extern unsigned int const xmlrpc_client_version_major;
+extern unsigned int const xmlrpc_client_version_minor;
+extern unsigned int const xmlrpc_client_version_point;
+
+void
+xmlrpc_client_setup_global_const(xmlrpc_env * const envP);
+
+void
+xmlrpc_client_teardown_global_const(void);
+
+void
+xmlrpc_client_create(xmlrpc_env * const envP,
+ int const flags,
+ const char * const appname,
+ const char * const appversion,
+ const struct xmlrpc_clientparms * const clientparmsP,
+ unsigned int const parmSize,
+ xmlrpc_client ** const clientPP);
+
+void
+xmlrpc_client_destroy(xmlrpc_client * const clientP);
+
+void
+xmlrpc_client_transport_call2(
+ xmlrpc_env * const envP,
+ xmlrpc_client * const clientP,
+ const xmlrpc_server_info * const serverP,
+ xmlrpc_mem_block * const callXmlP,
+ xmlrpc_mem_block ** const respXmlPP);
+
+void
+xmlrpc_client_call2(xmlrpc_env * const envP,
+ struct xmlrpc_client * const clientP,
+ const xmlrpc_server_info * const serverInfoP,
+ const char * const methodName,
+ xmlrpc_value * const paramArrayP,
+ xmlrpc_value ** const resultPP);
+
+void
+xmlrpc_client_call2f(xmlrpc_env * const envP,
+ xmlrpc_client * const clientP,
+ const char * const serverUrl,
+ const char * const methodName,
+ xmlrpc_value ** const resultPP,
+ const char * const format,
+ ...);
+
+void
+xmlrpc_client_event_loop_finish(xmlrpc_client * const clientP);
+
+void
+xmlrpc_client_event_loop_finish_timeout(xmlrpc_client * const clientP,
+ unsigned long const milliseconds);
+
+void
+xmlrpc_client_start_rpc(xmlrpc_env * const envP,
+ struct xmlrpc_client * const clientP,
+ xmlrpc_server_info * const serverInfoP,
+ const char * const methodName,
+ xmlrpc_value * const argP,
+ xmlrpc_response_handler responseHandler,
+ void * const userData);
+
+void
+xmlrpc_client_start_rpcf(xmlrpc_env * const envP,
+ xmlrpc_client * const clientP,
+ const char * const serverUrl,
+ const char * const methodName,
+ xmlrpc_response_handler callback,
+ void * const userData,
+ const char * const format,
+ ...);
+
+void
+xmlrpc_client_set_interrupt(xmlrpc_client * const clientP,
+ int * const interruptP);
+
+#include <xmlrpc-c/client_global.h>
+
+/* Copyright (C) 2001 by First Peer, Inc. 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 AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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. */
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* _XMLRPC_CLIENT_H_ */
diff --git a/vendor/voclient/include/xmlrpc-c/client.hpp b/vendor/voclient/include/xmlrpc-c/client.hpp
new file mode 100644
index 00000000..de6d0730
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc-c/client.hpp
@@ -0,0 +1,286 @@
+#ifndef CLIENT_HPP_INCLUDED
+#define CLIENT_HPP_INCLUDED
+
+#include <string>
+#include <vector>
+#include <memory>
+
+#include <xmlrpc-c/girerr.hpp>
+#include <xmlrpc-c/girmem.hpp>
+#include <xmlrpc-c/base.hpp>
+#include <xmlrpc-c/timeout.hpp>
+#include <xmlrpc-c/client_transport.hpp>
+
+namespace xmlrpc_c {
+
+class clientTransactionPtr;
+
+class clientTransaction : public girmem::autoObject {
+
+ friend class clientTransactionPtr;
+
+public:
+ virtual void
+ finish(xmlrpc_c::rpcOutcome const& outcome) = 0;
+
+ virtual void
+ finishErr(girerr::error const& error) = 0;
+
+protected:
+ clientTransaction();
+};
+
+class clientTransactionPtr : public girmem::autoObjectPtr {
+
+public:
+ clientTransactionPtr();
+
+ clientTransactionPtr(clientTransaction * const transP);
+
+ virtual ~clientTransactionPtr();
+
+ virtual xmlrpc_c::clientTransaction *
+ operator->() const;
+};
+
+class clientPtr;
+
+class client : public girmem::autoObject {
+/*----------------------------------------------------------------------------
+ A generic client -- a means of performing an RPC. This is so generic
+ that it can be used for clients that are not XML-RPC.
+
+ This is a base class. Derived classes define things such as that
+ XML and HTTP get used to perform the RPC.
+-----------------------------------------------------------------------------*/
+ friend class clientTransactionPtr;
+
+public:
+ virtual ~client();
+
+ virtual void
+ call(xmlrpc_c::carriageParm * const carriageParmP,
+ std::string const& methodName,
+ xmlrpc_c::paramList const& paramList,
+ xmlrpc_c::rpcOutcome * const outcomeP) = 0;
+
+ virtual void
+ start(xmlrpc_c::carriageParm * const carriageParmP,
+ std::string const& methodName,
+ xmlrpc_c::paramList const& paramList,
+ xmlrpc_c::clientTransactionPtr const& tranP);
+
+ void
+ finishAsync(xmlrpc_c::timeout const timeout);
+
+ virtual void
+ setInterrupt(int *);
+};
+
+class clientPtr : public girmem::autoObjectPtr {
+public:
+ clientPtr();
+
+ explicit clientPtr(xmlrpc_c::client * const clientP);
+
+ xmlrpc_c::client *
+ operator->() const;
+
+ xmlrpc_c::client *
+ get() const;
+};
+
+class serverAccessor : public girmem::autoObject {
+
+public:
+ serverAccessor(xmlrpc_c::clientPtr const clientP,
+ xmlrpc_c::carriageParmPtr const carriageParmP);
+
+ void
+ call(std::string const& methodName,
+ xmlrpc_c::paramList const& paramList,
+ xmlrpc_c::rpcOutcome * const outcomeP) const;
+
+private:
+ xmlrpc_c::clientPtr const clientP;
+ xmlrpc_c::carriageParmPtr const carriageParmP;
+};
+
+class serverAccessorPtr : public girmem::autoObjectPtr {
+public:
+ serverAccessorPtr();
+
+ explicit
+ serverAccessorPtr(xmlrpc_c::serverAccessor * const serverAccessorP);
+
+ xmlrpc_c::serverAccessor *
+ operator->() const;
+
+ xmlrpc_c::serverAccessor *
+ get() const;
+};
+
+class connection {
+/*----------------------------------------------------------------------------
+ A nexus of a particular client and a particular server, along with
+ carriage parameters for performing RPCs between the two.
+
+ This is a minor convenience for client programs that always talk to
+ the same server the same way.
+
+ Use this as a parameter to rpc.call().
+-----------------------------------------------------------------------------*/
+public:
+ connection(xmlrpc_c::client * const clientP,
+ xmlrpc_c::carriageParm * const carriageParmP);
+
+ ~connection();
+
+ xmlrpc_c::client * clientP;
+ xmlrpc_c::carriageParm * carriageParmP;
+};
+
+class client_xml : public xmlrpc_c::client {
+/*----------------------------------------------------------------------------
+ A client that uses XML-RPC XML in the RPC. This class does not define
+ how the XML gets transported, though (i.e. does not require HTTP).
+-----------------------------------------------------------------------------*/
+public:
+ client_xml(xmlrpc_c::clientXmlTransport * const transportP);
+
+ client_xml(xmlrpc_c::clientXmlTransport * const transportP,
+ xmlrpc_dialect const dialect);
+
+ client_xml(xmlrpc_c::clientXmlTransportPtr const transportP);
+
+ client_xml(xmlrpc_c::clientXmlTransportPtr const transportP,
+ xmlrpc_dialect const dialect);
+
+ ~client_xml();
+
+ void
+ call(carriageParm * const carriageParmP,
+ std::string const& methodName,
+ xmlrpc_c::paramList const& paramList,
+ xmlrpc_c::rpcOutcome * const outcomeP);
+
+ void
+ start(xmlrpc_c::carriageParm * const carriageParmP,
+ std::string const& methodName,
+ xmlrpc_c::paramList const& paramList,
+ xmlrpc_c::clientTransactionPtr const& tranP);
+
+ void
+ finishAsync(xmlrpc_c::timeout const timeout);
+
+ virtual void
+ setInterrupt(int * interruptP);
+
+private:
+ struct client_xml_impl * implP;
+};
+
+class xmlTransaction_client : public xmlrpc_c::xmlTransaction {
+
+public:
+ xmlTransaction_client(xmlrpc_c::clientTransactionPtr const& tranP);
+
+ void
+ finish(std::string const& responseXml) const;
+
+ void
+ finishErr(girerr::error const& error) const;
+private:
+ xmlrpc_c::clientTransactionPtr const tranP;
+};
+
+class xmlTransaction_clientPtr : public xmlTransactionPtr {
+public:
+ xmlTransaction_clientPtr();
+
+ xmlTransaction_clientPtr(xmlrpc_c::clientTransactionPtr const& tranP);
+
+ xmlrpc_c::xmlTransaction_client *
+ operator->() const;
+};
+
+class rpcPtr;
+
+class rpc : public clientTransaction {
+/*----------------------------------------------------------------------------
+ An RPC. An RPC consists of method name, parameters, and result. It
+ does not specify in any way how the method name and parameters get
+ turned into a result. It does not presume XML or HTTP.
+
+ You don't create an object of this class directly. All references to
+ an rpc object should be by an rpcPtr object. Create a new RPC by
+ creating a new rpcPtr. Accordingly, our constructors and destructors
+ are protected, but available to our friend class rpcPtr.
+
+ In order to do asynchronous RPCs, you normally have to create a derived
+ class that defines a useful notifyComplete(). If you do that, you'll
+ want to make sure the derived class objects get accessed only via rpcPtrs
+ as well.
+-----------------------------------------------------------------------------*/
+ friend class xmlrpc_c::rpcPtr;
+
+public:
+ void
+ call(xmlrpc_c::client * const clientP,
+ xmlrpc_c::carriageParm * const carriageParmP);
+
+ void
+ call(xmlrpc_c::connection const& connection);
+
+ void
+ start(xmlrpc_c::client * const clientP,
+ xmlrpc_c::carriageParm * const carriageParmP);
+
+ void
+ start(xmlrpc_c::connection const& connection);
+
+ void
+ finish(xmlrpc_c::rpcOutcome const& outcome);
+
+ void
+ finishErr(girerr::error const& error);
+
+ virtual void
+ notifyComplete();
+
+ bool
+ isFinished() const;
+
+ bool
+ isSuccessful() const;
+
+ xmlrpc_c::value
+ getResult() const;
+
+ xmlrpc_c::fault
+ getFault() const;
+
+ rpc(std::string const methodName,
+ xmlrpc_c::paramList const& paramList);
+
+ virtual ~rpc();
+
+private:
+ struct rpc_impl * implP;
+};
+
+class rpcPtr : public clientTransactionPtr {
+public:
+ rpcPtr();
+
+ explicit rpcPtr(xmlrpc_c::rpc * const rpcP);
+
+ rpcPtr(std::string const methodName,
+ xmlrpc_c::paramList const& paramList);
+
+ xmlrpc_c::rpc *
+ operator->() const;
+};
+
+} // namespace
+#endif
diff --git a/vendor/voclient/include/xmlrpc-c/client_global.h b/vendor/voclient/include/xmlrpc-c/client_global.h
new file mode 100644
index 00000000..4f388fcc
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc-c/client_global.h
@@ -0,0 +1,141 @@
+#ifndef CLIENT_GLOBAL_H_INCLUDED
+#define CLIENT_GLOBAL_H_INCLUDED
+
+/*=========================================================================
+** Initialization and Shutdown
+**=========================================================================
+** These routines initialize and terminate the XML-RPC client. If you're
+** already using libwww on your own, you can pass
+** XMLRPC_CLIENT_SKIP_LIBWWW_INIT to avoid initializing it twice.
+*/
+
+#define XMLRPC_CLIENT_NO_FLAGS (0)
+#define XMLRPC_CLIENT_SKIP_LIBWWW_INIT (1)
+
+extern void
+xmlrpc_client_init(int const flags,
+ const char * const appname,
+ const char * const appversion);
+
+void
+xmlrpc_client_init2(xmlrpc_env * const env,
+ int const flags,
+ const char * const appname,
+ const char * const appversion,
+ const struct xmlrpc_clientparms * const clientparms,
+ unsigned int const parm_size);
+
+extern void
+xmlrpc_client_cleanup(void);
+
+/*=========================================================================
+** xmlrpc_client_call
+**=========================================================================
+** A synchronous XML-RPC client. Do not attempt to call any of these
+** functions from inside an asynchronous callback!
+*/
+
+xmlrpc_value *
+xmlrpc_client_call(xmlrpc_env * const envP,
+ const char * const server_url,
+ const char * const method_name,
+ const char * const format,
+ ...);
+
+xmlrpc_value *
+xmlrpc_client_call_params(xmlrpc_env * const envP,
+ const char * const serverUrl,
+ const char * const methodName,
+ xmlrpc_value * const paramArrayP);
+
+xmlrpc_value *
+xmlrpc_client_call_server(xmlrpc_env * const envP,
+ const xmlrpc_server_info * const server,
+ const char * const method_name,
+ const char * const format,
+ ...);
+
+xmlrpc_value *
+xmlrpc_client_call_server_params(
+ xmlrpc_env * const envP,
+ const xmlrpc_server_info * const serverP,
+ const char * const method_name,
+ xmlrpc_value * const paramArrayP);
+
+void
+xmlrpc_client_transport_call(
+ xmlrpc_env * const envP,
+ void * const reserved, /* for client handle */
+ const xmlrpc_server_info * const serverP,
+ xmlrpc_mem_block * const callXmlP,
+ xmlrpc_mem_block ** const respXmlPP);
+
+
+/*=========================================================================
+** xmlrpc_client_call_asynch
+**=========================================================================
+** An asynchronous XML-RPC client.
+*/
+
+/* Make an asynchronous XML-RPC call. We make internal copies of all
+** arguments except user_data, so you can deallocate them safely as soon
+** as you return. Errors will be passed to the callback. You will need
+** to run the event loop somehow; see below.
+** WARNING: If an error occurs while building the argument, the
+** response handler will be called with a NULL param_array. */
+void
+xmlrpc_client_call_asynch(const char * const server_url,
+ const char * const method_name,
+ xmlrpc_response_handler callback,
+ void * const user_data,
+ const char * const format,
+ ...);
+
+/* As above, but use an xmlrpc_server_info object. The server object can be
+** safely destroyed as soon as this function returns. */
+void
+xmlrpc_client_call_server_asynch(xmlrpc_server_info * const server,
+ const char * const method_name,
+ xmlrpc_response_handler callback,
+ void * const user_data,
+ const char * const format,
+ ...);
+
+/* As above, but the parameter list is supplied as an xmlrpc_value
+** containing an array.
+*/
+void
+xmlrpc_client_call_asynch_params(const char * const server_url,
+ const char * const method_name,
+ xmlrpc_response_handler callback,
+ void * const user_data,
+ xmlrpc_value * const paramArrayP);
+
+/* As above, but use an xmlrpc_server_info object. The server object can be
+** safely destroyed as soon as this function returns. */
+void
+xmlrpc_client_call_server_asynch_params(
+ xmlrpc_server_info * const server,
+ const char * const method_name,
+ xmlrpc_response_handler callback,
+ void * const user_data,
+ xmlrpc_value * const paramArrayP);
+
+/*=========================================================================
+** Event Loop Interface
+**=========================================================================
+** These functions can be used to run the XML-RPC event loop. If you
+** don't like these, you can also run the libwww event loop directly.
+*/
+
+/* Finish all outstanding asynchronous calls. Alternatively, the loop
+** will exit if someone calls xmlrpc_client_event_loop_end. */
+extern void
+xmlrpc_client_event_loop_finish_asynch(void);
+
+
+/* Finish all outstanding asynchronous calls. */
+extern void
+xmlrpc_client_event_loop_finish_asynch_timeout(unsigned long const milliseconds);
+
+#endif
diff --git a/vendor/voclient/include/xmlrpc-c/client_simple.hpp b/vendor/voclient/include/xmlrpc-c/client_simple.hpp
new file mode 100644
index 00000000..52e6c2b6
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc-c/client_simple.hpp
@@ -0,0 +1,44 @@
+#ifndef CLIENT_SIMPLE_HPP_INCLUDED
+#define CLIENT_SIMPLE_HPP_INCLUDED
+
+#include <string>
+
+#include <xmlrpc-c/base.hpp>
+#include <xmlrpc-c/client.hpp>
+
+namespace xmlrpc_c {
+
+
+class clientSimple {
+
+public:
+ clientSimple();
+
+ void
+ call(std::string const serverUrl,
+ std::string const methodName,
+ xmlrpc_c::value * const resultP);
+
+ void
+ call(std::string const serverUrl,
+ std::string const methodName,
+ std::string const format,
+ xmlrpc_c::value * const resultP,
+ ...);
+
+ void
+ call(std::string const serverUrl,
+ std::string const methodName,
+ xmlrpc_c::paramList const& paramList,
+ xmlrpc_c::value * const resultP);
+
+private:
+ xmlrpc_c::clientPtr clientP;
+};
+
+} // namespace
+#endif
+
+
+
+
diff --git a/vendor/voclient/include/xmlrpc-c/client_transport.hpp b/vendor/voclient/include/xmlrpc-c/client_transport.hpp
new file mode 100644
index 00000000..8d6053d5
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc-c/client_transport.hpp
@@ -0,0 +1,448 @@
+#ifndef CLIENT_TRANSPORT_HPP_INCLUDED
+#define CLIENT_TRANSPORT_HPP_INCLUDED
+
+#include <string>
+#include <vector>
+#include <xmlrpc-c/util.h>
+#include <xmlrpc-c/client.h>
+#include <xmlrpc-c/girerr.hpp>
+#include <xmlrpc-c/girmem.hpp>
+#include <xmlrpc-c/timeout.hpp>
+
+namespace xmlrpc_c {
+
+class carriageParmPtr;
+
+class carriageParm : public girmem::autoObject {
+/*----------------------------------------------------------------------------
+ The parameter to a client for an individual RPC. It tells specifics
+ of how to carry the call to the server and the response back. For
+ example, it may identify the server. It may identify communication
+ protocols to use. It may indicate permission and accounting
+ information.
+
+ This is a base class; the carriage parameter is specific to the
+ class of client. For example, an HTTP-based client would have a
+ URL and HTTP basic authentication info as parameter.
+-----------------------------------------------------------------------------*/
+protected:
+ virtual ~carriageParm();
+ carriageParm();
+};
+
+class carriageParmPtr : public girmem::autoObjectPtr {
+
+public:
+ carriageParmPtr();
+
+ explicit carriageParmPtr(xmlrpc_c::carriageParm * const carriageParmP);
+
+ xmlrpc_c::carriageParm *
+ operator->() const;
+
+ xmlrpc_c::carriageParm *
+ get() const;
+};
+
+//----------------------------------------------------------------------------
+
+class xmlTransactionPtr;
+
+class xmlTransaction : public girmem::autoObject {
+
+ friend class xmlTransactionPtr;
+
+public:
+ virtual void
+ finish(std::string const& responseXml) const;
+
+ virtual void
+ finishErr(girerr::error const& error) const;
+
+protected:
+ xmlTransaction();
+};
+
+class xmlTransactionPtr : public girmem::autoObjectPtr {
+public:
+ xmlTransactionPtr();
+
+ xmlTransactionPtr(xmlTransaction * xmlTransP);
+
+ xmlrpc_c::xmlTransaction *
+ operator->() const;
+};
+
+//----------------------------------------------------------------------------
+
+class clientXmlTransport : public girmem::autoObject {
+/*----------------------------------------------------------------------------
+ An object which transports XML to and from an XML-RPC server for an
+ XML-RPC client.
+
+ This is a base class. Derived classes define methods to perform the
+ transportation in particular ways.
+-----------------------------------------------------------------------------*/
+public:
+ virtual ~clientXmlTransport();
+
+ virtual void
+ call(xmlrpc_c::carriageParm * const carriageParmP,
+ std::string const& callXml,
+ std::string * const responseXmlP) = 0;
+
+ virtual void
+ start(xmlrpc_c::carriageParm * const carriageParmP,
+ std::string const& callXml,
+ xmlrpc_c::xmlTransactionPtr const& xmlTranP);
+
+ virtual void
+ finishAsync(xmlrpc_c::timeout const timeout);
+
+ static void
+ asyncComplete(
+ struct xmlrpc_call_info * const callInfoP,
+ xmlrpc_mem_block * const responseXmlMP,
+ xmlrpc_env const transportEnv);
+
+ virtual void
+ setInterrupt(int * const interruptP);
+};
+
+class clientXmlTransportPtr : public girmem::autoObjectPtr {
+
+public:
+ clientXmlTransportPtr();
+
+ clientXmlTransportPtr(xmlrpc_c::clientXmlTransport * const transportP);
+
+ xmlrpc_c::clientXmlTransport *
+ operator->() const;
+
+ xmlrpc_c::clientXmlTransport *
+ get() const;
+};
+
+/*===========================================================================
+ HTTP
+===========================================================================*/
+
+class carriageParm_http0 : public xmlrpc_c::carriageParm {
+
+public:
+ carriageParm_http0(std::string const serverUrl);
+
+ ~carriageParm_http0();
+
+ void
+ setUser(std::string const userid,
+ std::string const password);
+
+ void
+ allowAuthBasic();
+
+ void
+ disallowAuthBasic();
+
+ void
+ allowAuthDigest();
+
+ void
+ disallowAuthDigest();
+
+ void
+ allowAuthNegotiate();
+
+ void
+ disallowAuthNegotiate();
+
+ void
+ allowAuthNtlm();
+
+ void
+ disallowAuthNtlm();
+
+ void
+ setBasicAuth(std::string const userid,
+ std::string const password);
+
+ xmlrpc_server_info * c_serverInfoP;
+
+protected:
+ // Only a derived class is allowed to create an object with no
+ // server URL, and the derived class is expected to follow it up
+ // with an instantiate() to establish the server URL.
+
+ carriageParm_http0();
+
+ void
+ instantiate(std::string const serverUrl);
+};
+
+class carriageParm_http0Ptr : public xmlrpc_c::carriageParmPtr {
+
+public:
+ carriageParm_http0Ptr();
+ carriageParm_http0Ptr(xmlrpc_c::carriageParm_http0 * const carriageParmP);
+
+ xmlrpc_c::carriageParm_http0 *
+ operator->() const;
+};
+
+class clientXmlTransport_http : public xmlrpc_c::clientXmlTransport {
+/*----------------------------------------------------------------------------
+ A base class for client XML transports that use the simple, classic
+ C HTTP transports.
+-----------------------------------------------------------------------------*/
+public:
+ virtual ~clientXmlTransport_http();
+
+ void
+ call(xmlrpc_c::carriageParm * const carriageParmP,
+ std::string const& callXml,
+ std::string * const responseXmlP);
+
+ void
+ start(xmlrpc_c::carriageParm * const carriageParmP,
+ std::string const& callXml,
+ xmlrpc_c::xmlTransactionPtr const& xmlTranP);
+
+ virtual void
+ finishAsync(xmlrpc_c::timeout const timeout);
+
+ virtual void
+ setInterrupt(int * const interruptP);
+
+ static std::vector<std::string>
+ availableTypes();
+
+ static clientXmlTransportPtr
+ create();
+
+protected:
+ clientXmlTransport_http() {} // ensure no one can create
+ struct xmlrpc_client_transport * c_transportP;
+ const struct xmlrpc_client_transport_ops * c_transportOpsP;
+};
+
+
+/*===========================================================================
+ curl
+===========================================================================*/
+
+class carriageParm_curl0 : public xmlrpc_c::carriageParm_http0 {
+
+public:
+ carriageParm_curl0(std::string const serverUrl);
+};
+
+class carriageParm_curl0Ptr : public xmlrpc_c::carriageParm_http0Ptr {
+
+public:
+ carriageParm_curl0Ptr();
+ carriageParm_curl0Ptr(xmlrpc_c::carriageParm_curl0 * const carriageParmP);
+
+ xmlrpc_c::carriageParm_curl0 *
+ operator->() const;
+};
+
+class clientXmlTransport_curl : public xmlrpc_c::clientXmlTransport_http {
+
+public:
+ class constrOpt {
+ public:
+ constrOpt();
+
+ constrOpt & network_interface (std::string const& arg);
+ constrOpt & no_ssl_verifypeer (bool const& arg);
+ constrOpt & no_ssl_verifyhost (bool const& arg);
+ constrOpt & user_agent (std::string const& arg);
+ constrOpt & ssl_cert (std::string const& arg);
+ constrOpt & sslcerttype (std::string const& arg);
+ constrOpt & sslcertpasswd (std::string const& arg);
+ constrOpt & sslkey (std::string const& arg);
+ constrOpt & sslkeytype (std::string const& arg);
+ constrOpt & sslkeypasswd (std::string const& arg);
+ constrOpt & sslengine (std::string const& arg);
+ constrOpt & sslengine_default (bool const& arg);
+ constrOpt & sslversion (xmlrpc_sslversion const& arg);
+ constrOpt & cainfo (std::string const& arg);
+ constrOpt & capath (std::string const& arg);
+ constrOpt & randomfile (std::string const& arg);
+ constrOpt & egdsocket (std::string const& arg);
+ constrOpt & ssl_cipher_list (std::string const& arg);
+ constrOpt & timeout (unsigned int const& arg);
+
+ struct {
+ std::string network_interface;
+ bool no_ssl_verifypeer;
+ bool no_ssl_verifyhost;
+ std::string user_agent;
+ std::string ssl_cert;
+ std::string sslcerttype;
+ std::string sslcertpasswd;
+ std::string sslkey;
+ std::string sslkeytype;
+ std::string sslkeypasswd;
+ std::string sslengine;
+ bool sslengine_default;
+ xmlrpc_sslversion sslversion;
+ std::string cainfo;
+ std::string capath;
+ std::string randomfile;
+ std::string egdsocket;
+ std::string ssl_cipher_list;
+ unsigned int timeout;
+ } value;
+ struct {
+ bool network_interface;
+ bool no_ssl_verifypeer;
+ bool no_ssl_verifyhost;
+ bool user_agent;
+ bool ssl_cert;
+ bool sslcerttype;
+ bool sslcertpasswd;
+ bool sslkey;
+ bool sslkeytype;
+ bool sslkeypasswd;
+ bool sslengine;
+ bool sslengine_default;
+ bool sslversion;
+ bool cainfo;
+ bool capath;
+ bool randomfile;
+ bool egdsocket;
+ bool ssl_cipher_list;
+ bool timeout;
+ } present;
+ };
+
+ clientXmlTransport_curl(constrOpt const& opt);
+
+ clientXmlTransport_curl(std::string const networkInterface = "",
+ bool const noSslVerifyPeer = false,
+ bool const noSslVerifyHost = false,
+ std::string const userAgent = "");
+
+ ~clientXmlTransport_curl();
+
+private:
+ void
+ initialize(constrOpt const& opt);
+};
+
+/*===========================================================================
+ libwww
+===========================================================================*/
+
+class carriageParm_libwww0 : public xmlrpc_c::carriageParm_http0 {
+
+public:
+ carriageParm_libwww0(std::string const serverUrl);
+
+};
+
+class carriageParm_libwww0Ptr : public xmlrpc_c::carriageParm_http0Ptr {
+
+public:
+ carriageParm_libwww0Ptr();
+ carriageParm_libwww0Ptr(xmlrpc_c::carriageParm_libwww0 * const);
+
+ xmlrpc_c::carriageParm_libwww0 *
+ operator->() const;
+};
+
+class clientXmlTransport_libwww : public xmlrpc_c::clientXmlTransport_http {
+
+public:
+ clientXmlTransport_libwww(std::string const appname = "",
+ std::string const appversion = "");
+
+ ~clientXmlTransport_libwww();
+};
+
+/*===========================================================================
+ wininet
+===========================================================================*/
+
+class carriageParm_wininet0 : public xmlrpc_c::carriageParm_http0 {
+
+public:
+ carriageParm_wininet0(std::string const serverUrl);
+
+};
+
+class carriageParm_wininet0Ptr : public xmlrpc_c::carriageParm_http0Ptr {
+
+public:
+ carriageParm_wininet0Ptr();
+ carriageParm_wininet0Ptr(xmlrpc_c::carriageParm_wininet0 * const);
+
+ xmlrpc_c::carriageParm_wininet0 *
+ operator->() const;
+};
+
+class clientXmlTransport_wininet : public xmlrpc_c::clientXmlTransport_http {
+
+public:
+ clientXmlTransport_wininet(bool const allowInvalidSslCerts = false);
+
+ ~clientXmlTransport_wininet();
+};
+
+/*===========================================================================
+ pstream
+===========================================================================*/
+
+class packetSocket;
+
+class carriageParm_pstream : public xmlrpc_c::carriageParm {
+
+ // There are no parameters for carrying an RPC on a packet stream.
+ // There's only one way to carry it.
+};
+
+class carriageParm_pstreamPtr : public xmlrpc_c::carriageParmPtr {
+
+public:
+ carriageParm_pstreamPtr();
+ carriageParm_pstreamPtr(
+ xmlrpc_c::carriageParm_pstream * const carriageParmP);
+
+ xmlrpc_c::carriageParm_pstream *
+ operator->() const;
+};
+
+class clientXmlTransport_pstream : public xmlrpc_c::clientXmlTransport {
+
+public:
+ class constrOpt {
+ public:
+ constrOpt();
+
+ constrOpt & fd (int const& arg);
+
+ struct {
+ int fd;
+ } value;
+ struct {
+ bool fd;
+ } present;
+ };
+
+ clientXmlTransport_pstream(constrOpt const& opt);
+
+ ~clientXmlTransport_pstream();
+
+ void
+ call(xmlrpc_c::carriageParm * const carriageParmP,
+ std::string const& callXml,
+ std::string * const responseXmlP);
+
+private:
+ packetSocket * packetSocketP;
+};
+
+
+} // namespace
+#endif
diff --git a/vendor/voclient/include/xmlrpc-c/config.h b/vendor/voclient/include/xmlrpc-c/config.h
new file mode 100644
index 00000000..1c1b6b65
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc-c/config.h
@@ -0,0 +1,37 @@
+#ifndef XMLRPC_C_CONFIG_H_INCLUDED
+#define XMLRPC_C_CONFIG_H_INCLUDED
+
+/* This file, part of XML-RPC For C/C++, is meant to
+ define characteristics of this particular installation
+ that the other <xmlrpc-c/...> header files need in
+ order to compile correctly when #included in Xmlrpc-c
+ user code.
+
+ Those header files #include this one.
+
+ This file was created by a make rule.
+*/
+#define XMLRPC_HAVE_WCHAR 1
+#ifdef WIN32
+ /* SOCKET is a type defined by <winsock.h>. Anyone who
+ uses XMLRPC_SOCKET on a WIN32 system must #include
+ <winsock.h>
+ */
+ #define XMLRPC_SOCKET SOCKET
+ #define XMLRPC_HAVE_TIMEVAL 0
+ #define XMLRPC_HAVE_TIMESPEC 0
+#else
+ #define XMLRPC_SOCKET int
+ #define XMLRPC_HAVE_TIMEVAL 1
+ #define XMLRPC_HAVE_TIMESPEC 1
+#endif
+
+#if defined(_MSC_VER)
+ /* Newer MSVC has long long, but MSVC 6 does not */
+ #define XMLRPC_INT64 __int64
+ #define XMLRPC_INT32 __int32
+#else
+ #define XMLRPC_INT64 long long
+ #define XMLRPC_INT32 int
+#endif
+#endif
diff --git a/vendor/voclient/include/xmlrpc-c/girerr.hpp b/vendor/voclient/include/xmlrpc-c/girerr.hpp
new file mode 100644
index 00000000..1008722c
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc-c/girerr.hpp
@@ -0,0 +1,31 @@
+#ifndef GIRERR_HPP_INCLUDED
+#define GIRERR_HPP_INCLUDED
+
+#include <string>
+#include <exception>
+
+#define HAVE_GIRERR_ERROR
+
+namespace girerr {
+
+class error : public std::exception {
+public:
+ error(std::string const& what_arg) : _what(what_arg) {}
+
+ ~error() throw() {}
+
+ virtual const char *
+ what() const throw() { return this->_what.c_str(); };
+
+private:
+ std::string _what;
+};
+
+// throwf() always throws a girerr::error .
+
+void
+throwf(const char * const format, ...);
+
+} // namespace
+
+#endif
diff --git a/vendor/voclient/include/xmlrpc-c/girmem.hpp b/vendor/voclient/include/xmlrpc-c/girmem.hpp
new file mode 100644
index 00000000..2eed4084
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc-c/girmem.hpp
@@ -0,0 +1,75 @@
+#ifndef GIRMEM_HPP_INCLUDED
+#define GIRMEM_HPP_INCLUDED
+
+
+/* The following pthread crap mirrors what is in pthreadx.h, which is
+ what girmem.cpp uses to declare the lock interface. We can't simply
+ include pthreadx.h here, because it's an internal Xmlrpc-c header file,
+ and this is an external one.
+
+ This is a stopgap measure until we do something cleaner, such as expose
+ pthreadx.h as an external interface (class girlock, maybe?) or create
+ a lock class with virtual methods.
+
+ The problem we're solving is that class autoObject contains
+ a pthread_mutex_t member, and on Windows, there's no such type.
+*/
+
+#ifndef WIN32
+# include <pthread.h>
+ typedef pthread_mutex_t girmem_lock;
+#else
+# include <windows.h>
+ typedef CRITICAL_SECTION girmem_lock;
+#endif
+
+namespace girmem {
+
+class autoObjectPtr;
+
+class autoObject {
+ friend class autoObjectPtr;
+
+public:
+ void incref();
+ void decref(bool * const unreferencedP);
+
+protected:
+ autoObject();
+ virtual ~autoObject();
+
+private:
+ girmem_lock refcountLock;
+ unsigned int refcount;
+};
+
+class autoObjectPtr {
+public:
+ autoObjectPtr();
+ autoObjectPtr(girmem::autoObject * objectP);
+ autoObjectPtr(girmem::autoObjectPtr const& autoObjectPtr);
+
+ ~autoObjectPtr();
+
+ void
+ point(girmem::autoObject * const objectP);
+
+ void
+ unpoint();
+
+ autoObjectPtr
+ operator=(girmem::autoObjectPtr const& objectPtr);
+
+ girmem::autoObject *
+ operator->() const;
+
+ girmem::autoObject *
+ get() const;
+
+protected:
+ girmem::autoObject * objectP;
+};
+
+} // namespace
+
+#endif
diff --git a/vendor/voclient/include/xmlrpc-c/inttypes.h b/vendor/voclient/include/xmlrpc-c/inttypes.h
new file mode 100644
index 00000000..fe1feb53
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc-c/inttypes.h
@@ -0,0 +1,19 @@
+#ifndef XMLRPC_INTTYPES_H_INCLUDED
+#define XMLRPC_INTTYPES_H_INCLUDED
+
+#ifdef _MSC_VER
+
+typedef unsigned short xmlrpc_uint16_t;
+typedef unsigned int xmlrpc_uint32_t;
+typedef unsigned __int64 xmlrpc_uint64_t;
+
+#else
+#include <inttypes.h>
+
+typedef uint16_t xmlrpc_uint16_t;
+typedef uint32_t xmlrpc_uint32_t;
+typedef uint64_t xmlrpc_uint64_t;
+
+#endif
+
+#endif
diff --git a/vendor/voclient/include/xmlrpc-c/oldcppwrapper.hpp b/vendor/voclient/include/xmlrpc-c/oldcppwrapper.hpp
new file mode 100644
index 00000000..78a9c514
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc-c/oldcppwrapper.hpp
@@ -0,0 +1,419 @@
+// -*- C++ -*- <-- an Emacs control
+
+// Copyright information is at the bottom of the file.
+
+//=========================================================================
+// XML-RPC C++ API
+//=========================================================================
+
+
+#ifndef XMLRPCCPP_H_INCLUDED
+#define XMLRPCCPP_H_INCLUDED
+
+// There used to be a "using namespace std" here and some confusing old
+// comments about it having something to do with what header file you
+// include to get string functions.
+//
+// "using namespace std" was under "#if defined(__GNUC__) && (__GNUC__ >= 3)"
+// until December 2003, and then unconditional until Release 1.1 (March 2005).
+// Older GNU Compilers apparently imply namespace std, so they don't need it.
+//
+// But "using namespace std" is a bad idea. This is an interface header
+// file, and we don't want to suck all of namespace std into the user's
+// namespace just because he's using Xmlrpc-c. So we took it out.
+// We refer to std names like std::string.
+// -Bryan 2005.03.12.
+
+
+#include <cstdlib>
+#include <string>
+#include <xmlrpc-c/base.h>
+#include <xmlrpc-c/client.h>
+#include <xmlrpc-c/server.h>
+
+
+//=========================================================================
+// XmlRpcFault
+//=========================================================================
+// A C++ exception class representing an XML-RPC fault.
+
+class XmlRpcFault {
+
+private:
+ xmlrpc_env mFault;
+
+ XmlRpcFault& operator= (XmlRpcFault const& f)
+ { if (true || f.getFaultCode()) abort(); return (XmlRpcFault&) f; }
+
+public:
+ XmlRpcFault (const XmlRpcFault &fault);
+ XmlRpcFault (const int faultCode, const std::string faultString);
+ XmlRpcFault (const xmlrpc_env *env);
+ ~XmlRpcFault (void);
+
+ int getFaultCode (void) const;
+ std::string getFaultString (void) const;
+ xmlrpc_env *getFaultEnv (void);
+};
+
+inline int XmlRpcFault::getFaultCode (void) const {
+ return mFault.fault_code;
+}
+
+inline xmlrpc_env *XmlRpcFault::getFaultEnv (void) {
+ return &mFault;
+}
+
+
+//=========================================================================
+// XmlRpcEnv
+//=========================================================================
+// This class can be used to wrap xmlrpc_env object. Use it as follows:
+//
+// XmlRpcEnv env;
+// xmlrpc_parse_value(env, v, "(i)", &i);
+// env.throwIfFaultOccurred();
+
+class XmlRpcEnv {
+
+private:
+ xmlrpc_env mEnv;
+
+ void throwMe (void) const;
+ XmlRpcEnv& operator= (XmlRpcEnv const& e)
+ { if (true || e.faultOccurred()) abort(); return (XmlRpcEnv&) e;}
+
+public:
+ XmlRpcEnv (const XmlRpcEnv &env);
+ XmlRpcEnv (void) { xmlrpc_env_init(&mEnv); }
+ ~XmlRpcEnv (void) { xmlrpc_env_clean(&mEnv); }
+
+ bool faultOccurred (void) const {return (mEnv.fault_occurred != 0);};
+ bool hasFaultOccurred (void) const { return faultOccurred(); };
+ /* hasFaultOccurred() is for backward compatibility.
+ faultOccurred() is a superior name for this.
+ */
+ std::string getFaultString() const { return mEnv.fault_string; };
+ XmlRpcFault getFault (void) const;
+
+ void throwIfFaultOccurred (void) const;
+
+ operator xmlrpc_env * (void) { return &mEnv; }
+};
+
+inline void XmlRpcEnv::throwIfFaultOccurred (void) const {
+ if (faultOccurred())
+ throwMe();
+}
+
+
+//=========================================================================
+// XmlRpcValue
+//=========================================================================
+// An object in this class is an XML-RPC value.
+//
+// We have a complex structure to allow C code mixed in with C++ code
+// which uses this class to refer to the same XML-RPC value object.
+// This is especially important because there aren't proper C++ facilities
+// for much of Xmlrpc-c; you have to use the C facilities even if you'd
+// rather use proper C++.
+//
+// The XmlRpcValue object internally represents the value as an
+// xmlrpc_value. It holds one reference to the xmlrpc_value. Users
+// of XmlRpcValue never see that xmlrpc_value, but C code can. the
+// C code might create the xmlrpc_value and then bind it to an XmlRpcValue,
+// or it might get the xmlrpc_value handle from the XmlRpcValue. Finally,
+// C code can simply use the XmlRpcValue where an xmlrpc_value handle is
+// required and it gets converted automatically.
+//
+// So reference counting for the xmlrpc_value is quite a nightmare.
+
+class XmlRpcValue {
+
+private:
+ xmlrpc_value *mValue;
+
+public:
+ enum ReferenceBehavior {
+ MAKE_REFERENCE,
+ CONSUME_REFERENCE
+ };
+
+ typedef xmlrpc_int32 int32;
+
+ XmlRpcValue (void);
+ XmlRpcValue (xmlrpc_value *value,
+ ReferenceBehavior behavior = MAKE_REFERENCE);
+ XmlRpcValue (const XmlRpcValue& value);
+ ~XmlRpcValue (void);
+
+ XmlRpcValue& operator= (const XmlRpcValue& value);
+
+ // Accessing the value's type (think of this as lightweight RTTI).
+ xmlrpc_type getType(void) const;
+
+ // We don't supply an automatic conversion operator--you need to say
+ // whether you want to make or borrow this object's reference.
+ // XXX - Is it really OK for these to be const?
+ xmlrpc_value *makeReference (void) const;
+ xmlrpc_value *borrowReference (void) const;
+
+ // Some static "constructor" functions.
+ static XmlRpcValue makeInt (const XmlRpcValue::int32 i);
+ static XmlRpcValue makeBool (const bool b);
+ static XmlRpcValue makeDouble (const double d);
+ static XmlRpcValue makeDateTime (const std::string& dateTime);
+ static XmlRpcValue makeString (const std::string& str);
+ static XmlRpcValue makeString (const char *const str);
+ static XmlRpcValue makeString (const char *const str, size_t len);
+ static XmlRpcValue makeArray (void);
+ static XmlRpcValue makeStruct (void);
+ static XmlRpcValue makeBase64 (const unsigned char *const data,
+ size_t len);
+ /*
+ // An interface to xmlrpc_build_value.
+ static XmlRpcValue buildValue (const char *const format, ...);
+ */
+
+ // Some functions to get the underlying data.
+ // These will throw an XmlRpcFault if the data is the wrong type.
+ XmlRpcValue::int32 getInt (void) const;
+ bool getBool (void) const;
+ double getDouble (void) const;
+ std::string getRawDateTime (void) const;
+ std::string getString (void) const;
+ XmlRpcValue getArray (void) const;
+ XmlRpcValue getStruct (void) const;
+
+ // This returns an internal pointer which will become invalid when
+ // all references to the underlying value are destroyed.
+ void getBase64 (const unsigned char *& out_data,
+ size_t& out_len) const;
+
+ /*
+ // An interface to xmlrpc_parse_value.
+ void parseValue (const char *const format, ...);
+ */
+
+ // Array functions. These will throw an XmlRpcFault if the value
+ // isn't an array.
+ size_t arraySize (void) const;
+ void arrayAppendItem (const XmlRpcValue& value);
+ XmlRpcValue arrayGetItem (int index) const;
+
+ // Struct functions. These will throw an XmlRpcFault if the value
+ // isn't a struct.
+ size_t structSize (void) const;
+ bool structHasKey (const std::string& key) const;
+ XmlRpcValue structGetValue (const std::string& key) const;
+ void structSetValue (const std::string& key,
+ const XmlRpcValue& value);
+ void structGetKeyAndValue (const int index,
+ std::string& out_key,
+ XmlRpcValue& out_value) const;
+};
+
+inline XmlRpcValue::XmlRpcValue (xmlrpc_value *value,
+ ReferenceBehavior behavior)
+{
+ mValue = value;
+
+ if (behavior == MAKE_REFERENCE)
+ xmlrpc_INCREF(value);
+}
+
+inline XmlRpcValue::XmlRpcValue (const XmlRpcValue& value) {
+ mValue = value.mValue;
+ xmlrpc_INCREF(mValue);
+}
+
+inline XmlRpcValue::~XmlRpcValue (void) {
+ xmlrpc_DECREF(mValue);
+}
+
+inline XmlRpcValue& XmlRpcValue::operator= (const XmlRpcValue& value) {
+ // Must increment before we decrement, in case of assignment to self.
+ xmlrpc_INCREF(value.mValue);
+ xmlrpc_DECREF(mValue);
+ mValue = value.mValue;
+ return *this;
+}
+
+inline xmlrpc_type XmlRpcValue::getType (void) const {
+ return xmlrpc_value_type(mValue);
+}
+
+inline xmlrpc_value *XmlRpcValue::makeReference (void) const {
+ xmlrpc_INCREF(mValue);
+ return mValue;
+}
+
+inline xmlrpc_value *XmlRpcValue::borrowReference (void) const {
+ return mValue;
+}
+
+
+//=========================================================================
+// XmlRpcClient
+//=========================================================================
+
+class XmlRpcClient {
+
+private:
+ std::string mServerUrl;
+
+public:
+ static void Initialize (std::string appname, std::string appversion);
+ static void Terminate (void);
+
+ XmlRpcClient (const std::string& server_url) : mServerUrl(server_url) {}
+ ~XmlRpcClient (void) {}
+
+ XmlRpcClient (const XmlRpcClient& client);
+ XmlRpcClient& operator= (const XmlRpcClient& client);
+
+ XmlRpcValue call (std::string method_name, XmlRpcValue param_array);
+ void call_asynch (std::string method_name,
+ XmlRpcValue param_array,
+ xmlrpc_response_handler callback,
+ void* user_data);
+ void event_loop_asynch (unsigned long milliseconds);
+};
+
+inline void XmlRpcClient::call_asynch(std::string method_name,
+ XmlRpcValue param_array,
+ xmlrpc_response_handler callback,
+ void* user_data)
+{
+ xmlrpc_client_call_asynch_params(
+ mServerUrl.c_str(),
+ method_name.c_str(),
+ callback,
+ user_data,
+ param_array.borrowReference());
+}
+
+inline void XmlRpcClient::event_loop_asynch(unsigned long milliseconds)
+{
+ xmlrpc_client_event_loop_finish_asynch_timeout(milliseconds);
+}
+
+
+//=========================================================================
+// XmlRpcClient Methods
+//=========================================================================
+// These are inline for now, so we don't need to screw with linker issues
+// and build a separate client library.
+
+inline XmlRpcClient::XmlRpcClient (const XmlRpcClient& client)
+ : mServerUrl(client.mServerUrl)
+{
+}
+
+inline XmlRpcClient& XmlRpcClient::operator= (const XmlRpcClient& client) {
+ if (this != &client)
+ mServerUrl = client.mServerUrl;
+ return *this;
+}
+
+inline void XmlRpcClient::Initialize (std::string appname,
+ std::string appversion) {
+ xmlrpc_client_init(XMLRPC_CLIENT_NO_FLAGS,
+ appname.c_str(),
+ appversion.c_str());
+}
+
+inline void XmlRpcClient::Terminate (void) {
+ xmlrpc_client_cleanup();
+}
+
+inline XmlRpcValue XmlRpcClient::call (std::string method_name,
+ XmlRpcValue param_array)
+{
+ XmlRpcEnv env;
+ xmlrpc_value *result =
+ xmlrpc_client_call_params(env,
+ mServerUrl.c_str(),
+ method_name.c_str(),
+ param_array.borrowReference());
+ env.throwIfFaultOccurred();
+ return XmlRpcValue(result, XmlRpcValue::CONSUME_REFERENCE);
+}
+
+//=========================================================================
+// XmlRpcGenSrv
+//=========================================================================
+
+class XmlRpcGenSrv {
+
+private:
+
+ xmlrpc_registry* mRegistry;
+
+ xmlrpc_mem_block* alloc (XmlRpcEnv& env, const std::string& body) const;
+
+public:
+
+ XmlRpcGenSrv (int flags);
+ ~XmlRpcGenSrv (void);
+
+ xmlrpc_registry* getRegistry (void) const;
+
+ XmlRpcGenSrv& addMethod (const std::string& name,
+ xmlrpc_method method,
+ void *data);
+ XmlRpcGenSrv& addMethod (const std::string& name,
+ xmlrpc_method method,
+ void* data,
+ const std::string& signature,
+ const std::string& help);
+
+ std::string handle (const std::string& body) const;
+};
+
+inline XmlRpcGenSrv::XmlRpcGenSrv (int) {
+
+ XmlRpcEnv env;
+
+ mRegistry = xmlrpc_registry_new (env);
+ env.throwIfFaultOccurred();
+}
+
+inline XmlRpcGenSrv::~XmlRpcGenSrv (void) {
+
+ xmlrpc_registry_free (mRegistry);
+}
+
+inline xmlrpc_registry* XmlRpcGenSrv::getRegistry () const {
+
+ return mRegistry;
+}
+
+
+// Copyright (C) 2001 by Eric Kidd. 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 AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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.
+
+
+#endif /* _XMLRPCCPP_H_ */
diff --git a/vendor/voclient/include/xmlrpc-c/oldxmlrpc.h b/vendor/voclient/include/xmlrpc-c/oldxmlrpc.h
new file mode 100644
index 00000000..2a5d3bf4
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc-c/oldxmlrpc.h
@@ -0,0 +1,2 @@
+#include <xmlrpc-c/base.h>
+#include <xmlrpc-c/server.h>
diff --git a/vendor/voclient/include/xmlrpc-c/packetsocket.hpp b/vendor/voclient/include/xmlrpc-c/packetsocket.hpp
new file mode 100644
index 00000000..64b72215
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc-c/packetsocket.hpp
@@ -0,0 +1,165 @@
+#ifndef PACKETSOCKET_HPP_INCLUDED
+#define PACKETSOCKET_HPP_INCLUDED
+
+/*============================================================================
+ packetsocket
+==============================================================================
+ This is a facility for communicating socket-style, with defined
+ packets like a datagram socket but with reliable delivery like a
+ stream socket. It's like a POSIX "sequential packet" socket, except
+ it is built on top of a stream socket, so it is usable on the many
+ systems that have stream sockets but not sequential packet sockets.
+============================================================================*/
+
+#include <sys/types.h>
+#include <string>
+#include <queue>
+
+#include <xmlrpc-c/girmem.hpp>
+
+namespace xmlrpc_c {
+
+class packet : public girmem::autoObject {
+
+public:
+ packet();
+
+ packet(const unsigned char * const data,
+ size_t const dataLength);
+
+ packet(const char * const data,
+ size_t const dataLength);
+
+ ~packet();
+
+ unsigned char *
+ getBytes() const { return this->bytes; }
+
+ size_t
+ getLength() const { return this->length; }
+
+ void
+ addData(const unsigned char * const data,
+ size_t const dataLength);
+
+private:
+ unsigned char * bytes; // malloc'ed
+ size_t length;
+ size_t allocSize;
+
+ void
+ initialize(const unsigned char * const data,
+ size_t const dataLength);
+};
+
+
+
+class packetPtr: public girmem::autoObjectPtr {
+
+public:
+ packetPtr();
+
+ explicit packetPtr(packet * const packetP);
+
+ packet *
+ operator->() const;
+};
+
+
+
+class packetSocket {
+/*----------------------------------------------------------------------------
+ This is an Internet communication vehicle that transmits individual
+ variable-length packets of text.
+
+ It is based on a stream socket.
+
+ It would be much better to use a kernel SOCK_SEQPACKET socket, but
+ Linux 2.4 does not have them.
+-----------------------------------------------------------------------------*/
+public:
+ packetSocket(int sockFd);
+
+ ~packetSocket();
+
+ void
+ writeWait(packetPtr const& packetPtr) const;
+
+ void
+ read(bool * const eofP,
+ bool * const gotPacketP,
+ packetPtr * const packetPP);
+
+ void
+ readWait(volatile const int * const interruptP,
+ bool * const eofP,
+ bool * const gotPacketP,
+ packetPtr * const packetPP);
+
+ void
+ readWait(volatile const int * const interruptP,
+ bool * const eofP,
+ packetPtr * const packetPP);
+
+ void
+ readWait(bool * const eofP,
+ packetPtr * const packetPP);
+
+private:
+ int sockFd;
+ // The kernel stream socket we use.
+ bool eof;
+ // The packet socket is at end-of-file for reads.
+ // 'readBuffer' is empty and there won't be any more data to fill
+ // it because the underlying stream socket is closed.
+ std::queue<packetPtr> readBuffer;
+ packetPtr packetAccumP;
+ // The receive packet we're currently accumulating; it will join
+ // 'readBuffer' when we've received the whole packet (and we've
+ // seen the END escape sequence so we know we've received it all).
+ // If we're not currently accumulating a packet (haven't seen a
+ // PKT escape sequence), this points to nothing.
+ bool inEscapeSeq;
+ // In our trek through the data read from the underlying stream
+ // socket, we are after an ESC character and before the end of the
+ // escape sequence. 'escAccum' shows what of the escape sequence
+ // we've seen so far.
+ bool inPacket;
+ // We're now receiving packet data from the underlying stream
+ // socket. We've seen a complete PKT escape sequence, but have not
+ // seen a complete END escape sequence since.
+ struct {
+ unsigned char bytes[3];
+ size_t len;
+ } escAccum;
+
+ void
+ bufferFinishedPacket();
+
+ void
+ takeSomeEscapeSeq(const unsigned char * const buffer,
+ size_t const length,
+ size_t * const bytesTakenP);
+
+ void
+ takeSomePacket(const unsigned char * const buffer,
+ size_t const length,
+ size_t * const bytesTakenP);
+
+ void
+ verifyNothingAccumulated();
+
+ void
+ processBytesRead(const unsigned char * const buffer,
+ size_t const bytesRead);
+
+ void
+ readFromFile();
+
+};
+
+
+
+} // namespace
+
+#endif
diff --git a/vendor/voclient/include/xmlrpc-c/registry.hpp b/vendor/voclient/include/xmlrpc-c/registry.hpp
new file mode 100644
index 00000000..1182b864
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc-c/registry.hpp
@@ -0,0 +1,189 @@
+#ifndef REGISTRY_HPP_INCLUDED
+#define REGISTRY_HPP_INCLUDED
+
+#include <string>
+#include <vector>
+#include <list>
+
+#include <xmlrpc-c/server.h>
+#include <xmlrpc-c/girmem.hpp>
+#include <xmlrpc-c/base.hpp>
+
+namespace xmlrpc_c {
+
+
+class method : public girmem::autoObject {
+/*----------------------------------------------------------------------------
+ An XML-RPC method.
+
+ This base class is abstract. You can't create an object in it.
+ Define a useful method with this as a base class, with an
+ execute() method.
+-----------------------------------------------------------------------------*/
+public:
+ method();
+
+ virtual ~method();
+
+ virtual void
+ execute(xmlrpc_c::paramList const& paramList,
+ xmlrpc_c::value * const resultP) = 0;
+
+ std::string signature() const { return _signature; };
+ std::string help() const { return _help; };
+
+protected:
+ std::string _signature;
+ std::string _help;
+};
+
+/* Example of a specific method class:
+
+ class sample_add : public xmlrpc_c::method {
+ public:
+ sample_add() {
+ this->_signature = "ii";
+ this->_help = "This method adds two integers together";
+ }
+ void
+ execute(xmlrpc_c::param_list const paramList,
+ const xmlrpc_c::value * const retvalP) {
+
+ int const addend(paramList.getInt(0));
+ int const adder(paramList.getInt(1));
+
+ *retvalP = xmlrpc_c::value(addend, adder);
+ }
+ };
+
+
+ Example of creating such a method:
+
+ methodPtr const sampleAddMethodP(new sample_add);
+
+ You pass around, copy, etc. the handle sampleAddMethodP and when
+ the last copy of the handle is gone, the sample_add object itself
+ gets deleted.
+
+*/
+
+
+class methodPtr : public girmem::autoObjectPtr {
+
+public:
+ methodPtr(xmlrpc_c::method * const methodP);
+
+ xmlrpc_c::method *
+ operator->() const;
+};
+
+class defaultMethod : public girmem::autoObject {
+
+public:
+ virtual ~defaultMethod();
+
+ virtual void
+ execute(std::string const& methodName,
+ xmlrpc_c::paramList const& paramList,
+ xmlrpc_c::value * const resultP) = 0;
+};
+
+class defaultMethodPtr : public girmem::autoObjectPtr {
+
+public:
+ defaultMethodPtr();
+
+ defaultMethodPtr(xmlrpc_c::defaultMethod * const methodP);
+
+ xmlrpc_c::defaultMethod *
+ operator->() const;
+
+ xmlrpc_c::defaultMethod *
+ get() const;
+};
+
+
+
+class registry : public girmem::autoObject {
+/*----------------------------------------------------------------------------
+ An Xmlrpc-c server method registry. An Xmlrpc-c server transport
+ (e.g. an HTTP server) uses this object to process an incoming
+ Xmlrpc-c call.
+-----------------------------------------------------------------------------*/
+
+public:
+
+ registry();
+ ~registry();
+
+ void
+ addMethod(std::string const name,
+ xmlrpc_c::methodPtr const methodP);
+
+ void
+ setDefaultMethod(xmlrpc_c::defaultMethodPtr const methodP);
+
+ void
+ disableIntrospection();
+
+ class shutdown {
+ public:
+ virtual ~shutdown() = 0;
+ virtual void
+ doit(std::string const& comment,
+ void * const callInfo) const = 0;
+ };
+
+ void
+ setShutdown(const shutdown * const shutdownP);
+
+ void
+ setDialect(xmlrpc_dialect const dialect);
+
+ void
+ processCall(std::string const& body,
+ std::string * const responseP) const;
+
+ xmlrpc_registry *
+ c_registry() const;
+ /* This is meant to be private except to other objects in the
+ Xmlrpc-c library.
+ */
+
+private:
+
+ xmlrpc_registry * c_registryP;
+ // Pointer to the C registry object we use to implement this
+ // object.
+
+ std::list<xmlrpc_c::methodPtr> methodList;
+ // This is a list of all the method objects (actually, pointers
+ // to them). But since the real registry is the C registry object,
+ // all this list is for is to maintain references to the objects
+ // to which the C registry points so that they continue to exist.
+
+ xmlrpc_c::defaultMethodPtr defaultMethodP;
+ // The real identifier of the default method is the C registry
+ // object; this member exists only to maintain a reference to the
+ // object to which the C registry points so that it will continue
+ // to exist.
+};
+
+
+class registryPtr : public girmem::autoObjectPtr {
+
+public:
+ registryPtr();
+
+ registryPtr(xmlrpc_c::registry * const registryP);
+
+ xmlrpc_c::registry *
+ operator->() const;
+
+ xmlrpc_c::registry *
+ get() const;
+};
+
+} // namespace
+
+#endif
diff --git a/vendor/voclient/include/xmlrpc-c/server.h b/vendor/voclient/include/xmlrpc-c/server.h
new file mode 100644
index 00000000..28773c61
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc-c/server.h
@@ -0,0 +1,173 @@
+/* Copyright and license information is at the end of the file */
+
+#ifndef XMLRPC_SERVER_H_INCLUDED
+#define XMLRPC_SERVER_H_INCLUDED
+
+#include <xmlrpc-c/base.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct xmlrpc_registry xmlrpc_registry;
+
+typedef void
+(*xmlrpc_preinvoke_method)(xmlrpc_env * const envP,
+ const char * const methodName,
+ xmlrpc_value * const paramArrayP,
+ void * const userData);
+
+typedef xmlrpc_value *
+(*xmlrpc_method1)(xmlrpc_env * const envP,
+ xmlrpc_value * const paramArrayP,
+ void * const serverInfo);
+
+typedef xmlrpc_value *
+(*xmlrpc_method2)(xmlrpc_env * const envP,
+ xmlrpc_value * const paramArrayP,
+ void * const serverInfo,
+ void * const callInfo);
+
+typedef xmlrpc_method1 xmlrpc_method; /* backward compatibility */
+
+typedef xmlrpc_value *
+(*xmlrpc_default_method)(xmlrpc_env * const envP,
+ const char * const callInfoP,
+ const char * const methodName,
+ xmlrpc_value * const paramArrayP,
+ void * const serverInfo);
+
+extern unsigned int const xmlrpc_server_version_major;
+extern unsigned int const xmlrpc_server_version_minor;
+extern unsigned int const xmlrpc_server_version_point;
+
+xmlrpc_registry *
+xmlrpc_registry_new(xmlrpc_env * const envP);
+
+void
+xmlrpc_registry_free(xmlrpc_registry * const registryP);
+
+void
+xmlrpc_registry_disable_introspection(xmlrpc_registry * const registryP);
+
+void
+xmlrpc_registry_add_method(xmlrpc_env * const envP,
+ xmlrpc_registry * const registryP,
+ const char * const host,
+ const char * const methodName,
+ xmlrpc_method const method,
+ void * const serverInfo);
+
+void
+xmlrpc_registry_add_method_w_doc(xmlrpc_env * const envP,
+ xmlrpc_registry * const registryP,
+ const char * const host,
+ const char * const methodName,
+ xmlrpc_method const method,
+ void * const serverInfo,
+ const char * const signatureString,
+ const char * const help);
+
+void
+xmlrpc_registry_add_method2(xmlrpc_env * const envP,
+ xmlrpc_registry * const registryP,
+ const char * const methodName,
+ xmlrpc_method2 method,
+ const char * const signatureString,
+ const char * const help,
+ void * const serverInfo);
+
+struct xmlrpc_method_info3 {
+ const char * methodName;
+ xmlrpc_method2 methodFunction;
+ void * serverInfo;
+ size_t stackSize;
+ const char * signatureString;
+ const char * help;
+};
+
+void
+xmlrpc_registry_add_method3(
+ xmlrpc_env * const envP,
+ xmlrpc_registry * const registryP,
+ const struct xmlrpc_method_info3 * const infoP);
+
+void
+xmlrpc_registry_set_default_method(xmlrpc_env * const envP,
+ xmlrpc_registry * const registryP,
+ xmlrpc_default_method const handler,
+ void * const userData);
+
+void
+xmlrpc_registry_set_preinvoke_method(xmlrpc_env * const envP,
+ xmlrpc_registry * const registryP,
+ xmlrpc_preinvoke_method const method,
+ void * const userData);
+
+
+typedef void xmlrpc_server_shutdown_fn(xmlrpc_env * const envP,
+ void * const context,
+ const char * const comment,
+ void * const callInfo);
+
+void
+xmlrpc_registry_set_shutdown(xmlrpc_registry * const registryP,
+ xmlrpc_server_shutdown_fn * const shutdownFn,
+ void * const context);
+
+void
+xmlrpc_registry_set_dialect(xmlrpc_env * const envP,
+ xmlrpc_registry * const registryP,
+ xmlrpc_dialect const dialect);
+
+/*----------------------------------------------------------------------------
+ Lower interface -- services to be used by an HTTP request handler
+-----------------------------------------------------------------------------*/
+
+void
+xmlrpc_registry_process_call2(xmlrpc_env * const envP,
+ xmlrpc_registry * const registryP,
+ const char * const xmlData,
+ size_t const xmlLen,
+ void * const callInfo,
+ xmlrpc_mem_block ** const outputPP);
+
+xmlrpc_mem_block *
+xmlrpc_registry_process_call(xmlrpc_env * const envP,
+ xmlrpc_registry * const registryP,
+ const char * const host,
+ const char * const xmlData,
+ size_t const xmlLen);
+
+size_t
+xmlrpc_registry_max_stackSize(xmlrpc_registry * const registryP);
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Copyright (C) 2001 by First Peer, Inc. 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 AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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. */
+#endif
diff --git a/vendor/voclient/include/xmlrpc-c/server_abyss.h b/vendor/voclient/include/xmlrpc-c/server_abyss.h
new file mode 100644
index 00000000..975fa0ee
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc-c/server_abyss.h
@@ -0,0 +1,276 @@
+/*============================================================================
+ server_abyss.h
+==============================================================================
+ This declares the user interface to libxmlrpc_server_abyss, which
+ provides facilities for running an XML-RPC server based on the Xmlrpc-c
+ Abyss HTTP server.
+============================================================================*/
+
+/* Copyright and license information is at the end of the file */
+
+#ifndef XMLRPC_SERVER_ABYSS_H_INCLUDED
+#define XMLRPC_SERVER_ABYSS_H_INCLUDED
+
+#ifdef WIN32
+#include <winsock.h> /* For XMLRPC_SOCKET (= SOCKET) */
+#endif
+
+#include <xmlrpc-c/config.h> /* For XMLRPC_SOCKET */
+#include <xmlrpc-c/abyss.h>
+#include <xmlrpc-c/server.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#define XMLRPC_SERVER_ABYSS_NO_FLAGS (0)
+
+
+/*=========================================================================
+** Global Initialization/Termination.
+**
+** These are not thread-safe. You call them at the beginning and end
+** of your program, when it is only one thread.
+**=======================================================================*/
+
+void
+xmlrpc_server_abyss_global_init(xmlrpc_env * const envP);
+
+void
+xmlrpc_server_abyss_global_term(void);
+
+/*=========================================================================
+** Basic Abyss Server Functions
+**=======================================================================*/
+
+typedef void ((*runfirstFn)(void *));
+
+typedef struct {
+ const char * config_file_name;
+ /* NULL to use preferred proper API-level interface */
+
+ xmlrpc_registry * registryP;
+
+ /* runfirstFn and runfirst_arg are meaningless when
+ config_file_name is NULL
+ */
+ runfirstFn runfirst;
+ void * runfirst_arg;
+
+ unsigned int port_number;
+ const char * log_file_name;
+ unsigned int keepalive_timeout;
+ unsigned int keepalive_max_conn;
+ unsigned int timeout;
+ xmlrpc_bool dont_advertise;
+ xmlrpc_bool socket_bound;
+ XMLRPC_SOCKET socket_handle;
+ const char * uri_path;
+ xmlrpc_bool chunk_response;
+ xmlrpc_bool enable_shutdown;
+} xmlrpc_server_abyss_parms;
+
+
+#define XMLRPC_APSIZE(MBRNAME) \
+ XMLRPC_STRUCTSIZE(xmlrpc_server_abyss_parms, MBRNAME)
+
+/* XMLRPC_APSIZE(xyz) is the minimum size a struct xmlrpc_server_abyss_parms
+ must be to include the 'xyz' member. This is essential to forward and
+ backward compatibility, as new members will be added to the end of the
+ struct in future releases. This is how the callee knows whether or
+ not the caller is new enough to have supplied a certain parameter.
+*/
+
+/*=========================================================================
+** Simple server with Abyss under the covers
+**=======================================================================*/
+
+void
+xmlrpc_server_abyss(xmlrpc_env * const envP,
+ const xmlrpc_server_abyss_parms * const parms,
+ unsigned int const parm_size);
+
+/*=========================================================================
+** Object-oriented XML-RPC server with Abyss under the covers
+**=======================================================================*/
+
+typedef struct xmlrpc_server_abyss xmlrpc_server_abyss_t;
+
+void
+xmlrpc_server_abyss_create(xmlrpc_env * const envP,
+ const xmlrpc_server_abyss_parms * const parmsP,
+ unsigned int const parmSize,
+ xmlrpc_server_abyss_t ** const serverPP);
+
+void
+xmlrpc_server_abyss_destroy(xmlrpc_server_abyss_t * const serverP);
+
+void
+xmlrpc_server_abyss_run_server(xmlrpc_env * const envP,
+ xmlrpc_server_abyss_t * const serverP);
+
+void
+xmlrpc_server_abyss_terminate(xmlrpc_env * const envP,
+ xmlrpc_server_abyss_t * const serverP);
+
+void
+xmlrpc_server_abyss_reset_terminate(xmlrpc_env * const envP,
+ xmlrpc_server_abyss_t * const serverP);
+
+void
+xmlrpc_server_abyss_use_sigchld(xmlrpc_server_abyss_t * const serverP);
+
+
+typedef struct xmlrpc_server_abyss_sig xmlrpc_server_abyss_sig;
+
+void
+xmlrpc_server_abyss_setup_sig(
+ xmlrpc_env * const envP,
+ xmlrpc_server_abyss_t * const serverP,
+ xmlrpc_server_abyss_sig ** const oldHandlersPP);
+
+void
+xmlrpc_server_abyss_restore_sig(
+ const xmlrpc_server_abyss_sig * const oldHandlersP);
+
+
+
+/*=========================================================================
+** Functions to make an XML-RPC server out of your own Abyss server
+**=======================================================================*/
+
+void
+xmlrpc_server_abyss_set_handlers2(TServer * const srvP,
+ const char * const filename,
+ xmlrpc_registry * const registryP);
+
+void
+xmlrpc_server_abyss_set_handlers(TServer * const serverP,
+ xmlrpc_registry * const registryP);
+
+void
+xmlrpc_server_abyss_set_handler(xmlrpc_env * const envP,
+ TServer * const serverP,
+ const char * const filename,
+ xmlrpc_registry * const registryP);
+
+/*=========================================================================
+** Handy Abyss Extensions
+**=======================================================================*/
+
+/* These are functions that have nothing to do with Xmlrpc-c, but provide
+ convenient Abyss services beyond those provided by the Abyss library.
+*/
+
+/* Start an Abyss webserver running (previously created and
+** initialized). Under Unix, this routine will attempt to do a
+** detaching fork, drop root privileges (if any) and create a pid
+** file. Under Windows, this routine merely starts the server. This
+** routine never returns.
+**
+** Once you call this routine, it is illegal to modify the server any
+** more, including changing any method registry.
+*/
+void
+xmlrpc_server_abyss_run(void);
+
+/* Same as xmlrpc_server_abyss_run(), except you get to specify a "runfirst"
+** function. The server runs this just before executing the actual server
+** function, after any daemonizing. NULL for 'runfirst' means no runfirst
+** function. 'runfirstArg' is the argument the server passes to the runfirst
+** function.
+**/
+void
+xmlrpc_server_abyss_run_first(runfirstFn const runfirst,
+ void * const runfirstArg);
+
+/*=========================================================================
+** Method Registry
+**=========================================================================
+ These functions are for the built-in xmlrpc_server_abyss registry.
+ It's usually simpler to skip all this and use the regular method
+ registry services (from xmlrpc_server.h) to build a registry and
+ pass it to xmlrpc_server_abyss.
+*/
+
+/* Call this function to create a new Abyss webserver with the default
+** options and the built-in method registry. If you've already
+** initialized Abyss using Abyss functions, you can instead call
+** xmlrpc_server_abyss_init_registry() to make it an Xmlrpc-c server.
+** Or use a regular method registry and call
+** xmlrpc_server_abyss_set_handlers().
+**/
+void
+xmlrpc_server_abyss_init(int const flags,
+ const char * const config_file);
+
+/* This is called automatically by xmlrpc_server_abyss_init. */
+void xmlrpc_server_abyss_init_registry (void);
+
+/* Fetch the internal registry, if you happen to need it.
+ If you're using this, you really shouldn't be using the built-in
+ registry at all. It exists today only for backward compatibilty.
+*/
+extern xmlrpc_registry *
+xmlrpc_server_abyss_registry (void);
+
+/* A quick & easy shorthand for adding a method. Depending on
+** how you've configured your copy of Abyss, it's probably not safe to
+** call this method after calling xmlrpc_server_abyss_run. */
+void xmlrpc_server_abyss_add_method (char * const method_name,
+ xmlrpc_method const method,
+ void * const user_data);
+
+/* As above, but provide documentation (see xmlrpc_registry_add_method_w_doc
+** for more information). You should really use this one. */
+extern void
+xmlrpc_server_abyss_add_method_w_doc (char * const method_name,
+ xmlrpc_method const method,
+ void * const user_data,
+ char * const signature,
+ char * const help);
+
+/*=========================================================================
+** Content Handlers
+**=======================================================================*/
+/* Abyss contents handlers xmlrpc_server_abyss_rpc2_handler()
+ and xmlrpc_server_abyss_default_handler() were available in older
+ Xmlrpc-c, but starting with Release 1.01, they are not. Instead,
+ call xmlrpc_server_abyss_set_handlers() to install them.
+
+ Alternatively, you can write your own handlers that do the same thing.
+ It's not hard, and if you're writing low enough level Abyss code that
+ you can't use xmlrpc_server_abyss_set_handlers(), you probably want to
+ anyway.
+*/
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+/* Copyright (C) 2001 by First Peer, Inc. 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 AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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. */
+
+#endif
diff --git a/vendor/voclient/include/xmlrpc-c/server_abyss.hpp b/vendor/voclient/include/xmlrpc-c/server_abyss.hpp
new file mode 100644
index 00000000..1ff9043e
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc-c/server_abyss.hpp
@@ -0,0 +1,134 @@
+#ifndef SERVER_ABYSS_HPP_INCLUDED
+#define SERVER_ABYSS_HPP_INCLUDED
+
+#ifdef WIN32
+#include <winsock.h> // For XMLRPC_SOCKET (= SOCKET)
+#endif
+
+#include "xmlrpc-c/config.h" // For XMLRPC_SOCKET
+#include "xmlrpc-c/base.hpp"
+#include "abyss.h"
+
+namespace xmlrpc_c {
+
+class serverAbyss {
+
+public:
+ class constrOpt {
+ public:
+ constrOpt();
+
+ constrOpt & registryPtr (xmlrpc_c::registryPtr const& arg);
+ constrOpt & registryP (const xmlrpc_c::registry * const& arg);
+ constrOpt & socketFd (XMLRPC_SOCKET const& arg);
+ constrOpt & portNumber (unsigned int const& arg);
+ constrOpt & logFileName (std::string const& arg);
+ constrOpt & keepaliveTimeout (unsigned int const& arg);
+ constrOpt & keepaliveMaxConn (unsigned int const& arg);
+ constrOpt & timeout (unsigned int const& arg);
+ constrOpt & dontAdvertise (bool const& arg);
+ constrOpt & uriPath (std::string const& arg);
+ constrOpt & chunkResponse (bool const& arg);
+
+ struct value {
+ xmlrpc_c::registryPtr registryPtr;
+ const xmlrpc_c::registry * registryP;
+ XMLRPC_SOCKET socketFd;
+ unsigned int portNumber;
+ std::string logFileName;
+ unsigned int keepaliveTimeout;
+ unsigned int keepaliveMaxConn;
+ unsigned int timeout;
+ bool dontAdvertise;
+ std::string uriPath;
+ bool chunkResponse;
+ } value;
+ struct {
+ bool registryPtr;
+ bool registryP;
+ bool socketFd;
+ bool portNumber;
+ bool logFileName;
+ bool keepaliveTimeout;
+ bool keepaliveMaxConn;
+ bool timeout;
+ bool dontAdvertise;
+ bool uriPath;
+ bool chunkResponse;
+ } present;
+ };
+
+ serverAbyss(constrOpt const& opt);
+
+ serverAbyss(
+ xmlrpc_c::registry const& registry,
+ unsigned int const portNumber = 8080,
+ std::string const& logFileName = "",
+ unsigned int const keepaliveTimeout = 0,
+ unsigned int const keepaliveMaxConn = 0,
+ unsigned int const timeout = 0,
+ bool const dontAdvertise = false,
+ bool const socketBound = false,
+ XMLRPC_SOCKET const socketFd = 0
+ );
+ ~serverAbyss();
+
+ void
+ run();
+
+ void
+ runOnce();
+
+ void
+ runConn(int const socketFd);
+
+ void
+ terminate();
+
+ class shutdown : public xmlrpc_c::registry::shutdown {
+ public:
+ shutdown(xmlrpc_c::serverAbyss * const severAbyssP);
+ virtual ~shutdown();
+ void doit(std::string const& comment, void * const callInfo) const;
+ private:
+ xmlrpc_c::serverAbyss * const serverAbyssP;
+ };
+
+private:
+ // The user has the choice of supplying the registry by plain pointer
+ // (and managing the object's existence himself) or by autoObjectPtr
+ // (with automatic management). 'registryPtr' exists here only to
+ // maintain a reference count in the case that the user supplied an
+ // autoObjectPtr. The object doesn't reference the C++ registry
+ // object except during construction, because the C registry is the
+ // real registry.
+ xmlrpc_c::registryPtr registryPtr;
+
+ TServer cServer;
+
+ void
+ setAdditionalServerParms(constrOpt const& opt);
+
+ void
+ initialize(constrOpt const& opt);
+};
+
+
+void
+server_abyss_set_handlers(TServer * const srvP,
+ xmlrpc_c::registry const& registry,
+ std::string const& uriPath = "/RPC2");
+
+void
+server_abyss_set_handlers(TServer * const srvP,
+ const xmlrpc_c::registry * const registryP,
+ std::string const& uriPath = "/RPC2");
+
+void
+server_abyss_set_handlers(TServer * const srvP,
+ xmlrpc_c::registryPtr const registryPtr,
+ std::string const& uriPath = "/RPC2");
+
+} // namespace
+
+#endif
diff --git a/vendor/voclient/include/xmlrpc-c/server_cgi.h b/vendor/voclient/include/xmlrpc-c/server_cgi.h
new file mode 100644
index 00000000..ad926aa3
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc-c/server_cgi.h
@@ -0,0 +1,49 @@
+/* Interface header file for libxmlrpc_server_cgi.
+
+ By Bryan Henderson, 05.04.27. Contributed to the public domain.
+*/
+
+#ifndef XMLRPC_CGI_H_INCLUDED
+#define XMLRPC_CGI_H_INCLUDED
+
+#include <xmlrpc-c/server.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+void
+xmlrpc_server_cgi_process_call(xmlrpc_registry * const registryP);
+
+#define XMLRPC_CGI_NO_FLAGS (0)
+
+extern void
+xmlrpc_cgi_init (int flags);
+
+extern xmlrpc_registry *
+xmlrpc_cgi_registry (void);
+
+void
+xmlrpc_cgi_add_method(const char * const method_name,
+ xmlrpc_method const method,
+ void * const user_data);
+
+void
+xmlrpc_cgi_add_method_w_doc(const char * const method_name,
+ xmlrpc_method const method,
+ void * const user_data,
+ const char * const signature,
+ const char * const help);
+extern void
+xmlrpc_cgi_process_call (void);
+
+extern void
+xmlrpc_cgi_cleanup (void);
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/vendor/voclient/include/xmlrpc-c/server_pstream.hpp b/vendor/voclient/include/xmlrpc-c/server_pstream.hpp
new file mode 100644
index 00000000..b542532a
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc-c/server_pstream.hpp
@@ -0,0 +1,75 @@
+#ifndef SERVER_PSTREAM_HPP_INCLUDED
+#define SERVER_PSTREAM_HPP_INCLUDED
+
+#ifdef WIN32
+#include <winsock.h> /* For XMLRPC_SOCKET (= SOCKET) */
+#endif
+
+#include <xmlrpc-c/config.h> /* For XMLRPC_SOCKET */
+#include <xmlrpc-c/registry.hpp>
+#include <xmlrpc-c/packetsocket.hpp>
+
+namespace xmlrpc_c {
+
+class serverPstreamConn {
+
+public:
+
+ class constrOpt {
+ public:
+ constrOpt();
+
+ constrOpt & registryPtr (xmlrpc_c::registryPtr const& arg);
+ constrOpt & registryP (const xmlrpc_c::registry * const& arg);
+ constrOpt & socketFd (XMLRPC_SOCKET const& arg);
+
+ struct value {
+ xmlrpc_c::registryPtr registryPtr;
+ const xmlrpc_c::registry * registryP;
+ XMLRPC_SOCKET socketFd;
+ } value;
+ struct {
+ bool registryPtr;
+ bool registryP;
+ bool socketFd;
+ } present;
+ };
+
+ serverPstreamConn(constrOpt const& opt);
+
+ ~serverPstreamConn();
+
+ void
+ runOnce(volatile const int * const interruptP,
+ bool * const eofP);
+
+ void
+ runOnce(bool * const eofP);
+
+private:
+
+ // 'registryP' is what we actually use; 'registryHolder' just holds a
+ // reference to 'registryP' so the registry doesn't disappear while
+ // this server exists. But note that if the creator doesn't supply
+ // a registryPtr, 'registryHolder' is just a placeholder variable and
+ // the creator is responsible for making sure the registry doesn't
+ // go anywhere while the server exists.
+
+ registryPtr registryHolder;
+ const registry * registryP;
+
+ packetSocket * packetSocketP;
+ // The packet socket over which we received RPCs.
+ // This is permanently connected to our fixed client.
+
+ void
+ establishRegistry(constrOpt const& opt);
+
+ void
+ establishPacketSocket(constrOpt const& opt);
+};
+
+
+} // namespace
+
+#endif
diff --git a/vendor/voclient/include/xmlrpc-c/server_w32httpsys.h b/vendor/voclient/include/xmlrpc-c/server_w32httpsys.h
new file mode 100644
index 00000000..085f6e30
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc-c/server_w32httpsys.h
@@ -0,0 +1,95 @@
+/* Copyright (C) 2005 by Steven A. Bone, sbone@pobox.com. 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 AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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. */
+
+/* COMPILATION NOTE:
+ Note that the Platform SDK headers and
+ link libraries for Windows XP SP2 or newer are required to compile
+ xmlrpc-c for this module. If you are not using this server, it is
+ safe to exclude the xmlrpc_server_w32httpsys.c file from the xmlrpc
+ project and these dependencies will not be required. You can get the
+ latest platform SDK at
+ http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
+ Be sure after installation to choose the program to "register the PSDK
+ directories with Visual Studio" so the newer headers are found.
+*/
+
+#ifndef _XMLRPC_SERVER_HTTPSYS_H_
+#define _XMLRPC_SERVER_HTTPSYS_H_ 1
+
+#include "transport_config.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/*=========================================================================
+** XML-RPC Server (based on HTTP.SYS)
+**=========================================================================
+** A simple XML-RPC server based on the "built-in" Windows web server,
+** HTTP.SYS. This is provided by Microsoft in Windows XP SP2 and
+** Windows Server 2003. If errors occur during server setup, the server
+** will exit. In general, if you want to use this API, you do not really
+** need to be familiar with the HTTP.SYS API.
+*/
+
+typedef void (*authorization_function)(
+ xmlrpc_env * envP,
+ char * userid,
+ char * password);
+
+typedef struct {
+ xmlrpc_registry * registryP;
+ unsigned int portNum;
+ unsigned int useSSL;
+ /* useSSL, 0 = no SSL, 1 = use SSL */
+ unsigned int logLevel;
+ /* logLevel, 0 = none, 1 = file, 2 = file+OutputDebugString() */
+ const char * logFile;
+ /* logFile, NULL or filename */
+ authorization_function authfn;
+} xmlrpc_server_httpsys_parms;
+
+#define XMLRPC_HSSIZE(MBRNAME) \
+ XMLRPC_STRUCTSIZE(xmlrpc_server_httpsys_parms, MBRNAME)
+
+/* XMLRPC_HSSIZE(xyz) is the minimum size a struct xmlrpc_server_httpsys_parms
+ must be to include the 'xyz' member. This is essential for forward and
+ backward compatbility, as new members will be added to the end of the
+ struct in future releases. This is how the callee knows whether or
+ not the caller is new enough to have supplied a certain parameter.
+*/
+
+void
+xmlrpc_server_httpsys(
+ xmlrpc_env * const envP,
+ const xmlrpc_server_httpsys_parms * const parmsP,
+ unsigned int const parm_size
+ );
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif \ No newline at end of file
diff --git a/vendor/voclient/include/xmlrpc-c/timeout.hpp b/vendor/voclient/include/xmlrpc-c/timeout.hpp
new file mode 100644
index 00000000..8d0c2d6b
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc-c/timeout.hpp
@@ -0,0 +1,21 @@
+#ifndef XMLRPC_TIMEOUT_H_INCLUDED
+#define XMLRPC_TIMEOUT_H_INCLUDED
+
+namespace xmlrpc_c {
+
+struct timeout {
+
+ timeout() : finite(false) {}
+
+ timeout(unsigned int const duration) :
+ finite(true), duration(duration) {}
+ // 'duration' is the timeout time in milliseconds
+
+ bool finite;
+ unsigned int duration; // in milliseconds
+};
+
+
+} // namespace
+
+#endif
diff --git a/vendor/voclient/include/xmlrpc-c/transport.h b/vendor/voclient/include/xmlrpc-c/transport.h
new file mode 100644
index 00000000..13d901ff
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc-c/transport.h
@@ -0,0 +1,86 @@
+/* Copyright information is at the end of the file */
+#ifndef XMLRPC_TRANSPORT_H_INCLUDED
+#define XMLRPC_TRANSPORT_H_INCLUDED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <xmlrpc-c/util.h>
+#include <xmlrpc-c/client.h>
+
+struct xmlrpc_call_info;
+
+struct xmlrpc_client_transport;
+
+/*=========================================================================
+** Transport function type declarations.
+**=========================================================================
+*/
+typedef void (*xmlrpc_transport_setup)(xmlrpc_env * const envP);
+
+typedef void (*xmlrpc_transport_teardown)(void);
+
+typedef void (*xmlrpc_transport_create)(
+ xmlrpc_env * const envP,
+ int const flags,
+ const char * const appname,
+ const char * const appversion,
+ const void * const transportparmsP,
+ size_t const transportparm_size,
+ struct xmlrpc_client_transport ** const handlePP);
+
+typedef void (*xmlrpc_transport_destroy)(
+ struct xmlrpc_client_transport * const clientTransportP);
+
+typedef void (*xmlrpc_transport_asynch_complete)(
+ struct xmlrpc_call_info * const callInfoP,
+ xmlrpc_mem_block * const responseXmlP,
+ xmlrpc_env const env);
+
+typedef void (*xmlrpc_transport_send_request)(
+ xmlrpc_env * const envP,
+ struct xmlrpc_client_transport * const clientTransportP,
+ const xmlrpc_server_info * const serverP,
+ xmlrpc_mem_block * const xmlP,
+ xmlrpc_transport_asynch_complete complete,
+ struct xmlrpc_call_info * const callInfoP);
+
+typedef void (*xmlrpc_transport_call)(
+ xmlrpc_env * const envP,
+ struct xmlrpc_client_transport * const clientTransportP,
+ const xmlrpc_server_info * const serverP,
+ xmlrpc_mem_block * const xmlP,
+ xmlrpc_mem_block ** const responsePP);
+
+typedef enum {timeout_no, timeout_yes} xmlrpc_timeoutType;
+
+typedef unsigned long xmlrpc_timeout;
+ /* A timeout in milliseconds. */
+
+typedef void (*xmlrpc_transport_finish_asynch)(
+ struct xmlrpc_client_transport * const clientTransportP,
+ xmlrpc_timeoutType const timeoutType,
+ xmlrpc_timeout const timeout);
+
+typedef void (*xmlrpc_transport_set_interrupt)(
+ struct xmlrpc_client_transport * const clientTransportP,
+ int * const interruptP);
+
+struct xmlrpc_client_transport_ops {
+
+ xmlrpc_transport_setup setup_global_const;
+ xmlrpc_transport_teardown teardown_global_const;
+ xmlrpc_transport_create create;
+ xmlrpc_transport_destroy destroy;
+ xmlrpc_transport_send_request send_request;
+ xmlrpc_transport_call call;
+ xmlrpc_transport_finish_asynch finish_asynch;
+ xmlrpc_transport_set_interrupt set_interrupt;
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/vendor/voclient/include/xmlrpc-c/util.h b/vendor/voclient/include/xmlrpc-c/util.h
new file mode 100644
index 00000000..5b6e4f59
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc-c/util.h
@@ -0,0 +1,328 @@
+/*=============================================================================
+ xmlrpc-c/util.h
+===============================================================================
+
+ This is the interface to the libxmlrpc_util library, which contains
+ utility routines that have nothing to do with XML-RPC. The library
+ exists because other Xmlrpc-c libraries use the utilities.
+
+ By Bryan Henderson, San Jose, CA 05.09.21.
+
+ Contributed to the public domain by its author.
+=============================================================================*/
+
+#ifndef XMLRPC_C_UTIL_H_INCLUDED
+#define XMLRPC_C_UTIL_H_INCLUDED
+
+#include <sys/types.h>
+#include <stdarg.h>
+
+#include <xmlrpc-c/config.h> /* Defines XMLRPC_HAVE_WCHAR */
+#include <xmlrpc-c/c_util.h> /* for GNU_PRINTF_ATTR */
+
+#if XMLRPC_HAVE_WCHAR
+#include <wchar.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/*=========================================================================
+** C struct size computations
+**=======================================================================*/
+
+/* Use XMLRPC_STRUCT_MEMBER_SIZE() to determine how big a structure is
+ up to and including a specified member. E.g. if you have
+ struct mystruct {int red; int green; int blue};, then
+ XMLRPC_STRUCT_MEMBER_SIZE(mystruct, green) is (8).
+*/
+
+#define _XMLRPC_STRUCT_MEMBER_OFFSET(TYPE, MBRNAME) \
+ ((size_t)(char*)&((TYPE *)0)->MBRNAME)
+#define _XMLRPC_STRUCT_MEMBER_SIZE(TYPE, MBRNAME) \
+ sizeof(((TYPE *)0)->MBRNAME)
+#define XMLRPC_STRUCTSIZE(TYPE, MBRNAME) \
+ (_XMLRPC_STRUCT_MEMBER_OFFSET(TYPE, MBRNAME) + \
+ _XMLRPC_STRUCT_MEMBER_SIZE(TYPE, MBRNAME))
+
+/*=========================================================================
+** Assertions and Debugging
+**=========================================================================
+** Note that an assertion is _not_ a directive to check a condition and
+** crash if it isn't true. It is an assertion that the condition _is_
+** true. This assertion helps people to read the code. The program
+** may also check the assertion as it runs, and if it conflicts with reality,
+** recognize that the program is incorrect and abort it. In practice,
+** it does this checking when the program was compiled without the NDEBUG
+** macro defined.
+*/
+
+#ifndef NDEBUG
+
+#define XMLRPC_ASSERT(cond) \
+ do \
+ if (!(cond)) \
+ xmlrpc_assertion_failed(__FILE__, __LINE__); \
+ while (0)
+
+#else
+#define XMLRPC_ASSERT(cond) while (0) {}
+#endif
+
+void
+xmlrpc_assertion_failed(const char * const fileName,
+ int const lineNumber);
+
+/* Validate a pointer. */
+#define XMLRPC_ASSERT_PTR_OK(ptr) \
+ XMLRPC_ASSERT((ptr) != NULL)
+
+
+/*=========================================================================
+** xmlrpc_env
+**=========================================================================
+** XML-RPC represents runtime errors as <fault> elements. These contain
+** <faultCode> and <faultString> elements.
+**
+** Since we need as much thread-safety as possible, we borrow an idea from
+** CORBA--we store exception information in an "environment" object.
+** You'll pass this to many different functions, and it will get filled
+** out appropriately.
+**
+** For example:
+**
+** xmlrpc_env env;
+**
+** xmlrpc_env_init(&env);
+**
+** xmlrpc_do_something(&env);
+** if (env.fault_occurred)
+** report_error_appropriately();
+**
+** xmlrpc_env_clean(&env);
+*/
+
+#define XMLRPC_INTERNAL_ERROR (-500)
+#define XMLRPC_TYPE_ERROR (-501)
+#define XMLRPC_INDEX_ERROR (-502)
+#define XMLRPC_PARSE_ERROR (-503)
+#define XMLRPC_NETWORK_ERROR (-504)
+#define XMLRPC_TIMEOUT_ERROR (-505)
+#define XMLRPC_NO_SUCH_METHOD_ERROR (-506)
+#define XMLRPC_REQUEST_REFUSED_ERROR (-507)
+#define XMLRPC_INTROSPECTION_DISABLED_ERROR (-508)
+#define XMLRPC_LIMIT_EXCEEDED_ERROR (-509)
+#define XMLRPC_INVALID_UTF8_ERROR (-510)
+
+typedef struct _xmlrpc_env {
+ int fault_occurred;
+ int fault_code;
+ char * fault_string;
+} xmlrpc_env;
+
+/* Initialize and destroy the contents of the provided xmlrpc_env object.
+** These functions will never fail. */
+void xmlrpc_env_init (xmlrpc_env* env);
+void xmlrpc_env_clean (xmlrpc_env* const env);
+
+/* Fill out an xmlrpc_fault with the specified values, and set the
+** fault_occurred flag. This function will make a private copy of 'string',
+** so you retain responsibility for your copy. */
+void
+xmlrpc_env_set_fault(xmlrpc_env * const env,
+ int const faultCode,
+ const char * const faultDescription);
+
+/* The same as the above, but using varargs */
+void
+xmlrpc_set_fault_formatted_v(xmlrpc_env * const envP,
+ int const code,
+ const char * const format,
+ va_list const args);
+
+/* The same as the above, but using a printf-style format string. */
+void
+xmlrpc_env_set_fault_formatted(xmlrpc_env * const envP,
+ int const code,
+ const char * const format,
+ ...) GNU_PRINTF_ATTR(3,4);
+
+/* This one infers XMLRPC_INTERNAL_ERROR and has a shorter name.
+ So a call takes up less source code space.
+*/
+void
+xmlrpc_faultf(xmlrpc_env * const envP,
+ const char * const format,
+ ...) GNU_PRINTF_ATTR(2,3);
+
+/* A simple debugging assertion. */
+#define XMLRPC_ASSERT_ENV_OK(envP) \
+ XMLRPC_ASSERT((envP) != NULL && \
+ (envP->fault_string == NULL) && \
+ !(envP)->fault_occurred)
+
+/* This version must *not* interpret 'str' as a format string, to avoid
+** several evil attacks. */
+#define XMLRPC_FAIL(env,code,str) \
+ do { xmlrpc_env_set_fault((env),(code),(str)); goto cleanup; } while (0)
+
+#define XMLRPC_FAIL1(env,code,str,arg1) \
+ do { \
+ xmlrpc_env_set_fault_formatted((env),(code),(str),(arg1)); \
+ goto cleanup; \
+ } while (0)
+
+#define XMLRPC_FAIL2(env,code,str,arg1,arg2) \
+ do { \
+ xmlrpc_env_set_fault_formatted((env),(code),(str),(arg1),(arg2)); \
+ goto cleanup; \
+ } while (0)
+
+#define XMLRPC_FAIL3(env,code,str,arg1,arg2,arg3) \
+ do { \
+ xmlrpc_env_set_fault_formatted((env),(code), \
+ (str),(arg1),(arg2),(arg3)); \
+ goto cleanup; \
+ } while (0)
+
+#if !defined(__cplusplus)
+#if defined(__GNUC__)
+#define XMLRPC_FAILF( env, code, fmt, ... ) \
+ do { \
+ xmlrpc_env_set_fault_formatted((env), (code), (fmt), \
+ ##__VA_ARGS__ ); \
+ goto cleanup; \
+ } while (0)
+#endif
+#endif
+
+#define XMLRPC_FAIL_IF_NULL(ptr,env,code,str) \
+ do { \
+ if ((ptr) == NULL) \
+ XMLRPC_FAIL((env),(code),(str)); \
+ } while (0)
+
+#define XMLRPC_FAIL_IF_FAULT(env) \
+ do { if ((env)->fault_occurred) goto cleanup; } while (0)
+
+
+/*=========================================================================
+** xmlrpc_mem_block
+**=========================================================================
+** A resizable chunk of memory. This is mostly used internally, but it is
+** also used by the public API in a few places.
+** The struct fields are private!
+*/
+
+typedef struct _xmlrpc_mem_block {
+ size_t _size;
+ size_t _allocated;
+ void* _block;
+} xmlrpc_mem_block;
+
+/* Allocate a new xmlrpc_mem_block. */
+xmlrpc_mem_block* xmlrpc_mem_block_new (xmlrpc_env* const env, size_t const size);
+
+/* Destroy an existing xmlrpc_mem_block, and everything it contains. */
+void xmlrpc_mem_block_free (xmlrpc_mem_block* const block);
+
+/* Initialize the contents of the provided xmlrpc_mem_block. */
+void xmlrpc_mem_block_init
+ (xmlrpc_env* const env, xmlrpc_mem_block* const block, size_t const size);
+
+/* Deallocate the contents of the provided xmlrpc_mem_block, but not the
+** block itself. */
+void xmlrpc_mem_block_clean (xmlrpc_mem_block* const block);
+
+/* Get the size and contents of the xmlrpc_mem_block. */
+size_t
+xmlrpc_mem_block_size(const xmlrpc_mem_block * const block);
+
+void *
+xmlrpc_mem_block_contents(const xmlrpc_mem_block * const block);
+
+/* Resize an xmlrpc_mem_block, preserving as much of the contents as
+** possible. */
+void xmlrpc_mem_block_resize
+ (xmlrpc_env* const env, xmlrpc_mem_block* const block, size_t const size);
+
+/* Append data to an existing xmlrpc_mem_block. */
+void xmlrpc_mem_block_append
+ (xmlrpc_env* const env, xmlrpc_mem_block* const block, const void * const data, size_t const len);
+
+#define XMLRPC_MEMBLOCK_NEW(type,env,size) \
+ xmlrpc_mem_block_new((env), sizeof(type) * (size))
+#define XMLRPC_MEMBLOCK_FREE(type,block) \
+ xmlrpc_mem_block_free(block)
+#define XMLRPC_MEMBLOCK_INIT(type,env,block,size) \
+ xmlrpc_mem_block_init((env), (block), sizeof(type) * (size))
+#define XMLRPC_MEMBLOCK_CLEAN(type,block) \
+ xmlrpc_mem_block_clean(block)
+#define XMLRPC_MEMBLOCK_SIZE(type,block) \
+ (xmlrpc_mem_block_size(block) / sizeof(type))
+#define XMLRPC_MEMBLOCK_CONTENTS(type,block) \
+ ((type*) xmlrpc_mem_block_contents(block))
+#define XMLRPC_MEMBLOCK_RESIZE(type,env,block,size) \
+ xmlrpc_mem_block_resize(env, block, sizeof(type) * (size))
+#define XMLRPC_MEMBLOCK_APPEND(type,env,block,data,size) \
+ xmlrpc_mem_block_append(env, block, data, sizeof(type) * (size))
+
+/* Here are some backward compatibility definitions. These longer names
+ used to be the only ones and typed memory blocks were considered
+ special.
+*/
+#define XMLRPC_TYPED_MEM_BLOCK_NEW(type,env,size) \
+ XMLRPC_MEMBLOCK_NEW(type,env,size)
+#define XMLRPC_TYPED_MEM_BLOCK_FREE(type,block) \
+ XMLRPC_MEMBLOCK_FREE(type,block)
+#define XMLRPC_TYPED_MEM_BLOCK_INIT(type,env,block,size) \
+ XMLRPC_MEMBLOCK_INIT(type,env,block,size)
+#define XMLRPC_TYPED_MEM_BLOCK_CLEAN(type,block) \
+ XMLRPC_MEMBLOCK_CLEAN(type,block)
+#define XMLRPC_TYPED_MEM_BLOCK_SIZE(type,block) \
+ XMLRPC_MEMBLOCK_SIZE(type,block)
+#define XMLRPC_TYPED_MEM_BLOCK_CONTENTS(type,block) \
+ XMLRPC_MEMBLOCK_CONTENTS(type,block)
+#define XMLRPC_TYPED_MEM_BLOCK_RESIZE(type,env,block,size) \
+ XMLRPC_MEMBLOCK_RESIZE(type,env,block,size)
+#define XMLRPC_TYPED_MEM_BLOCK_APPEND(type,env,block,data,size) \
+ XMLRPC_MEMBLOCK_APPEND(type,env,block,data,size)
+
+
+/*=========================================================================
+** UTF-8 Encoding and Decoding
+**=======================================================================*/
+
+void
+xmlrpc_validate_utf8(xmlrpc_env * const envP,
+ const char * const utf8Data,
+ size_t const utf8Len);
+
+/* Decode a UTF-8 string. */
+xmlrpc_mem_block *
+xmlrpc_utf8_to_wcs(xmlrpc_env * const envP,
+ const char * const utf8_data,
+ size_t const utf8_len);
+
+/* Encode a UTF-8 string. */
+
+#if XMLRPC_HAVE_WCHAR
+xmlrpc_mem_block *
+xmlrpc_wcs_to_utf8(xmlrpc_env * const envP,
+ const wchar_t * const wcsData,
+ size_t const wcsLen);
+#endif
+
+void
+xmlrpc_force_to_utf8(char * const buffer);
+
+void
+xmlrpc_force_to_xml_chars(char * const buffer);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/vendor/voclient/include/xmlrpc-c/xml.hpp b/vendor/voclient/include/xmlrpc-c/xml.hpp
new file mode 100644
index 00000000..a77731f9
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc-c/xml.hpp
@@ -0,0 +1,36 @@
+#ifndef XML_HPP_INCLUDED
+#define XML_HPP_INCLUDED
+
+#include <string>
+#include <xmlrpc-c/base.hpp>
+
+namespace xmlrpc_c {
+namespace xml {
+
+void
+generateCall(std::string const& methodName,
+ xmlrpc_c::paramList const& paramList,
+ std::string * const callXmlP);
+
+void
+generateCall(std::string const& methodName,
+ xmlrpc_c::paramList const& paramList,
+ xmlrpc_dialect const dialect,
+ std::string * const callXmlP);
+
+void
+parseSuccessfulResponse(std::string const& responseXml,
+ xmlrpc_c::value * const resultP);
+
+void
+parseResponse(std::string const& responseXml,
+ xmlrpc_c::rpcOutcome * const outcomeP);
+
+
+void
+trace(std::string const& label,
+ std::string const& xml);
+
+
+}} // namespace
+#endif
diff --git a/vendor/voclient/include/xmlrpc.h b/vendor/voclient/include/xmlrpc.h
new file mode 100644
index 00000000..2a5d3bf4
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc.h
@@ -0,0 +1,2 @@
+#include <xmlrpc-c/base.h>
+#include <xmlrpc-c/server.h>
diff --git a/vendor/voclient/include/xmlrpc_abyss.h b/vendor/voclient/include/xmlrpc_abyss.h
new file mode 100644
index 00000000..975fa0ee
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc_abyss.h
@@ -0,0 +1,276 @@
+/*============================================================================
+ server_abyss.h
+==============================================================================
+ This declares the user interface to libxmlrpc_server_abyss, which
+ provides facilities for running an XML-RPC server based on the Xmlrpc-c
+ Abyss HTTP server.
+============================================================================*/
+
+/* Copyright and license information is at the end of the file */
+
+#ifndef XMLRPC_SERVER_ABYSS_H_INCLUDED
+#define XMLRPC_SERVER_ABYSS_H_INCLUDED
+
+#ifdef WIN32
+#include <winsock.h> /* For XMLRPC_SOCKET (= SOCKET) */
+#endif
+
+#include <xmlrpc-c/config.h> /* For XMLRPC_SOCKET */
+#include <xmlrpc-c/abyss.h>
+#include <xmlrpc-c/server.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#define XMLRPC_SERVER_ABYSS_NO_FLAGS (0)
+
+
+/*=========================================================================
+** Global Initialization/Termination.
+**
+** These are not thread-safe. You call them at the beginning and end
+** of your program, when it is only one thread.
+**=======================================================================*/
+
+void
+xmlrpc_server_abyss_global_init(xmlrpc_env * const envP);
+
+void
+xmlrpc_server_abyss_global_term(void);
+
+/*=========================================================================
+** Basic Abyss Server Functions
+**=======================================================================*/
+
+typedef void ((*runfirstFn)(void *));
+
+typedef struct {
+ const char * config_file_name;
+ /* NULL to use preferred proper API-level interface */
+
+ xmlrpc_registry * registryP;
+
+ /* runfirstFn and runfirst_arg are meaningless when
+ config_file_name is NULL
+ */
+ runfirstFn runfirst;
+ void * runfirst_arg;
+
+ unsigned int port_number;
+ const char * log_file_name;
+ unsigned int keepalive_timeout;
+ unsigned int keepalive_max_conn;
+ unsigned int timeout;
+ xmlrpc_bool dont_advertise;
+ xmlrpc_bool socket_bound;
+ XMLRPC_SOCKET socket_handle;
+ const char * uri_path;
+ xmlrpc_bool chunk_response;
+ xmlrpc_bool enable_shutdown;
+} xmlrpc_server_abyss_parms;
+
+
+#define XMLRPC_APSIZE(MBRNAME) \
+ XMLRPC_STRUCTSIZE(xmlrpc_server_abyss_parms, MBRNAME)
+
+/* XMLRPC_APSIZE(xyz) is the minimum size a struct xmlrpc_server_abyss_parms
+ must be to include the 'xyz' member. This is essential to forward and
+ backward compatibility, as new members will be added to the end of the
+ struct in future releases. This is how the callee knows whether or
+ not the caller is new enough to have supplied a certain parameter.
+*/
+
+/*=========================================================================
+** Simple server with Abyss under the covers
+**=======================================================================*/
+
+void
+xmlrpc_server_abyss(xmlrpc_env * const envP,
+ const xmlrpc_server_abyss_parms * const parms,
+ unsigned int const parm_size);
+
+/*=========================================================================
+** Object-oriented XML-RPC server with Abyss under the covers
+**=======================================================================*/
+
+typedef struct xmlrpc_server_abyss xmlrpc_server_abyss_t;
+
+void
+xmlrpc_server_abyss_create(xmlrpc_env * const envP,
+ const xmlrpc_server_abyss_parms * const parmsP,
+ unsigned int const parmSize,
+ xmlrpc_server_abyss_t ** const serverPP);
+
+void
+xmlrpc_server_abyss_destroy(xmlrpc_server_abyss_t * const serverP);
+
+void
+xmlrpc_server_abyss_run_server(xmlrpc_env * const envP,
+ xmlrpc_server_abyss_t * const serverP);
+
+void
+xmlrpc_server_abyss_terminate(xmlrpc_env * const envP,
+ xmlrpc_server_abyss_t * const serverP);
+
+void
+xmlrpc_server_abyss_reset_terminate(xmlrpc_env * const envP,
+ xmlrpc_server_abyss_t * const serverP);
+
+void
+xmlrpc_server_abyss_use_sigchld(xmlrpc_server_abyss_t * const serverP);
+
+
+typedef struct xmlrpc_server_abyss_sig xmlrpc_server_abyss_sig;
+
+void
+xmlrpc_server_abyss_setup_sig(
+ xmlrpc_env * const envP,
+ xmlrpc_server_abyss_t * const serverP,
+ xmlrpc_server_abyss_sig ** const oldHandlersPP);
+
+void
+xmlrpc_server_abyss_restore_sig(
+ const xmlrpc_server_abyss_sig * const oldHandlersP);
+
+
+
+/*=========================================================================
+** Functions to make an XML-RPC server out of your own Abyss server
+**=======================================================================*/
+
+void
+xmlrpc_server_abyss_set_handlers2(TServer * const srvP,
+ const char * const filename,
+ xmlrpc_registry * const registryP);
+
+void
+xmlrpc_server_abyss_set_handlers(TServer * const serverP,
+ xmlrpc_registry * const registryP);
+
+void
+xmlrpc_server_abyss_set_handler(xmlrpc_env * const envP,
+ TServer * const serverP,
+ const char * const filename,
+ xmlrpc_registry * const registryP);
+
+/*=========================================================================
+** Handy Abyss Extensions
+**=======================================================================*/
+
+/* These are functions that have nothing to do with Xmlrpc-c, but provide
+ convenient Abyss services beyond those provided by the Abyss library.
+*/
+
+/* Start an Abyss webserver running (previously created and
+** initialized). Under Unix, this routine will attempt to do a
+** detaching fork, drop root privileges (if any) and create a pid
+** file. Under Windows, this routine merely starts the server. This
+** routine never returns.
+**
+** Once you call this routine, it is illegal to modify the server any
+** more, including changing any method registry.
+*/
+void
+xmlrpc_server_abyss_run(void);
+
+/* Same as xmlrpc_server_abyss_run(), except you get to specify a "runfirst"
+** function. The server runs this just before executing the actual server
+** function, after any daemonizing. NULL for 'runfirst' means no runfirst
+** function. 'runfirstArg' is the argument the server passes to the runfirst
+** function.
+**/
+void
+xmlrpc_server_abyss_run_first(runfirstFn const runfirst,
+ void * const runfirstArg);
+
+/*=========================================================================
+** Method Registry
+**=========================================================================
+ These functions are for the built-in xmlrpc_server_abyss registry.
+ It's usually simpler to skip all this and use the regular method
+ registry services (from xmlrpc_server.h) to build a registry and
+ pass it to xmlrpc_server_abyss.
+*/
+
+/* Call this function to create a new Abyss webserver with the default
+** options and the built-in method registry. If you've already
+** initialized Abyss using Abyss functions, you can instead call
+** xmlrpc_server_abyss_init_registry() to make it an Xmlrpc-c server.
+** Or use a regular method registry and call
+** xmlrpc_server_abyss_set_handlers().
+**/
+void
+xmlrpc_server_abyss_init(int const flags,
+ const char * const config_file);
+
+/* This is called automatically by xmlrpc_server_abyss_init. */
+void xmlrpc_server_abyss_init_registry (void);
+
+/* Fetch the internal registry, if you happen to need it.
+ If you're using this, you really shouldn't be using the built-in
+ registry at all. It exists today only for backward compatibilty.
+*/
+extern xmlrpc_registry *
+xmlrpc_server_abyss_registry (void);
+
+/* A quick & easy shorthand for adding a method. Depending on
+** how you've configured your copy of Abyss, it's probably not safe to
+** call this method after calling xmlrpc_server_abyss_run. */
+void xmlrpc_server_abyss_add_method (char * const method_name,
+ xmlrpc_method const method,
+ void * const user_data);
+
+/* As above, but provide documentation (see xmlrpc_registry_add_method_w_doc
+** for more information). You should really use this one. */
+extern void
+xmlrpc_server_abyss_add_method_w_doc (char * const method_name,
+ xmlrpc_method const method,
+ void * const user_data,
+ char * const signature,
+ char * const help);
+
+/*=========================================================================
+** Content Handlers
+**=======================================================================*/
+/* Abyss contents handlers xmlrpc_server_abyss_rpc2_handler()
+ and xmlrpc_server_abyss_default_handler() were available in older
+ Xmlrpc-c, but starting with Release 1.01, they are not. Instead,
+ call xmlrpc_server_abyss_set_handlers() to install them.
+
+ Alternatively, you can write your own handlers that do the same thing.
+ It's not hard, and if you're writing low enough level Abyss code that
+ you can't use xmlrpc_server_abyss_set_handlers(), you probably want to
+ anyway.
+*/
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+/* Copyright (C) 2001 by First Peer, Inc. 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 AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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. */
+
+#endif
diff --git a/vendor/voclient/include/xmlrpc_client.h b/vendor/voclient/include/xmlrpc_client.h
new file mode 100644
index 00000000..c2e2e619
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc_client.h
@@ -0,0 +1,316 @@
+/*============================================================================
+ xmlrpc_client.h
+==============================================================================
+ This header file defines the interface between xmlrpc.c and its users,
+ related to clients.
+
+ Copyright information is at the end of the file.
+============================================================================*/
+
+#ifndef XMLRPC_CLIENT_H_INCLUDED
+#define XMLRPC_CLIENT_H_INCLUDED
+
+#include <xmlrpc-c/base.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+struct xmlrpc_client;
+struct xmlrpc_client_transport;
+struct xmlrpc_client_transport_ops;
+#ifndef __cplusplus
+typedef struct xmlrpc_client xmlrpc_client;
+typedef struct xmlrpc_client_transport xmlrpc_client_transport;
+typedef struct xmlrpc_client_transport_ops xmlrpc_client_transport_ops;
+#endif
+
+/* libxmlrpc_client typically does _not_ actually include all of the
+ XML transports declared here by xmlrpc_*_transport_ops.
+
+ Use 'xmlrpc-c-config --features' to determine which features are
+ installed.
+*/
+
+/* Before Xmlrpc-c 1.13 (December 2007), we declared struct
+ xmlrpc_xportparms, as a sort of "base class." The struct was never
+ complete -- you just cast pointer to it it to pointers to other
+ types. It turned out not to be really helpful and casts are ugly,
+ so now we just use void * as a base class pointer.
+*/
+
+extern struct xmlrpc_client_transport_ops xmlrpc_libwww_transport_ops;
+extern struct xmlrpc_client_transport_ops xmlrpc_wininet_transport_ops;
+extern struct xmlrpc_client_transport_ops xmlrpc_curl_transport_ops;
+
+enum xmlrpc_sslversion {
+ XMLRPC_SSLVERSION_DEFAULT,
+ XMLRPC_SSLVERSION_TLSv1,
+ XMLRPC_SSLVERSION_SSLv2,
+ XMLRPC_SSLVERSION_SSLv3
+};
+
+struct xmlrpc_curl_xportparms {
+ /* This is designed so that zero values are always the defaults. */
+ const char * network_interface;
+ xmlrpc_bool no_ssl_verifypeer;
+ xmlrpc_bool no_ssl_verifyhost;
+ const char * user_agent;
+ const char * ssl_cert;
+ const char * sslcerttype;
+ const char * sslcertpasswd;
+ const char * sslkey;
+ const char * sslkeytype;
+ const char * sslkeypasswd;
+ const char * sslengine;
+ xmlrpc_bool sslengine_default;
+ enum xmlrpc_sslversion sslversion;
+ const char * cainfo;
+ const char * capath;
+ const char * randomfile;
+ const char * egdsocket;
+ const char * ssl_cipher_list;
+ unsigned int timeout;
+};
+
+
+#define XMLRPC_CXPSIZE(mbrname) \
+ XMLRPC_STRUCTSIZE(struct xmlrpc_curl_xportparms, mbrname)
+
+/* XMLRPC_CXPSIZE(xyz) is analogous to XMLRPC_CPSIZE, below */
+
+struct xmlrpc_wininet_xportparms {
+ int allowInvalidSSLCerts;
+};
+
+#define XMLRPC_WXPSIZE(mbrname) \
+ XMLRPC_STRUCTSIZE(struct xmlrpc_wininet_xportparms, mbrname)
+
+/* XMLRPC_WXPSIZE(xyz) is analogous to XMLRPC_CPSIZE, below */
+
+struct xmlrpc_clientparms {
+ /* (transport, transportparmsP, transportparm_size) and
+ (transportOpsP, transportP) are mutually exclusive.
+ */
+ const char * transport;
+ const void * transportparmsP;
+ /* This should be type "const struct ..._xportparms *" */
+ size_t transportparm_size;
+
+ const struct xmlrpc_client_transport_ops * transportOpsP;
+ xmlrpc_client_transport * transportP;
+ xmlrpc_dialect dialect;
+};
+
+#define XMLRPC_CPSIZE(mbrname) \
+ XMLRPC_STRUCTSIZE(struct xmlrpc_clientparms, mbrname)
+
+/* XMLRPC_CPSIZE(xyz) is the minimum size a struct xmlrpc_clientparms
+ must be to include the 'xyz' member. This is essential to forward and
+ backward compatbility, as new members will be added to the end of the
+ struct in future releases. This is how the callee knows whether or
+ not the caller is new enough to have supplied a certain parameter.
+*/
+
+const char *
+xmlrpc_client_get_default_transport(xmlrpc_env * const env);
+
+/* A callback function to handle the response to an asynchronous call.
+** If 'fault->fault_occurred' is true, then response will be NULL. All
+** arguments except 'user_data' will be deallocated internally; please do
+** not free any of them yourself.
+** WARNING: param_array may (or may not) be NULL if fault->fault_occurred
+** is true, and you set up the call using xmlrpc_client_call_asynch.
+** WARNING: If asynchronous calls are still pending when the library is
+** shut down, your handler may (or may not) be called with a fault. */
+typedef void (*xmlrpc_response_handler) (const char *server_url,
+ const char *method_name,
+ xmlrpc_value *param_array,
+ void *user_data,
+ xmlrpc_env *fault,
+ xmlrpc_value *result);
+
+
+/*=========================================================================
+ xmlrpc_server_info
+===========================================================================
+ We normally refer to servers by URL. But sometimes we need to do extra
+ setup for particular servers. In that case, we can create an
+ xmlrpc_server_info object, configure it in various ways, and call the
+ remote server.
+
+ (This interface is also designed to discourage further multiplication
+ of xmlrpc_client_call APIs. We have enough of those already. Please
+ add future options and flags using xmlrpc_server_info.)
+=========================================================================*/
+
+typedef struct _xmlrpc_server_info xmlrpc_server_info;
+
+/* Create a new server info record, pointing to the specified server. */
+xmlrpc_server_info *
+xmlrpc_server_info_new(xmlrpc_env * const envP,
+ const char * const serverUrl);
+
+/* Create a new server info record, with a copy of the old server. */
+extern xmlrpc_server_info *
+xmlrpc_server_info_copy(xmlrpc_env * const envP,
+ xmlrpc_server_info * const srcP);
+
+void
+xmlrpc_server_info_free(xmlrpc_server_info * const serverP);
+
+
+void
+xmlrpc_server_info_set_user(xmlrpc_env * const envP,
+ xmlrpc_server_info * const serverInfoP,
+ const char * const username,
+ const char * const password);
+
+void
+xmlrpc_server_info_set_basic_auth(xmlrpc_env * const envP,
+ xmlrpc_server_info * const serverP,
+ const char * const username,
+ const char * const password);
+
+void
+xmlrpc_server_info_allow_auth_basic(xmlrpc_env * const envP,
+ xmlrpc_server_info * const sP);
+
+void
+xmlrpc_server_info_disallow_auth_basic(xmlrpc_env * const envP,
+ xmlrpc_server_info * const sP);
+
+void
+xmlrpc_server_info_allow_auth_digest(xmlrpc_env * const envP,
+ xmlrpc_server_info * const sP);
+
+void
+xmlrpc_server_info_disallow_auth_digest(xmlrpc_env * const envP,
+ xmlrpc_server_info * const sP);
+
+void
+xmlrpc_server_info_allow_auth_negotiate(xmlrpc_env * const envP,
+ xmlrpc_server_info * const sP);
+
+void
+xmlrpc_server_info_disallow_auth_negotiate(xmlrpc_env * const envP,
+ xmlrpc_server_info * const sP);
+
+void
+xmlrpc_server_info_allow_auth_ntlm(xmlrpc_env * const envP,
+ xmlrpc_server_info * const sP);
+
+void
+xmlrpc_server_info_disallow_auth_ntlm(xmlrpc_env * const envP,
+ xmlrpc_server_info * const sP);
+
+extern unsigned int const xmlrpc_client_version_major;
+extern unsigned int const xmlrpc_client_version_minor;
+extern unsigned int const xmlrpc_client_version_point;
+
+void
+xmlrpc_client_setup_global_const(xmlrpc_env * const envP);
+
+void
+xmlrpc_client_teardown_global_const(void);
+
+void
+xmlrpc_client_create(xmlrpc_env * const envP,
+ int const flags,
+ const char * const appname,
+ const char * const appversion,
+ const struct xmlrpc_clientparms * const clientparmsP,
+ unsigned int const parmSize,
+ xmlrpc_client ** const clientPP);
+
+void
+xmlrpc_client_destroy(xmlrpc_client * const clientP);
+
+void
+xmlrpc_client_transport_call2(
+ xmlrpc_env * const envP,
+ xmlrpc_client * const clientP,
+ const xmlrpc_server_info * const serverP,
+ xmlrpc_mem_block * const callXmlP,
+ xmlrpc_mem_block ** const respXmlPP);
+
+void
+xmlrpc_client_call2(xmlrpc_env * const envP,
+ struct xmlrpc_client * const clientP,
+ const xmlrpc_server_info * const serverInfoP,
+ const char * const methodName,
+ xmlrpc_value * const paramArrayP,
+ xmlrpc_value ** const resultPP);
+
+void
+xmlrpc_client_call2f(xmlrpc_env * const envP,
+ xmlrpc_client * const clientP,
+ const char * const serverUrl,
+ const char * const methodName,
+ xmlrpc_value ** const resultPP,
+ const char * const format,
+ ...);
+
+void
+xmlrpc_client_event_loop_finish(xmlrpc_client * const clientP);
+
+void
+xmlrpc_client_event_loop_finish_timeout(xmlrpc_client * const clientP,
+ unsigned long const milliseconds);
+
+void
+xmlrpc_client_start_rpc(xmlrpc_env * const envP,
+ struct xmlrpc_client * const clientP,
+ xmlrpc_server_info * const serverInfoP,
+ const char * const methodName,
+ xmlrpc_value * const argP,
+ xmlrpc_response_handler responseHandler,
+ void * const userData);
+
+void
+xmlrpc_client_start_rpcf(xmlrpc_env * const envP,
+ xmlrpc_client * const clientP,
+ const char * const serverUrl,
+ const char * const methodName,
+ xmlrpc_response_handler callback,
+ void * const userData,
+ const char * const format,
+ ...);
+
+void
+xmlrpc_client_set_interrupt(xmlrpc_client * const clientP,
+ int * const interruptP);
+
+#include <xmlrpc-c/client_global.h>
+
+/* Copyright (C) 2001 by First Peer, Inc. 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 AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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. */
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* _XMLRPC_CLIENT_H_ */
diff --git a/vendor/voclient/include/xmlrpc_server.h b/vendor/voclient/include/xmlrpc_server.h
new file mode 100644
index 00000000..28773c61
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc_server.h
@@ -0,0 +1,173 @@
+/* Copyright and license information is at the end of the file */
+
+#ifndef XMLRPC_SERVER_H_INCLUDED
+#define XMLRPC_SERVER_H_INCLUDED
+
+#include <xmlrpc-c/base.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct xmlrpc_registry xmlrpc_registry;
+
+typedef void
+(*xmlrpc_preinvoke_method)(xmlrpc_env * const envP,
+ const char * const methodName,
+ xmlrpc_value * const paramArrayP,
+ void * const userData);
+
+typedef xmlrpc_value *
+(*xmlrpc_method1)(xmlrpc_env * const envP,
+ xmlrpc_value * const paramArrayP,
+ void * const serverInfo);
+
+typedef xmlrpc_value *
+(*xmlrpc_method2)(xmlrpc_env * const envP,
+ xmlrpc_value * const paramArrayP,
+ void * const serverInfo,
+ void * const callInfo);
+
+typedef xmlrpc_method1 xmlrpc_method; /* backward compatibility */
+
+typedef xmlrpc_value *
+(*xmlrpc_default_method)(xmlrpc_env * const envP,
+ const char * const callInfoP,
+ const char * const methodName,
+ xmlrpc_value * const paramArrayP,
+ void * const serverInfo);
+
+extern unsigned int const xmlrpc_server_version_major;
+extern unsigned int const xmlrpc_server_version_minor;
+extern unsigned int const xmlrpc_server_version_point;
+
+xmlrpc_registry *
+xmlrpc_registry_new(xmlrpc_env * const envP);
+
+void
+xmlrpc_registry_free(xmlrpc_registry * const registryP);
+
+void
+xmlrpc_registry_disable_introspection(xmlrpc_registry * const registryP);
+
+void
+xmlrpc_registry_add_method(xmlrpc_env * const envP,
+ xmlrpc_registry * const registryP,
+ const char * const host,
+ const char * const methodName,
+ xmlrpc_method const method,
+ void * const serverInfo);
+
+void
+xmlrpc_registry_add_method_w_doc(xmlrpc_env * const envP,
+ xmlrpc_registry * const registryP,
+ const char * const host,
+ const char * const methodName,
+ xmlrpc_method const method,
+ void * const serverInfo,
+ const char * const signatureString,
+ const char * const help);
+
+void
+xmlrpc_registry_add_method2(xmlrpc_env * const envP,
+ xmlrpc_registry * const registryP,
+ const char * const methodName,
+ xmlrpc_method2 method,
+ const char * const signatureString,
+ const char * const help,
+ void * const serverInfo);
+
+struct xmlrpc_method_info3 {
+ const char * methodName;
+ xmlrpc_method2 methodFunction;
+ void * serverInfo;
+ size_t stackSize;
+ const char * signatureString;
+ const char * help;
+};
+
+void
+xmlrpc_registry_add_method3(
+ xmlrpc_env * const envP,
+ xmlrpc_registry * const registryP,
+ const struct xmlrpc_method_info3 * const infoP);
+
+void
+xmlrpc_registry_set_default_method(xmlrpc_env * const envP,
+ xmlrpc_registry * const registryP,
+ xmlrpc_default_method const handler,
+ void * const userData);
+
+void
+xmlrpc_registry_set_preinvoke_method(xmlrpc_env * const envP,
+ xmlrpc_registry * const registryP,
+ xmlrpc_preinvoke_method const method,
+ void * const userData);
+
+
+typedef void xmlrpc_server_shutdown_fn(xmlrpc_env * const envP,
+ void * const context,
+ const char * const comment,
+ void * const callInfo);
+
+void
+xmlrpc_registry_set_shutdown(xmlrpc_registry * const registryP,
+ xmlrpc_server_shutdown_fn * const shutdownFn,
+ void * const context);
+
+void
+xmlrpc_registry_set_dialect(xmlrpc_env * const envP,
+ xmlrpc_registry * const registryP,
+ xmlrpc_dialect const dialect);
+
+/*----------------------------------------------------------------------------
+ Lower interface -- services to be used by an HTTP request handler
+-----------------------------------------------------------------------------*/
+
+void
+xmlrpc_registry_process_call2(xmlrpc_env * const envP,
+ xmlrpc_registry * const registryP,
+ const char * const xmlData,
+ size_t const xmlLen,
+ void * const callInfo,
+ xmlrpc_mem_block ** const outputPP);
+
+xmlrpc_mem_block *
+xmlrpc_registry_process_call(xmlrpc_env * const envP,
+ xmlrpc_registry * const registryP,
+ const char * const host,
+ const char * const xmlData,
+ size_t const xmlLen);
+
+size_t
+xmlrpc_registry_max_stackSize(xmlrpc_registry * const registryP);
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Copyright (C) 2001 by First Peer, Inc. 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 AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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. */
+#endif
diff --git a/vendor/voclient/include/xmlrpc_server_w32httpsys.h b/vendor/voclient/include/xmlrpc_server_w32httpsys.h
new file mode 100644
index 00000000..085f6e30
--- /dev/null
+++ b/vendor/voclient/include/xmlrpc_server_w32httpsys.h
@@ -0,0 +1,95 @@
+/* Copyright (C) 2005 by Steven A. Bone, sbone@pobox.com. 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 AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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. */
+
+/* COMPILATION NOTE:
+ Note that the Platform SDK headers and
+ link libraries for Windows XP SP2 or newer are required to compile
+ xmlrpc-c for this module. If you are not using this server, it is
+ safe to exclude the xmlrpc_server_w32httpsys.c file from the xmlrpc
+ project and these dependencies will not be required. You can get the
+ latest platform SDK at
+ http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
+ Be sure after installation to choose the program to "register the PSDK
+ directories with Visual Studio" so the newer headers are found.
+*/
+
+#ifndef _XMLRPC_SERVER_HTTPSYS_H_
+#define _XMLRPC_SERVER_HTTPSYS_H_ 1
+
+#include "transport_config.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/*=========================================================================
+** XML-RPC Server (based on HTTP.SYS)
+**=========================================================================
+** A simple XML-RPC server based on the "built-in" Windows web server,
+** HTTP.SYS. This is provided by Microsoft in Windows XP SP2 and
+** Windows Server 2003. If errors occur during server setup, the server
+** will exit. In general, if you want to use this API, you do not really
+** need to be familiar with the HTTP.SYS API.
+*/
+
+typedef void (*authorization_function)(
+ xmlrpc_env * envP,
+ char * userid,
+ char * password);
+
+typedef struct {
+ xmlrpc_registry * registryP;
+ unsigned int portNum;
+ unsigned int useSSL;
+ /* useSSL, 0 = no SSL, 1 = use SSL */
+ unsigned int logLevel;
+ /* logLevel, 0 = none, 1 = file, 2 = file+OutputDebugString() */
+ const char * logFile;
+ /* logFile, NULL or filename */
+ authorization_function authfn;
+} xmlrpc_server_httpsys_parms;
+
+#define XMLRPC_HSSIZE(MBRNAME) \
+ XMLRPC_STRUCTSIZE(xmlrpc_server_httpsys_parms, MBRNAME)
+
+/* XMLRPC_HSSIZE(xyz) is the minimum size a struct xmlrpc_server_httpsys_parms
+ must be to include the 'xyz' member. This is essential for forward and
+ backward compatbility, as new members will be added to the end of the
+ struct in future releases. This is how the callee knows whether or
+ not the caller is new enough to have supplied a certain parameter.
+*/
+
+void
+xmlrpc_server_httpsys(
+ xmlrpc_env * const envP,
+ const xmlrpc_server_httpsys_parms * const parmsP,
+ unsigned int const parm_size
+ );
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif \ No newline at end of file
diff --git a/vendor/voclient/include/xrpc.h b/vendor/voclient/include/xrpc.h
new file mode 100644
index 00000000..9b560ba1
--- /dev/null
+++ b/vendor/voclient/include/xrpc.h
@@ -0,0 +1,194 @@
+/*
+** XRPC.h -- Public include file for the XRPC interface.
+*/
+
+
+#ifdef OK
+#undef OK
+#endif
+#define OK 0
+
+#ifdef ERR
+#undef ERR
+#endif
+#define ERR 1
+
+
+#ifdef TRUE
+#undef TRUE
+#endif
+#define TRUE 1
+
+#ifdef FALSE
+#undef FALSE
+#endif
+#define FALSE 0
+
+
+
+/*****************************************************************************/
+/**** Function Prototypes ****/
+/*****************************************************************************/
+
+/* xrArray.c
+*/
+int xr_newArray (void);
+void xr_freeArray (int anum);
+int xr_arrayLen (int anum);
+
+void xr_setIntInArray (int anum, int value);
+void xr_setDoubleInArray (int anum, double value);
+void xr_setBoolInArray (int anum, int value);
+void xr_setStringInArray (int anum, char *value);
+void xr_setDatetimeInArray (int anum, char *value);
+void xr_setStructInArray (int anum, int value);
+void xr_setArrayInArray (int anum, int value);
+
+void xr_getIntFromArray (int anum, int index, int *ival);
+void xr_getDoubleFromArray (int anum, int index, double *dval);
+void xr_getBoolFromArray (int anum, int index, int *bval);
+void xr_getStringFromArray (int anum, int index, char **value);
+void xr_getDatetimeFromArray (int anum, int index, char **value);
+void xr_getStructFromArray (int anum, int index, int *value);
+void xr_getArrayFromArray (int anum, int index, int *value);
+
+xmlrpc_value *xr_getAElement (int anum);
+void xr_setAElement (int anum, xmlrpc_value *v);
+
+
+/* xrClient.c
+*/
+int xr_newASync (int cnum);
+int xr_initClient (char *url, char *name, char *version);
+int xr_closeClient (int cnum);
+int xr_setClient (int cnum, char *url);
+int xr_callSync (int cnum, char *name);
+
+int xr_callASync (int cnum, char *name, void *ret_handler);
+int xr_asyncWait (void);
+
+void xr_initParam (int cnum);
+void xr_setVerbose (int verbose);
+void xr_setDebug (int debug);
+
+void xr_setIntInParam (int cnum, int value);
+void xr_setDoubleInParam (int cnum, double value);
+void xr_setBoolInParam (int cnum, int value);
+void xr_setStringInParam (int cnum, char *str);
+void xr_setDatetimeInParam (int cnum, char *str);
+void xr_setStructInParam (int cnum, int snum);
+void xr_setArrayInParam (int cnum, int anum);
+
+int xr_getIntFromResult (int cnum, int *value);
+int xr_getDoubleFromResult (int cnum, double *value);
+int xr_getBoolFromResult (int cnum, int *value);
+int xr_getStringFromResult (int cnum, char **value);
+int xr_getDatetimeFromResult (int cnum, char **date);
+int xr_getStructFromResult (int cnum, int *snum);
+int xr_getArrayFromResult (int cnum, int *anum);
+
+char *xr_getErrMsg (int cnum);
+int xr_getErrCode (int cnum);
+
+void xr_envClean (int cnum);
+void xr_freeParam (int cnum);
+void xr_freeResult (int cnum);
+void xr_clientCleanup (int cnum);
+void xr_printClient (int cnum);
+
+
+/* xrMethod.c
+*/
+int xr_getIntFromParam (void *data, int index);
+double xr_getDoubleFromParam (void *data, int index);
+char *xr_getStringFromParam (void *data, int index);
+int xr_getBoolFromParam (void *data, int index);
+char *xr_getDatetimeFromParam (void *data, int index);
+int xr_getStructFromParam (void *data, int index);
+int xr_getArrayFromParam (void *data, int index);
+
+void xr_setIntInResult (void *data, int val);
+void xr_setDoubleInResult (void *data, double val);
+void xr_setBoolInResult (void *data, int val);
+void xr_setStringInResult (void *data, char *val);
+void xr_setDatetimeInResult (void *data, char *val);
+void xr_setStructInResult (void *data, int snum);
+void xr_setArrayInResult (void *data, int anum);
+
+void xr_setShutdown (void *data, int val);
+
+
+/* xrServer.c
+*/
+typedef void (*sighandler_t)(int);
+
+int xr_createServer (char *path, int port, char *logfile);
+int xr_addServerMethod (char *name, void *method, void *userData);
+int xr_removeServerMethod (char *name);
+void xr_setServerParam (char *param, void *value);
+pthread_t xr_startServerThread (void);
+void xr_startServer (void);
+int xr_shutdownServer (void);
+int xr_requestAbort (void *data);
+void xr_setShutdownLevel (int level);
+void xr_setSigHandler (int sig, sighandler_t handler);
+
+
+/* xrStruct.c
+*/
+int xr_newStruct (void);
+void xr_freeStruct (int snum);
+
+void xr_printJSONStruct (int snum);
+int xr_structSize (int snum);
+char *xr_getStructKey (int snum, int index);
+char *xr_getStructVal (int snum, int index);
+
+void xr_setIntInStruct (int snum, char *key, int value);
+void xr_setDoubleInStruct (int snum, char *key, double value);
+void xr_setBoolInStruct (int snum, char *key, int value);
+void xr_setStringInStruct (int snum, char *key, char *value);
+void xr_setDatetimeInStruct (int snum, char *key, char *value);
+void xr_setStructInStruct (int snum, char *key, int value);
+void xr_setArrayInStruct (int snum, char *key, int value);
+
+void xr_getIntFromStruct (int snum, char *key, int *value);
+void xr_getDoubleFromStruct (int snum, char *key, double *value);
+void xr_getBoolFromStruct (int snum, char *key, int *value);
+void xr_getStringFromStruct (int snum, char *key, char **value);
+void xr_getDatetimeFromStruct (int snum, char *key, char **value);
+void xr_getStructFromStruct (int snum, char *key, int *value);
+void xr_getArrayFromStruct (int snum, char *key, int *value);
+
+xmlrpc_value *xr_getSParam (int snum);
+void xr_setSParam (int snum, xmlrpc_value *v);
+
+
+/* xrUtil.c
+*/
+void xr_setupSigtermHandler (xmlrpc_server_abyss_t *serverP);
+void xr_svrSigtermHandler (int signalClass);
+void xr_restoreSigtermHandler (void);
+
+void xr_setupSigpipeHandlers (void);
+
+char *xr_getPeerIpAddr (TSession * const abyssSessionP);
+void xr_dieIfFailed (char *description, xmlrpc_env env);
+void xr_dbgPrintParams (xmlrpc_server_abyss_parms s);
+void die_on_error (xmlrpc_env *env);
+void warn_on_error (xmlrpc_env *env);
+
+
+
+/* xrValues.c
+*/
+void xr_initValues (void);
+int xr_newValue (int type, void *v);
+int xr_tmpValue (int type, void *v);
+void xr_freeValue (int index);
+
+int xr_appendStruct (int snum, char *key, int value);
+int xr_appendArray (int anum, char *key, int value);
+
+void xr_getStructValue (int snum, char *key, void *value);
+void xr_getArrayValue (int anum, int index, void *value);
diff --git a/vendor/voclient/include/xrpcP.h b/vendor/voclient/include/xrpcP.h
new file mode 100644
index 00000000..117b39ad
--- /dev/null
+++ b/vendor/voclient/include/xrpcP.h
@@ -0,0 +1,139 @@
+/*
+** XRPC.h -- Private include file for the XRPC interface.
+*/
+
+
+#define SZ_LINE 128
+#define SZ_PATH 128
+#define SZ_CMD 32
+#define SZ_SIG 64
+#define SZ_NAME 64
+
+#define MAX_CLIENTS 512 /* max clients or async msgs */
+#define MAX_STRUCTS 32768
+#define MAX_ARRAYS 32768
+
+#define OK 0
+#define ERR 1
+
+#define TY_INT 1
+#define TY_DOUBLE 2
+#define TY_BOOL 3
+#define TY_STRING 4
+#define TY_DATETIME 5
+#define TY_STRUCT 6
+#define TY_ARRAY 7
+
+#define XR_NAME "xrLib"
+#define XR_VERSION "v1.0"
+
+
+
+/**
+ * Type for pointer to function return integer.
+ */
+typedef int (*PFI)(); /* ptr to func returning an int */
+
+
+/**
+ * XML-RPC method data struct.
+ */
+typedef struct {
+ char name[SZ_PATH]; /** method name */
+ char arg_signature[SZ_SIG]; /** argument signature */
+ char ret_signature[SZ_SIG]; /** return signature */
+
+ int (*methodFunc)(void *p); /** function to call */
+ void *serverInfo; /** user data */
+
+ void *next; /** list pointer */
+
+} Method, *MethodP;
+
+
+/**
+ * XML-RPC caller data struct.
+ */
+typedef struct {
+ xmlrpc_env *env; /** calling environment */
+ char *host; /** caller host name (not used) */
+ char *name; /** method name */
+ xmlrpc_value *param; /** calling parameter array */
+ void *info; /** user data ('svr' pointer) */
+ xmlrpc_value *result; /** result array */
+
+ int (*handlerFunc)(void *p); /** asynch handler function */
+ int nparams; /** number of calling params */
+ int nresults; /** number of result values */
+
+ int client_num; /** client number */
+ int rpc_shutdown; /** shutdown request */
+
+} Caller, *CallerP;
+
+
+/**
+ * XML-RPC server data struct.
+ */
+typedef struct {
+ int port; /** server port numnber */
+ char path[SZ_PATH]; /** path e.g. "/RPC2" */
+ char url[SZ_PATH]; /** full server URL */
+ char config[SZ_PATH]; /** server config file */
+ char logfile[SZ_PATH]; /** server log file */
+
+
+ /* Runtime structure
+ */
+ Method *method_head; /** server method list */
+ Method *method_tail; /** server method tail */
+ int num_methods; /** number of methods */
+
+ Caller caller; /** method calling struct */
+
+ pthread_attr_t attr; /** server thread attribute */
+ pthread_t thread; /** server thread */
+
+ xmlrpc_default_method defMethod; /** dispatcher method */
+
+ xmlrpc_server_abyss_parms serverparm;
+ xmlrpc_registry *registry;
+ xmlrpc_env env;
+
+ int shutdown; /** shutdown requested */
+ int trace; /** trace execution? */
+
+} Server, *ServerP;
+
+
+/**
+ * XML-RPC client data struct.
+ */
+typedef struct {
+ char url[SZ_PATH]; /** URL to service */
+ xmlrpc_client *rpc_client; /** client struct */
+ xmlrpc_env env; /** env context */
+
+ int in_use; /** struct in use? */
+
+ int (*handlerFunc)(void *p); /** asynch handler function */
+ xmlrpc_value *param; /** method parameters */
+ xmlrpc_value *result; /** result values */
+
+ int faultCode; /** error code */
+ char faultString[SZ_PATH]; /** error string */
+
+} Client, *ClientP;
+
+
+
+
+/* Private function prototypes.
+*/
+void die_on_error (xmlrpc_env *env);
+void warn_on_error (xmlrpc_env *env);
+
+
+#include "xrpc.h"
+
+