[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [gnurl] 150/150: Merge tag 'curl-7_59_0' of https://github.
From: |
gnunet |
Subject: |
[GNUnet-SVN] [gnurl] 150/150: Merge tag 'curl-7_59_0' of https://github.com/curl/curl |
Date: |
Fri, 30 Mar 2018 16:50:04 +0200 |
This is an automated email from the git hooks/post-receive script.
ng0 pushed a commit to branch master
in repository gnurl.
commit 4bdd2f26cf0ae539253feff8207e97ed4ce1d7ff
Merge: b7ee06519 4d6bd91ab
Author: Nils Gillmann <address@hidden>
AuthorDate: Fri Mar 30 14:47:12 2018 +0000
Merge tag 'curl-7_59_0' of https://github.com/curl/curl
curl 7.59.0
Initial merge of upstream tag.
.mailmap | 7 +-
.travis-iconv-env.sh | 1 +
.travis.yml | 30 +-
CMake/Utilities.cmake | 2 +-
README | 2 +
README.md | 2 +-
RELEASE-NOTES | 316 ++++++++++---------
configure.ac | 19 +-
docs/BINDINGS.md | 4 +-
docs/BUGS | 2 +-
docs/FAQ | 6 +-
docs/KNOWN_BUGS | 11 +
docs/MAIL-ETIQUETTE | 2 +-
docs/MANUAL | 3 +-
docs/Makefile.am | 4 +-
docs/{SECURITY.md => SECURITY-PROCESS.md} | 10 +-
docs/THANKS | 24 +-
docs/THANKS-filter | 3 +-
docs/TODO | 108 +++++--
docs/cmdline-opts/Makefile.inc | 6 +-
docs/cmdline-opts/form.d | 42 ++-
docs/cmdline-opts/happy-eyeballs-timeout-ms.d | 17 ++
docs/cmdline-opts/page-footer | 9 +-
docs/cmdline-opts/progress-bar.d | 5 +-
docs/cmdline-opts/proxy-pinnedpubkey.d | 16 +
docs/cmdline-opts/resolve.d | 4 +-
docs/cmdline-opts/tlsauthtype.d | 4 +-
docs/examples/Makefile.am | 5 +-
docs/examples/Makefile.inc | 4 +-
docs/examples/ftpupload.c | 2 +-
docs/examples/sftpuploadresume.c | 130 ++++++++
docs/libcurl/Makefile.inc | 3 +-
docs/libcurl/gnurl_easy_getinfo.3 | 7 +-
docs/libcurl/gnurl_easy_setopt.3 | 10 +-
docs/libcurl/gnurl_getdate.3 | 16 +-
docs/libcurl/gnurl_global_init.3 | 2 +-
docs/libcurl/gnurl_share_setopt.3 | 9 +-
docs/libcurl/libgnurl-env.3 | 4 +-
docs/libcurl/libgnurl-errors.3 | 4 +
docs/libcurl/libgnurl-security.3 | 338 +++++++++++++++++++++
docs/libcurl/libgnurl-tutorial.3 | 233 +-------------
...{GNURLINFO_FILETIME.3 => CURLINFO_FILETIME_T.3} | 35 ++-
...EADER.3 => CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3} | 48 ++-
...T_TIMEVALUE.3 => CURLOPT_RESOLVER_START_DATA.3} | 44 +--
.../libcurl/opts/CURLOPT_RESOLVER_START_FUNCTION.3 | 83 +++++
...RLOPT_TIMEVALUE.3 => CURLOPT_TIMEVALUE_LARGE.3} | 25 +-
docs/libcurl/opts/GNURLINFO_CONDITION_UNMET.3 | 2 +-
docs/libcurl/opts/GNURLINFO_FILETIME.3 | 11 +-
docs/libcurl/opts/GNURLOPT_COOKIEFILE.3 | 5 +-
docs/libcurl/opts/GNURLOPT_HEADER.3 | 18 +-
docs/libcurl/opts/GNURLOPT_HEADERFUNCTION.3 | 7 +-
docs/libcurl/opts/GNURLOPT_NOPROXY.3 | 7 +-
docs/libcurl/opts/GNURLOPT_PINNEDPUBLICKEY.3 | 10 +-
docs/libcurl/opts/GNURLOPT_RESOLVE.3 | 12 +-
docs/libcurl/opts/GNURLOPT_TIMEVALUE.3 | 5 +-
docs/libcurl/opts/Makefile.inc | 5 +
docs/libcurl/symbols-in-versions | 8 +
include/gnurl/curl.h | 29 +-
include/gnurl/curlver.h | 10 +-
include/gnurl/multi.h | 6 +-
include/gnurl/typecheck-gcc.h | 13 +
lib/Makefile.inc | 8 +-
lib/checksrc.pl | 34 ++-
lib/config-win32.h | 7 +-
lib/connect.c | 35 ++-
lib/connect.h | 7 +-
lib/content_encoding.c | 2 +-
lib/cookie.c | 5 +-
lib/curl_addrinfo.c | 6 +-
lib/curl_ctype.c | 122 ++++++++
lib/curl_ctype.h | 48 +++
lib/curl_fnmatch.c | 327 ++++++++------------
lib/curl_gssapi.c | 7 +-
lib/curl_ntlm_wb.c | 2 +-
lib/curl_range.c | 95 ++++++
lib/curl_range.h | 30 ++
lib/curl_sasl.c | 20 +-
lib/curl_setup.h | 32 +-
lib/curl_setup_once.h | 23 +-
lib/easy.c | 21 +-
lib/file.c | 70 +----
lib/formdata.c | 64 +---
lib/ftp.c | 97 ++----
lib/ftplistparser.c | 3 +
lib/getinfo.c | 12 +-
lib/hostip.c | 128 ++++++--
lib/http.c | 159 +++++-----
lib/http.h | 5 +-
lib/http2.c | 164 +++++-----
lib/http_chunks.c | 25 +-
lib/http_proxy.c | 8 +-
lib/krb5.c | 6 +-
lib/mime.c | 13 +-
lib/mime.h | 5 +
lib/mk-ca-bundle.vbs | 2 +-
lib/multi.c | 74 ++++-
lib/multihandle.h | 1 +
lib/multiif.h | 2 +
lib/non-ascii.c | 16 +-
lib/objnames.inc | 2 +-
lib/openldap.c | 45 +--
lib/parsedate.c | 100 +++---
lib/progress.c | 45 +--
lib/progress.h | 12 +-
lib/rtsp.c | 30 +-
lib/sendf.c | 65 ++--
lib/sendf.h | 4 +-
lib/setopt.c | 33 ++
lib/sha256.c | 12 +-
lib/smb.c | 15 +-
lib/smtp.c | 5 +
lib/ssh-libssh.c | 8 +-
lib/ssh.c | 22 +-
lib/strerror.c | 6 +
lib/telnet.c | 3 +-
lib/transfer.c | 22 +-
lib/transfer.h | 3 +-
lib/url.c | 13 +-
lib/urldata.h | 13 +-
lib/vtls/cyassl.c | 12 +-
lib/vtls/darwinssl.c | 73 ++++-
lib/vtls/gskit.c | 2 +-
lib/vtls/gtls.c | 15 +-
lib/vtls/nss.c | 12 +-
lib/vtls/openssl.c | 57 ++--
lib/vtls/schannel.c | 157 +++++++++-
lib/warnless.h | 5 +
m4/curl-openssl.m4 | 13 +-
m4/zz40-xc-ovr.m4 | 12 +-
packages/OS400/README.OS400 | 6 +-
packages/OS400/curl.inc.in | 11 +
packages/Symbian/group/libcurl.mmp | 4 +-
packages/vms/config_h.com | 2 +-
projects/README | 11 +-
projects/Windows/VC15/curl-all.sln | 2 +-
projects/Windows/VC15/lib/libcurl.sln | 2 +-
projects/Windows/VC15/src/curl.sln | 2 +-
projects/build-openssl.bat | 114 +++++--
projects/build-wolfssl.bat | 38 ++-
projects/generate.bat | 2 +
src/Makefile.inc | 8 +-
src/Makefile.netware | 6 +-
src/tool_cb_prg.c | 8 +-
src/tool_cfgable.c | 4 +-
src/tool_cfgable.h | 7 +-
src/tool_dirhie.c | 8 +-
src/tool_filetime.c | 154 ++++++++++
src/tool_filetime.h | 38 +++
src/tool_getparam.c | 34 ++-
src/tool_help.c | 12 +-
src/tool_operate.c | 100 +-----
tests/data/Makefile.inc | 22 +-
tests/data/test1154 | 57 ++++
tests/data/test1170 | 70 +++++
tests/data/test1171 | 70 +++++
tests/data/test1265 | 53 ++++
tests/data/test1292 | 50 +++
tests/data/test1538 | 6 +-
tests/data/test1555 | 50 +++
tests/data/test1556 | 63 ++++
tests/data/test1607 | 26 ++
tests/data/test319 | 57 ++++
tests/data/test326 | 66 ++++
tests/data/test340 | 40 +++
tests/data/test517 | 90 ------
tests/data/test555 | 4 -
tests/data/test655 | 50 +++
tests/data/test911 | 1 -
tests/data/{test911 => test951} | 16 +-
tests/data/{test911 => test952} | 16 +-
tests/ftpserver.pl | 8 +-
tests/libtest/Makefile.am | 4 +-
tests/libtest/Makefile.inc | 15 +-
tests/libtest/lib1555.c | 77 +++++
tests/libtest/lib1556.c | 78 +++++
tests/libtest/lib517.c | 228 +++++++-------
tests/libtest/lib544.c | 11 +-
tests/libtest/lib555.c | 24 +-
tests/libtest/lib560.c | 2 +-
tests/libtest/lib655.c | 112 +++++++
tests/libtest/mk-lib1521.pl | 3 +-
tests/nroff-scan.pl | 4 +-
tests/pathhelp.pm | 2 +-
tests/python_dependencies/impacket/spnego.py | 2 +-
tests/runtests.pl | 1 +
tests/server/CMakeLists.txt | 2 +-
tests/server/Makefile.inc | 6 +-
tests/server/sockfilt.c | 2 +-
tests/server/sws.c | 8 +-
tests/unit/Makefile.am | 4 +-
tests/unit/Makefile.inc | 5 +-
tests/unit/unit1307.c | 18 +-
tests/unit/unit1309.c | 14 +-
tests/unit/unit1607.c | 213 +++++++++++++
winbuild/Makefile.vc | 4 +-
winbuild/MakefileBuild.vc | 30 +-
196 files changed, 4587 insertions(+), 1980 deletions(-)
diff --cc README
index 8ebadeecd,f0b3b9393..ba216c0f1
--- a/README
+++ b/README
@@@ -1,169 -1,3 +1,171 @@@
+libgnurl is a fork of libcurl with the following major changes:
+
+Compilation requirements:
+* libgnurl must be compiled so that it supports only HTTP and HTTPS
+ (remove Gopher, SSH, IMAP, etc.)
+* libgnurl must be compiled so that it supports only GnuTLS
+ (remove CaySSL, QsoSSL, GSKit, etc.)
+* removed support for NTLM, GSSAPI, SPNEGO, LDAP, metalink, HTTP2
+* We recommend to build GnuTLS with DANE support, provided by 'unbound'.
+ This is optional.
+
+Changes to the code:
+* renamed the library binary from 'libcurl' to 'lignurl'
+* renamed files to ensure a system-wide installation of
+ libgnurl does not result in namespace collisions with libcurl
+* adjustments to the testsuite to address the gnurl specific build
++* Changes to be written:
++ * Replace the release process with more automatization
+
+Usage notes:
+* exported symbols were NOT renamed, so they still all have the
+ curl prefix; you should be able to start using libgnurl simply
+ by changing -lcurl to -lgnurl.
+
+Note that the compilation requirements are still not fully
+hardcoded, but work on this is in progress since gnURL 7.56.1-2.
+If you compile libgnurl, please pass '--disable-ntlm-wb' to the
+configure script. So instead of just running
+
+ ./configure
+
+you will run
+
+ ./configure --disable-ntlm-wb
+
+Naturally, you're free to specify additional options, such as
+"--prefix". Please keep in mind that you might have to pass
+"--with-ca-bundle=/etc/ssl/certs/ca-certificates.crt" or similar
+paths and options for gnurl to pick up certificates, just like
+curl.
+The result should have support only for HTTP, HTTPS (via
+GnuTLS), IDN, zlib and TLS-SRP. The output of the result from
+./gnurl --version should look like this:
+
+ curl 7.58.0-DEV (x86_64-unknown-linux-gnu) libcurl/7.58.0-DEV GnuTLS/3.5.13
zlib/1.2.11 libidn2/2.0.4
+ Release-Date: [unreleased]
+ Protocols: http https
+ Features: AsynchDNS IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP
UnixSockets HTTPS-proxy
+
+In previous versions (gnURL < 7.56.1-2) we used to socially enforce
+the following configuration, which was almost never done right on
+system distribution side:
+
+ ./configure --enable-ipv6 --with-gnutls --without-libssh2 \
+ --without-libmetalink --without-winidn --without-librtmp \
+ --without-nghttp2 --without-nss --without-cyassl \
+ --without-polarssl --without-ssl --without-winssl \
+ --without-darwinssl --disable-sspi --disable-ntlm-wb --disable-ldap \
+ --disable-rtsp --disable-dict --disable-telnet --disable-tftp \
+ --disable-pop3 --disable-imap --disable-smtp --disable-gopher \
+ --disable-file --disable-ftp --disable-smb
+
+
+Motivation:
+
+cURL supports a bunch of crypto backends. GNUnet requires the use of
+GnuTLS, but other variants are used by some distributions. Supporting
+other crypto backends would again expose us to a wider array of
+security issues, may create licensing issues and most importantly
+introduce new bugs as some crypto backends are known to introduce
+subtle runtime issues. While it is possible to have two versions of
+libcurl installed on the same system, this is error-prone, especially
+as if we are linked against the wrong version, the bugs that arise
+might be rather subtle.
+
+For GNUnet, we also need a particularly modern version of
+GnuTLS. Thus, it would anyway be necessary to recompile cURL for
+GNUnet. But what happens if one links cURL against this version of
+GnuTLS? Well, first one would install GnuTLS by hand in the
+system. Then, we build cURL. cURL will build against it just fine, but
+the linker will eventually complain bitterly. The reason is that cURL
+also links against a bunch of other system libraries (gssapi, ldap,
+ssh2, rtmp, krb5, sasl2, see discussion on obscure protocols above),
+which --- as they are part of the distribution --- were linked against
+an older version of GnuTLS. As a result, the same binary would be
+linked against two different versions of GnuTLS. That is typically a
+recipe for disaster. Thus, in order to avoid updating a dozen system
+libraries (and having two versions of those installed), it is
+necessary to disable all of those cURL features that GNUnet does not
+use, and there are many of those. For GNUnet, the more obscure
+protocols supported by cURL are close to dead code --- mostly
+harmless, but not useful. However, as some application may use one of
+those features, distributions are typically forced to enable all of
+those features, and thus including security issues that might arise
+from that code.
+
+So to use a modern version of GnuTLS, a sane approach is to disable
+all of the "optional" features of cURL that drag in system libraries
+that link against the older GnuTLS. That works, except that one should
+then NEVER install that version of libcurl in say /usr or /usr/local,
+as that may break other parts of the system that might depend on these
+features that we just disabled. Libtool versioning doesn't help here,
+as it is not intended to deal with libraries that have optional
+features. Naturally, installing cURL somewhere else is also
+problematic, as we now need to be really careful that the linker will
+link GNUnet against the right version. Note that none of this can
+really be trivially fixed by the cURL developers.
+
+Rename to Fix
+At this point, developers that don't want to rebuild an entire
+distribution from scratch get grumpy. Grumpy developers do silly
+things, like forking code to fix it. I called the fork gnurl (to be
+pronounced with a grumpy voice and an emphasis on the R) as it is bits
+of cURL, a bit more GNUish, for GNUnet, and gnurl can be pronounced to
+indicate the grumpy origins.
+
+How does forking fix it? Easy. First, we can get rid of all of the
+compatibility issues --- if you use libgnurl, you state that you don't
+need anything but HTTP/HTTPS. Those applications that need more,
+should stick with the original cURL. Those that do not, can choose to
+move to something simpler. As the library gets a new name, we do not
+have to worry about tons of packages breaking as soon as one rebuilds
+it. So renaming itself and saying that "libgnurl = libcurl with only
+HTTP/HTTPS support and GnuTLS" fixes 99% of the problems that darkened
+my mood. Note that this pretty much CANNOT be done without a fork, as
+renaming is an essential part of the fix. Now, there might be creative
+solutions to achieve the same thing within the standard cURL build
+system, but I'm not happy to wait for a decade for Daniel to review
+the patches. The changes libgnurl makes to curl are miniscule and can
+easily be applied again and again whenever libcurl makes a new
+release.
+
+
+Summary:
+
+I want to note that the main motiviations for this fork are technical
+The goal of the cURL project is clearly to support many crypto
+backends and many protocols. That is a worthy goal, and I wish them
+luck with it. The goal for libgnurl is to support only HTTP and HTTPS
+(and only HTTP 1.x) with a single crypto backend (GnuTLS) to ensure a
+small footprint and uniform experience for developers regardless of
+how libcurl was compiled.
+
+
+Using libgnurl:
+
+Projects that use cURL only for HTTP/HTTPS and that would work with
+GnuTLS should be able to switch to libgnurl by changing "-lcurl" to
+"-lgnurl". That's it. No changes to the source code should be
+required. Continue to read the cURL documentation --- as libgnurl
+strives for bug-for-bug compatibility with the HTTP/HTTPS/GnuTLS
+subset of cURL. However, we're happy to add new features relating to
+this core subset and might be easier to convince than the cURL
+developers.
+
+THANKS:
+
+gnURL was started within the GNUnet developer community,
+initiated by Christian Grothoff, with contributions by
+Jeff Burdges and Florian Dold.
+Maintenance and development since 7.52.0 (released 2016-12-21)
+is done by ng0.
+The developers of gnURL express their thanks to the cURL
+developer community.
+
+Now, on to the cURL documentation...
+
+
_ _ ____ _
___| | | | _ \| |
/ __| | | | |_) | |
diff --cc docs/examples/Makefile.am
index fed027166,e5ed222ef..8c0665c21
--- a/docs/examples/Makefile.am
+++ b/docs/examples/Makefile.am
@@@ -48,11 -48,14 +48,14 @@@ LIBS = $(BLANK_AT_MAKETIME
# Dependencies
if USE_EXPLICIT_LIB_DEPS
-LDADD = $(LIBDIR)/libcurl.la @LIBCURL_LIBS@
+LDADD = $(LIBDIR)/libgnurl.la @LIBCURL_LIBS@
else
-LDADD = $(LIBDIR)/libcurl.la
+LDADD = $(LIBDIR)/libgnurl.la
endif
+ # This might hold -Werror
+ CFLAGS += @CURL_CFLAG_EXTRAS@
+
# Makefile.inc provides the check_PROGRAMS and COMPLICATED_EXAMPLES defines
include Makefile.inc
diff --cc docs/libcurl/Makefile.inc
index 7d45ffa67,eea48c41e..22eb865eb
--- a/docs/libcurl/Makefile.inc
+++ b/docs/libcurl/Makefile.inc
@@@ -1,24 -1,25 +1,25 @@@
# Shared between Makefile.am and CMakeLists.txt
-man_MANS = curl_easy_cleanup.3 curl_easy_getinfo.3 curl_easy_init.3 \
- curl_easy_perform.3 curl_easy_setopt.3 curl_easy_duphandle.3 \
- curl_formadd.3 curl_formfree.3 curl_getdate.3 curl_getenv.3 \
- curl_slist_append.3 curl_slist_free_all.3 curl_version.3 \
- curl_version_info.3 curl_escape.3 curl_unescape.3 curl_free.3 \
- curl_strequal.3 curl_strnequal.3 curl_mprintf.3 curl_global_init.3 \
- curl_global_cleanup.3 curl_multi_add_handle.3 curl_multi_cleanup.3 \
- curl_multi_fdset.3 curl_multi_info_read.3 curl_multi_init.3 \
- curl_multi_perform.3 curl_multi_remove_handle.3 curl_share_cleanup.3 \
- curl_share_init.3 curl_share_setopt.3 libcurl.3 libcurl-easy.3 \
- libcurl-multi.3 libcurl-share.3 libcurl-errors.3 curl_easy_strerror.3 \
- curl_multi_strerror.3 curl_share_strerror.3 curl_global_init_mem.3 \
- libcurl-tutorial.3 curl_easy_reset.3 curl_easy_escape.3 \
- curl_easy_unescape.3 curl_multi_setopt.3 curl_multi_socket.3 \
- curl_multi_timeout.3 curl_formget.3 curl_multi_assign.3 \
- curl_easy_pause.3 curl_easy_recv.3 curl_easy_send.3 \
- curl_multi_socket_action.3 curl_multi_wait.3 libcurl-symbols.3 \
- libcurl-thread.3 curl_multi_socket_all.3 curl_global_sslset.3 \
- curl_mime_init.3 curl_mime_free.3 curl_mime_addpart.3 curl_mime_name.3 \
- curl_mime_data.3 curl_mime_data_cb.3 curl_mime_filedata.3 \
- curl_mime_filename.3 curl_mime_subparts.3 \
- curl_mime_type.3 curl_mime_headers.3 curl_mime_encoder.3 libcurl-env.3 \
- libcurl-security.3
+man_MANS = gnurl_easy_cleanup.3 gnurl_easy_getinfo.3 gnurl_easy_init.3 \
+ gnurl_easy_perform.3 gnurl_easy_setopt.3 gnurl_easy_duphandle.3 \
+ gnurl_formadd.3 gnurl_formfree.3 gnurl_getdate.3 gnurl_getenv.3 \
+ gnurl_slist_append.3 gnurl_slist_free_all.3 gnurl_version.3 \
+ gnurl_version_info.3 gnurl_escape.3 gnurl_unescape.3 gnurl_free.3 \
+ gnurl_strequal.3 gnurl_strnequal.3 gnurl_mprintf.3 gnurl_global_init.3 \
+ gnurl_global_cleanup.3 gnurl_multi_add_handle.3 gnurl_multi_cleanup.3 \
+ gnurl_multi_fdset.3 gnurl_multi_info_read.3 gnurl_multi_init.3 \
+ gnurl_multi_perform.3 gnurl_multi_remove_handle.3 gnurl_share_cleanup.3 \
+ gnurl_share_init.3 gnurl_share_setopt.3 libgnurl.3 libgnurl-easy.3 \
+ libgnurl-multi.3 libgnurl-share.3 libgnurl-errors.3 gnurl_easy_strerror.3 \
+ gnurl_multi_strerror.3 gnurl_share_strerror.3 gnurl_global_init_mem.3 \
+ libgnurl-tutorial.3 gnurl_easy_reset.3 gnurl_easy_escape.3 \
+ gnurl_easy_unescape.3 gnurl_multi_setopt.3 gnurl_multi_socket.3 \
+ gnurl_multi_timeout.3 gnurl_formget.3 gnurl_multi_assign.3 \
+ gnurl_easy_pause.3 gnurl_easy_recv.3 gnurl_easy_send.3 \
+ gnurl_multi_socket_action.3 gnurl_multi_wait.3 libgnurl-symbols.3 \
+ libgnurl-thread.3 gnurl_multi_socket_all.3 gnurl_global_sslset.3 \
+ gnurl_mime_init.3 gnurl_mime_free.3 gnurl_mime_addpart.3 gnurl_mime_name.3 \
+ gnurl_mime_data.3 gnurl_mime_data_cb.3 gnurl_mime_filedata.3 \
+ gnurl_mime_filename.3 gnurl_mime_subparts.3 \
- gnurl_mime_type.3 gnurl_mime_headers.3 gnurl_mime_encoder.3 libgnurl-env.3
++ gnurl_mime_type.3 gnurl_mime_headers.3 gnurl_mime_encoder.3 libgnurl-env.3 \
++ libgnurl-security.3
diff --cc docs/libcurl/gnurl_easy_getinfo.3
index c2ebd16b3,000000000..351a6b8d9
mode 100644,000000..100644
--- a/docs/libcurl/gnurl_easy_getinfo.3
+++ b/docs/libcurl/gnurl_easy_getinfo.3
@@@ -1,248 -1,0 +1,249 @@@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
- .\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <address@hidden>, et al.
++.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <address@hidden>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF
ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH curl_easy_getinfo 3 "11 Feb 2009" "libcurl 7.19.4" "libcurl Manual"
+.SH NAME
+curl_easy_getinfo - extract information from a curl handle
+.SH SYNOPSIS
+.B #include <gnurl/curl.h>
+
+.B "CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ... );"
+
+.SH DESCRIPTION
+Request internal information from the curl session with this function. The
+third argument \fBMUST\fP be a pointer to a long, a pointer to a char *, a
+pointer to a struct curl_slist * or a pointer to a double (as this
+documentation describes further down). The data pointed-to will be filled in
+accordingly and can be relied upon only if the function returns CURLE_OK. Use
+this function AFTER a performed transfer if you want to get transfer related
+data.
+
+You should not free the memory returned by this function unless it is
+explicitly mentioned below.
+.SH AVAILABLE INFORMATION
+The following information can be extracted:
+.IP CURLINFO_EFFECTIVE_URL
+Last used URL.
+See \fICURLINFO_EFFECTIVE_URL(3)\fP
+.IP CURLINFO_RESPONSE_CODE
+Last received response code.
+See \fICURLINFO_RESPONSE_CODE(3)\fP
+.IP CURLINFO_HTTP_CONNECTCODE
+Last proxy CONNECT response code.
+See \fICURLINFO_HTTP_CONNECTCODE(3)\fP
+.IP CURLINFO_HTTP_VERSION
+The http version used in the connection.
+See \fICURLINFO_HTTP_VERSION(3)\fP
+.IP CURLINFO_FILETIME
- Remote time of the retrieved document.
- See \fICURLINFO_FILETIME(3)\fP
++Remote time of the retrieved document. See \fICURLINFO_FILETIME(3)\fP
++.IP CURLINFO_FILETIME_T
++Remote time of the retrieved document. See \fICURLINFO_FILETIME_T(3)\fP
+.IP CURLINFO_TOTAL_TIME
+Total time of previous transfer.
+See \fICURLINFO_TOTAL_TIME(3)\fP
+.IP CURLINFO_NAMELOOKUP_TIME
+Time from start until name resolving completed.
+See \fICURLINFO_NAMELOOKUP_TIME(3)\fP
+.IP CURLINFO_CONNECT_TIME
+Time from start until remote host or proxy completed.
+See \fICURLINFO_CONNECT_TIME(3)\fP
+.IP CURLINFO_APPCONNECT_TIME
+Time from start until SSL/SSH handshake completed.
+See \fICURLINFO_APPCONNECT_TIME(3)\fP
+.IP CURLINFO_PRETRANSFER_TIME
+Time from start until just before the transfer begins.
+See \fICURLINFO_PRETRANSFER_TIME(3)\fP
+.IP CURLINFO_STARTTRANSFER_TIME
+Time from start until just when the first byte is received.
+See \fICURLINFO_STARTTRANSFER_TIME(3)\fP
+.IP CURLINFO_REDIRECT_TIME
+Time taken for all redirect steps before the final transfer.
+See \fICURLINFO_REDIRECT_TIME(3)\fP
+.IP CURLINFO_REDIRECT_COUNT
+Total number of redirects that were followed.
+See \fICURLINFO_REDIRECT_COUNT(3)\fP
+.IP CURLINFO_REDIRECT_URL
+URL a redirect would take you to, had you enabled redirects.
+See \fICURLINFO_REDIRECT_URL(3)\fP
+.IP CURLINFO_SIZE_UPLOAD
+(Deprecated) Number of bytes uploaded.
+See \fICURLINFO_SIZE_UPLOAD(3)\fP
+.IP CURLINFO_SIZE_UPLOAD_T
+Number of bytes uploaded.
+See \fICURLINFO_SIZE_UPLOAD_T(3)\fP
+.IP CURLINFO_SIZE_DOWNLOAD
+(Deprecated) Number of bytes downloaded.
+See \fICURLINFO_SIZE_DOWNLOAD(3)\fP
+.IP CURLINFO_SIZE_DOWNLOAD_T
+Number of bytes downloaded.
+See \fICURLINFO_SIZE_DOWNLOAD_T(3)\fP
+.IP CURLINFO_SPEED_DOWNLOAD
+(Deprecated) Average download speed.
+See \fICURLINFO_SPEED_DOWNLOAD(3)\fP
+.IP CURLINFO_SPEED_DOWNLOAD_T
+Average download speed.
+See \fICURLINFO_SPEED_DOWNLOAD_T(3)\fP
+.IP CURLINFO_SPEED_UPLOAD
+(Deprecated) Average upload speed.
+See \fICURLINFO_SPEED_UPLOAD(3)\fP
+.IP CURLINFO_SPEED_UPLOAD_T
+Average upload speed.
+See \fICURLINFO_SPEED_UPLOAD_T(3)\fP
+.IP CURLINFO_HEADER_SIZE
+Number of bytes of all headers received.
+See \fICURLINFO_HEADER_SIZE(3)\fP
+.IP CURLINFO_REQUEST_SIZE
+Number of bytes sent in the issued HTTP requests.
+See \fICURLINFO_REQUEST_SIZE(3)\fP
+.IP CURLINFO_SSL_VERIFYRESULT
+Certificate verification result.
+See \fICURLINFO_SSL_VERIFYRESULT(3)\fP
+.IP CURLINFO_PROXY_SSL_VERIFYRESULT
+Proxy certificate verification result.
+See \fICURLINFO_PROXY_SSL_VERIFYRESULT(3)\fP
+.IP CURLINFO_SSL_ENGINES
+A list of OpenSSL crypto engines.
+See \fICURLINFO_SSL_ENGINES(3)\fP
+.IP CURLINFO_CONTENT_LENGTH_DOWNLOAD
+(Deprecated) Content length from the Content-Length header.
+See \fICURLINFO_CONTENT_LENGTH_DOWNLOAD(3)\fP
+.IP CURLINFO_CONTENT_LENGTH_DOWNLOAD_T
+Content length from the Content-Length header.
+See \fICURLINFO_CONTENT_LENGTH_DOWNLOAD_T(3)\fP
+.IP CURLINFO_CONTENT_LENGTH_UPLOAD
+(Deprecated) Upload size. See \fICURLINFO_CONTENT_LENGTH_UPLOAD(3)\fP
+.IP CURLINFO_CONTENT_LENGTH_UPLOAD_T
+Upload size. See \fICURLINFO_CONTENT_LENGTH_UPLOAD_T(3)\fP
+.IP CURLINFO_CONTENT_TYPE
+Content type from the Content-Type header.
+See \fICURLINFO_CONTENT_TYPE(3)\fP
+.IP CURLINFO_PRIVATE
+User's private data pointer.
+See \fICURLINFO_PRIVATE(3)\fP
+.IP CURLINFO_HTTPAUTH_AVAIL
+Available HTTP authentication methods.
+See \fICURLINFO_HTTPAUTH_AVAIL(3)\fP
+.IP CURLINFO_PROXYAUTH_AVAIL
+Available HTTP proxy authentication methods.
+See \fICURLINFO_PROXYAUTH_AVAIL(3)\fP
+.IP CURLINFO_OS_ERRNO
+The errno from the last failure to connect.
+See \fICURLINFO_OS_ERRNO(3)\fP
+.IP CURLINFO_NUM_CONNECTS
+Number of new successful connections used for previous transfer.
+See \fICURLINFO_NUM_CONNECTS(3)\fP
+.IP CURLINFO_PRIMARY_IP
+IP address of the last connection.
+See \fICURLINFO_PRIMARY_IP(3)\fP
+.IP CURLINFO_PRIMARY_PORT
+Port of the last connection.
+See \fICURLINFO_PRIMARY_PORT(3)\fP
+.IP CURLINFO_LOCAL_IP
+Local-end IP address of last connection.
+See \fICURLINFO_LOCAL_IP(3)\fP
+.IP CURLINFO_LOCAL_PORT
+Local-end port of last connection.
+See \fICURLINFO_LOCAL_PORT(3)\fP
+.IP CURLINFO_COOKIELIST
+List of all known cookies.
+See \fICURLINFO_COOKIELIST(3)\fP
+.IP CURLINFO_LASTSOCKET
+Last socket used.
+See \fICURLINFO_LASTSOCKET(3)\fP
+.IP CURLINFO_ACTIVESOCKET
+The session's active socket.
+See \fICURLINFO_ACTIVESOCKET(3)\fP
+.IP CURLINFO_FTP_ENTRY_PATH
+The entry path after logging in to an FTP server.
+See \fICURLINFO_FTP_ENTRY_PATH(3)\fP
+.IP CURLINFO_CERTINFO
+Certificate chain.
+See \fICURLINFO_CERTINFO(3)\fP
+.IP CURLINFO_TLS_SSL_PTR
+TLS session info that can be used for further processing.
+See \fICURLINFO_TLS_SSL_PTR(3)\fP
+.IP CURLINFO_TLS_SESSION
+TLS session info that can be used for further processing. See
+\fICURLINFO_TLS_SESSION(3)\fP. Deprecated option, use
+\fICURLINFO_TLS_SSL_PTR(3)\fP instead!
+.IP CURLINFO_CONDITION_UNMET
+Whether or not a time conditional was met.
+See \fICURLINFO_CONDITION_UNMET(3)\fP
+.IP CURLINFO_RTSP_SESSION_ID
+RTSP session ID.
+See \fICURLINFO_RTSP_SESSION_ID(3)\fP
+.IP CURLINFO_RTSP_CLIENT_CSEQ
+RTSP CSeq that will next be used.
+See \fICURLINFO_RTSP_CLIENT_CSEQ(3)\fP
+.IP CURLINFO_RTSP_SERVER_CSEQ
+RTSP CSeq that will next be expected.
+See \fICURLINFO_RTSP_SERVER_CSEQ(3)\fP
+.IP CURLINFO_RTSP_CSEQ_RECV
+RTSP CSeq last received.
+See \fICURLINFO_RTSP_CSEQ_RECV(3)\fP
+.IP CURLINFO_PROTOCOL
+The protocol used for the connection. (Added in 7.52.0)
+See \fICURLINFO_PROTOCOL(3)\fP
+.IP CURLINFO_SCHEME
+The scheme used for the connection. (Added in 7.52.0)
+See \fICURLINFO_SCHEME(3)\fP
+.SH TIMES
+.nf
+An overview of the six time values available from curl_easy_getinfo()
+
+curl_easy_perform()
+ |
+ |--NAMELOOKUP
+ |--|--CONNECT
+ |--|--|--APPCONNECT
+ |--|--|--|--PRETRANSFER
+ |--|--|--|--|--STARTTRANSFER
+ |--|--|--|--|--|--TOTAL
+ |--|--|--|--|--|--REDIRECT
+.fi
+.IP NAMELOOKUP
+\fICURLINFO_NAMELOOKUP_TIME\fP. The time it took from the start until the name
+resolving was completed.
+.IP CONNECT
+\fICURLINFO_CONNECT_TIME\fP. The time it took from the start until the connect
+to the remote host (or proxy) was completed.
+.IP APPCONNECT
+\fICURLINFO_APPCONNECT_TIME\fP. The time it took from the start until the SSL
+connect/handshake with the remote host was completed. (Added in in 7.19.0)
+.IP PRETRANSFER
+\fICURLINFO_PRETRANSFER_TIME\fP. The time it took from the start until the
+file transfer is just about to begin. This includes all pre-transfer commands
+and negotiations that are specific to the particular protocol(s) involved.
+.IP STARTTRANSFER
+\fICURLINFO_STARTTRANSFER_TIME\fP. The time it took from the start until the
+first byte is received by libcurl.
+.IP TOTAL
+\fICURLINFO_TOTAL_TIME\fP. Total time of the previous request.
+.IP REDIRECT
+\fICURLINFO_REDIRECT_TIME\fP. The time it took for all redirection steps
+include name lookup, connect, pretransfer and transfer before final
+transaction was started. So, this is zero if no redirection took place.
+.SH RETURN VALUE
+If the operation was successful, CURLE_OK is returned. Otherwise an
+appropriate error code will be returned.
+.SH "SEE ALSO"
+.BR curl_easy_setopt "(3)"
diff --cc docs/libcurl/gnurl_easy_setopt.3
index cafcf0819,000000000..cd05dd422
mode 100644,000000..100644
--- a/docs/libcurl/gnurl_easy_setopt.3
+++ b/docs/libcurl/gnurl_easy_setopt.3
@@@ -1,600 -1,0 +1,608 @@@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
- .\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <address@hidden>, et al.
++.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <address@hidden>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF
ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH curl_easy_setopt 3 "25 Jun 2014" "libcurl 7.38.0" "libcurl Manual"
+.SH NAME
+curl_easy_setopt \- set options for a curl easy handle
+.SH SYNOPSIS
+#include <gnurl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLoption option, parameter);
+.SH DESCRIPTION
+\fIcurl_easy_setopt(3)\fP is used to tell libcurl how to behave. By setting
+the appropriate options, the application can change libcurl's behavior. All
+options are set with an \fIoption\fP followed by a \fIparameter\fP. That
+parameter can be a \fBlong\fP, a \fBfunction pointer\fP, an \fBobject
+pointer\fP or a \fBcurl_off_t\fP, depending on what the specific option
+expects. Read this manual carefully as bad input values may cause libcurl to
+behave badly! You can only set one option in each function call. A typical
+application uses many \fIcurl_easy_setopt(3)\fP calls in the setup phase.
+
+Options set with this function call are valid for all forthcoming transfers
+performed using this \fIhandle\fP. The options are not in any way reset
+between transfers, so if you want subsequent transfers with different options,
+you must change them between the transfers. You can optionally reset all
+options back to internal default with \fIcurl_easy_reset(3)\fP.
+
+Strings passed to libcurl as 'char *' arguments, are copied by the library;
+thus the string storage associated to the pointer argument may be overwritten
+after \fIcurl_easy_setopt(3)\fP returns. The only exception to this rule is
+really \fICURLOPT_POSTFIELDS(3)\fP, but the alternative that copies the string
+\fICURLOPT_COPYPOSTFIELDS(3)\fP has some usage characteristics you need to
+read up on.
+
+The order in which the options are set does not matter.
+
+Before version 7.17.0, strings were not copied. Instead the user was forced
+keep them available until libcurl no longer needed them.
+
+The \fIhandle\fP is the return code from a \fIcurl_easy_init(3)\fP or
+\fIcurl_easy_duphandle(3)\fP call.
+.SH BEHAVIOR OPTIONS
+.IP CURLOPT_VERBOSE
+Display verbose information. See \fICURLOPT_VERBOSE(3)\fP
+.IP CURLOPT_HEADER
+Include the header in the body output. See \fICURLOPT_HEADER(3)\fP
+.IP CURLOPT_NOPROGRESS
+Shut off the progress meter. See \fICURLOPT_NOPROGRESS(3)\fP
+.IP CURLOPT_NOSIGNAL
+Do not install signal handlers. See \fICURLOPT_NOSIGNAL(3)\fP
+.IP CURLOPT_WILDCARDMATCH
+Transfer multiple files according to a file name pattern. See
\fICURLOPT_WILDCARDMATCH(3)\fP
+.SH CALLBACK OPTIONS
+.IP CURLOPT_WRITEFUNCTION
+Callback for writing data. See \fICURLOPT_WRITEFUNCTION(3)\fP
+.IP CURLOPT_WRITEDATA
+Data pointer to pass to the write callback. See \fICURLOPT_WRITEDATA(3)\fP
+.IP CURLOPT_READFUNCTION
+Callback for reading data. See \fICURLOPT_READFUNCTION(3)\fP
+.IP CURLOPT_READDATA
+Data pointer to pass to the read callback. See \fICURLOPT_READDATA(3)\fP
+.IP CURLOPT_IOCTLFUNCTION
+Callback for I/O operations. See \fICURLOPT_IOCTLFUNCTION(3)\fP
+.IP CURLOPT_IOCTLDATA
+Data pointer to pass to the I/O callback. See \fICURLOPT_IOCTLDATA(3)\fP
+.IP CURLOPT_SEEKFUNCTION
+Callback for seek operations. See \fICURLOPT_SEEKFUNCTION(3)\fP
+.IP CURLOPT_SEEKDATA
+Data pointer to pass to the seek callback. See \fICURLOPT_SEEKDATA(3)\fP
+.IP CURLOPT_SOCKOPTFUNCTION
+Callback for sockopt operations. See \fICURLOPT_SOCKOPTFUNCTION(3)\fP
+.IP CURLOPT_SOCKOPTDATA
+Data pointer to pass to the sockopt callback. See \fICURLOPT_SOCKOPTDATA(3)\fP
+.IP CURLOPT_OPENSOCKETFUNCTION
+Callback for socket creation. See \fICURLOPT_OPENSOCKETFUNCTION(3)\fP
+.IP CURLOPT_OPENSOCKETDATA
+Data pointer to pass to the open socket callback. See
\fICURLOPT_OPENSOCKETDATA(3)\fP
+.IP CURLOPT_CLOSESOCKETFUNCTION
+Callback for closing socket. See \fICURLOPT_CLOSESOCKETFUNCTION(3)\fP
+.IP CURLOPT_CLOSESOCKETDATA
+Data pointer to pass to the close socket callback. See
\fICURLOPT_CLOSESOCKETDATA(3)\fP
+.IP CURLOPT_PROGRESSFUNCTION
+OBSOLETE callback for progress meter. See \fICURLOPT_PROGRESSFUNCTION(3)\fP
+.IP CURLOPT_PROGRESSDATA
+Data pointer to pass to the progress meter callback. See
\fICURLOPT_PROGRESSDATA(3)\fP
+.IP CURLOPT_XFERINFOFUNCTION
+Callback for progress meter. See \fICURLOPT_XFERINFOFUNCTION(3)\fP
+.IP CURLOPT_XFERINFODATA
+Data pointer to pass to the progress meter callback. See
\fICURLOPT_XFERINFODATA(3)\fP
+.IP CURLOPT_HEADERFUNCTION
+Callback for writing received headers. See \fICURLOPT_HEADERFUNCTION(3)\fP
+.IP CURLOPT_HEADERDATA
+Data pointer to pass to the header callback. See \fICURLOPT_HEADERDATA(3)\fP
+.IP CURLOPT_DEBUGFUNCTION
+Callback for debug information. See \fICURLOPT_DEBUGFUNCTION(3)\fP
+.IP CURLOPT_DEBUGDATA
+Data pointer to pass to the debug callback. See \fICURLOPT_DEBUGDATA(3)\fP
+.IP CURLOPT_SSL_CTX_FUNCTION
+Callback for SSL context logic. See \fICURLOPT_SSL_CTX_FUNCTION(3)\fP
+.IP CURLOPT_SSL_CTX_DATA
+Data pointer to pass to the SSL context callback. See
\fICURLOPT_SSL_CTX_DATA(3)\fP
+.IP CURLOPT_CONV_TO_NETWORK_FUNCTION
+Callback for code base conversion. See
\fICURLOPT_CONV_TO_NETWORK_FUNCTION(3)\fP
+.IP CURLOPT_CONV_FROM_NETWORK_FUNCTION
+Callback for code base conversion. See
\fICURLOPT_CONV_FROM_NETWORK_FUNCTION(3)\fP
+.IP CURLOPT_CONV_FROM_UTF8_FUNCTION
+Callback for code base conversion. See
\fICURLOPT_CONV_FROM_UTF8_FUNCTION(3)\fP
+.IP CURLOPT_INTERLEAVEFUNCTION
+Callback for RTSP interleaved data. See \fICURLOPT_INTERLEAVEFUNCTION(3)\fP
+.IP CURLOPT_INTERLEAVEDATA
+Data pointer to pass to the RTSP interleave callback. See
\fICURLOPT_INTERLEAVEDATA(3)\fP
+.IP CURLOPT_CHUNK_BGN_FUNCTION
+Callback for wildcard download start of chunk. See
\fICURLOPT_CHUNK_BGN_FUNCTION(3)\fP
+.IP CURLOPT_CHUNK_END_FUNCTION
+Callback for wildcard download end of chunk. See
\fICURLOPT_CHUNK_END_FUNCTION(3)\fP
+.IP CURLOPT_CHUNK_DATA
+Data pointer to pass to the chunk callbacks. See \fICURLOPT_CHUNK_DATA(3)\fP
+.IP CURLOPT_FNMATCH_FUNCTION
+Callback for wildcard matching. See \fICURLOPT_FNMATCH_FUNCTION(3)\fP
+.IP CURLOPT_FNMATCH_DATA
+Data pointer to pass to the wildcard matching callback. See
\fICURLOPT_FNMATCH_DATA(3)\fP
+.IP CURLOPT_SUPPRESS_CONNECT_HEADERS
+Suppress proxy CONNECT response headers from user callbacks. See
\fICURLOPT_SUPPRESS_CONNECT_HEADERS(3)\fP
++.IP CURLOPT_RESOLVER_START_FUNCTION
++Callback to be called before a new resolve request is started. See
\fICURLOPT_RESOLVER_START_FUNCTION(3)\fP
++.IP CURLOPT_RESOLVER_START_DATA
++Data pointer to pass to resolver start callback. See
\fICURLOPT_RESOLVER_START_DATA(3)\fP
+.SH ERROR OPTIONS
+.IP CURLOPT_ERRORBUFFER
+Error message buffer. See \fICURLOPT_ERRORBUFFER(3)\fP
+.IP CURLOPT_STDERR
+stderr replacement stream. See \fICURLOPT_STDERR(3)\fP
+.IP CURLOPT_FAILONERROR
+Fail on HTTP 4xx errors. \fICURLOPT_FAILONERROR(3)\fP
+.IP CURLOPT_KEEP_SENDING_ON_ERROR
+Keep sending on HTTP >= 300 errors. \fICURLOPT_KEEP_SENDING_ON_ERROR(3)\fP
+.SH NETWORK OPTIONS
+.IP CURLOPT_URL
+URL to work on. See \fICURLOPT_URL(3)\fP
+.IP CURLOPT_PATH_AS_IS
+Disable squashing /../ and /./ sequences in the path. See
\fICURLOPT_PATH_AS_IS(3)\fP
+.IP CURLOPT_PROTOCOLS
+Allowed protocols. See \fICURLOPT_PROTOCOLS(3)\fP
+.IP CURLOPT_REDIR_PROTOCOLS
+Protocols to allow redirects to. See \fICURLOPT_REDIR_PROTOCOLS(3)\fP
+.IP CURLOPT_DEFAULT_PROTOCOL
+Default protocol. See \fICURLOPT_DEFAULT_PROTOCOL(3)\fP
+.IP CURLOPT_PROXY
+Proxy to use. See \fICURLOPT_PROXY(3)\fP
+.IP CURLOPT_PRE_PROXY
+Socks proxy to use. See \fICURLOPT_PRE_PROXY(3)\fP
+.IP CURLOPT_PROXYPORT
+Proxy port to use. See \fICURLOPT_PROXYPORT(3)\fP
+.IP CURLOPT_PROXYTYPE
+Proxy type. See \fICURLOPT_PROXYTYPE(3)\fP
+.IP CURLOPT_NOPROXY
+Filter out hosts from proxy use. \fICURLOPT_NOPROXY(3)\fP
+.IP CURLOPT_HTTPPROXYTUNNEL
+Tunnel through the HTTP proxy. \fICURLOPT_HTTPPROXYTUNNEL(3)\fP
+.IP CURLOPT_CONNECT_TO
+Connect to a specific host and port. See \fICURLOPT_CONNECT_TO(3)\fP
+.IP CURLOPT_SOCKS5_AUTH
+Socks5 authentication methods. See \fICURLOPT_SOCKS5_AUTH(3)\fP
+.IP CURLOPT_SOCKS5_GSSAPI_SERVICE
+Socks5 GSSAPI service name. \fICURLOPT_SOCKS5_GSSAPI_SERVICE(3)\fP
+.IP CURLOPT_SOCKS5_GSSAPI_NEC
+Socks5 GSSAPI NEC mode. See \fICURLOPT_SOCKS5_GSSAPI_NEC(3)\fP
+.IP CURLOPT_PROXY_SERVICE_NAME
+Proxy authentication service name. \fICURLOPT_PROXY_SERVICE_NAME(3)\fP
+.IP CURLOPT_SERVICE_NAME
+Authentication service name. \fICURLOPT_SERVICE_NAME(3)\fP
+.IP CURLOPT_INTERFACE
+Bind connection locally to this. See \fICURLOPT_INTERFACE(3)\fP
+.IP CURLOPT_LOCALPORT
+Bind connection locally to this port. See \fICURLOPT_LOCALPORT(3)\fP
+.IP CURLOPT_LOCALPORTRANGE
+Bind connection locally to port range. See \fICURLOPT_LOCALPORTRANGE(3)\fP
+.IP CURLOPT_DNS_CACHE_TIMEOUT
+Timeout for DNS cache. See \fICURLOPT_DNS_CACHE_TIMEOUT(3)\fP
+.IP CURLOPT_DNS_USE_GLOBAL_CACHE
+OBSOLETE Enable global DNS cache. See \fICURLOPT_DNS_USE_GLOBAL_CACHE(3)\fP
+.IP CURLOPT_BUFFERSIZE
+Ask for alternate buffer size. See \fICURLOPT_BUFFERSIZE(3)\fP
+.IP CURLOPT_PORT
+Port number to connect to. See \fICURLOPT_PORT(3)\fP
+.IP CURLOPT_TCP_FASTOPEN
+Enable TFO, TCP Fast Open. See \fICURLOPT_TCP_FASTOPEN(3)\fP
+.IP CURLOPT_TCP_NODELAY
+Disable the Nagle algorithm. See \fICURLOPT_TCP_NODELAY(3)\fP
+.IP CURLOPT_ADDRESS_SCOPE
+IPv6 scope for local addresses. See \fICURLOPT_ADDRESS_SCOPE(3)\fP
+.IP CURLOPT_TCP_KEEPALIVE
+Enable TCP keep-alive. See \fICURLOPT_TCP_KEEPALIVE(3)\fP
+.IP CURLOPT_TCP_KEEPIDLE
+Idle time before sending keep-alive. See \fICURLOPT_TCP_KEEPIDLE(3)\fP
+.IP CURLOPT_TCP_KEEPINTVL
+Interval between keep-alive probes. See \fICURLOPT_TCP_KEEPINTVL(3)\fP
+.IP CURLOPT_UNIX_SOCKET_PATH
+Path to a Unix domain socket. See \fICURLOPT_UNIX_SOCKET_PATH(3)\fP
+.IP CURLOPT_ABSTRACT_UNIX_SOCKET
+Path to an abstract Unix domain socket. See
\fICURLOPT_ABSTRACT_UNIX_SOCKET(3)\fP
+.SH NAMES and PASSWORDS OPTIONS (Authentication)
+.IP CURLOPT_NETRC
+Enable .netrc parsing. See \fICURLOPT_NETRC(3)\fP
+.IP CURLOPT_NETRC_FILE
+\&.netrc file name. See \fICURLOPT_NETRC_FILE(3)\fP
+.IP CURLOPT_USERPWD
+User name and password. See \fICURLOPT_USERPWD(3)\fP
+.IP CURLOPT_PROXYUSERPWD
+Proxy user name and password. See \fICURLOPT_PROXYUSERPWD(3)\fP
+.IP CURLOPT_USERNAME
+User name. See \fICURLOPT_USERNAME(3)\fP
+.IP CURLOPT_PASSWORD
+Password. See \fICURLOPT_PASSWORD(3)\fP
+.IP CURLOPT_LOGIN_OPTIONS
+Login options. See \fICURLOPT_LOGIN_OPTIONS(3)\fP
+.IP CURLOPT_PROXYUSERNAME
+Proxy user name. See \fICURLOPT_PROXYUSERNAME(3)\fP
+.IP CURLOPT_PROXYPASSWORD
+Proxy password. See \fICURLOPT_PROXYPASSWORD(3)\fP
+.IP CURLOPT_HTTPAUTH
+HTTP server authentication methods. See \fICURLOPT_HTTPAUTH(3)\fP
+.IP CURLOPT_TLSAUTH_USERNAME
+TLS authentication user name. See \fICURLOPT_TLSAUTH_USERNAME(3)\fP
+.IP CURLOPT_PROXY_TLSAUTH_USERNAME
+Proxy TLS authentication user name. See
\fICURLOPT_PROXY_TLSAUTH_USERNAME(3)\fP
+.IP CURLOPT_TLSAUTH_PASSWORD
+TLS authentication password. See \fICURLOPT_TLSAUTH_PASSWORD(3)\fP
+.IP CURLOPT_PROXY_TLSAUTH_PASSWORD
+Proxy TLS authentication password. See \fICURLOPT_PROXY_TLSAUTH_PASSWORD(3)\fP
+.IP CURLOPT_TLSAUTH_TYPE
+TLS authentication methods. See \fICURLOPT_TLSAUTH_TYPE(3)\fP
+.IP CURLOPT_PROXY_TLSAUTH_TYPE
+Proxy TLS authentication methods. See \fICURLOPT_PROXY_TLSAUTH_TYPE(3)\fP
+.IP CURLOPT_PROXYAUTH
+HTTP proxy authentication methods. See \fICURLOPT_PROXYAUTH(3)\fP
+.IP CURLOPT_SASL_IR
+Enable SASL initial response. See \fICURLOPT_SASL_IR(3)\fP
+.IP CURLOPT_XOAUTH2_BEARER
+OAuth2 bearer token. See \fICURLOPT_XOAUTH2_BEARER(3)\fP
+.SH HTTP OPTIONS
+.IP CURLOPT_AUTOREFERER
+Automatically set Referer: header. See \fICURLOPT_AUTOREFERER(3)\fP
+.IP CURLOPT_ACCEPT_ENCODING
+Accept-Encoding and automatic decompressing data. See
\fICURLOPT_ACCEPT_ENCODING(3)\fP
+.IP CURLOPT_TRANSFER_ENCODING
+Request Transfer-Encoding. See \fICURLOPT_TRANSFER_ENCODING(3)\fP
+.IP CURLOPT_FOLLOWLOCATION
+Follow HTTP redirects. See \fICURLOPT_FOLLOWLOCATION(3)\fP
+.IP CURLOPT_UNRESTRICTED_AUTH
+Do not restrict authentication to original host.
\fICURLOPT_UNRESTRICTED_AUTH(3)\fP
+.IP CURLOPT_MAXREDIRS
+Maximum number of redirects to follow. See \fICURLOPT_MAXREDIRS(3)\fP
+.IP CURLOPT_POSTREDIR
+How to act on redirects after POST. See \fICURLOPT_POSTREDIR(3)\fP
+.IP CURLOPT_PUT
+Issue a HTTP PUT request. See \fICURLOPT_PUT(3)\fP
+.IP CURLOPT_POST
+Issue a HTTP POST request. See \fICURLOPT_POST(3)\fP
+.IP CURLOPT_POSTFIELDS
+Send a POST with this data. See \fICURLOPT_POSTFIELDS(3)\fP
+.IP CURLOPT_POSTFIELDSIZE
+The POST data is this big. See \fICURLOPT_POSTFIELDSIZE(3)\fP
+.IP CURLOPT_POSTFIELDSIZE_LARGE
+The POST data is this big. See \fICURLOPT_POSTFIELDSIZE_LARGE(3)\fP
+.IP CURLOPT_COPYPOSTFIELDS
+Send a POST with this data - and copy it. See \fICURLOPT_COPYPOSTFIELDS(3)\fP
+.IP CURLOPT_HTTPPOST
+Multipart formpost HTTP POST. See \fICURLOPT_HTTPPOST(3)\fP
+.IP CURLOPT_REFERER
+Referer: header. See \fICURLOPT_REFERER(3)\fP
+.IP CURLOPT_USERAGENT
+User-Agent: header. See \fICURLOPT_USERAGENT(3)\fP
+.IP CURLOPT_HTTPHEADER
+Custom HTTP headers. See \fICURLOPT_HTTPHEADER(3)\fP
+.IP CURLOPT_HEADEROPT
+Control custom headers. See \fICURLOPT_HEADEROPT(3)\fP
+.IP CURLOPT_PROXYHEADER
+Custom HTTP headers sent to proxy. See \fICURLOPT_PROXYHEADER(3)\fP
+.IP CURLOPT_HTTP200ALIASES
+Alternative versions of 200 OK. See \fICURLOPT_HTTP200ALIASES(3)\fP
+.IP CURLOPT_COOKIE
+Cookie(s) to send. See \fICURLOPT_COOKIE(3)\fP
+.IP CURLOPT_COOKIEFILE
+File to read cookies from. See \fICURLOPT_COOKIEFILE(3)\fP
+.IP CURLOPT_COOKIEJAR
+File to write cookies to. See \fICURLOPT_COOKIEJAR(3)\fP
+.IP CURLOPT_COOKIESESSION
+Start a new cookie session. See \fICURLOPT_COOKIESESSION(3)\fP
+.IP CURLOPT_COOKIELIST
+Add or control cookies. See \fICURLOPT_COOKIELIST(3)\fP
+.IP CURLOPT_HTTPGET
+Do a HTTP GET request. See \fICURLOPT_HTTPGET(3)\fP
+.IP CURLOPT_REQUEST_TARGET
+Set the request target. \fICURLOPT_REQUEST_TARGET(3)\fP
+.IP CURLOPT_HTTP_VERSION
+HTTP version to use. \fICURLOPT_HTTP_VERSION(3)\fP
+.IP CURLOPT_IGNORE_CONTENT_LENGTH
+Ignore Content-Length. See \fICURLOPT_IGNORE_CONTENT_LENGTH(3)\fP
+.IP CURLOPT_HTTP_CONTENT_DECODING
+Disable Content decoding. See \fICURLOPT_HTTP_CONTENT_DECODING(3)\fP
+.IP CURLOPT_HTTP_TRANSFER_DECODING
+Disable Transfer decoding. See \fICURLOPT_HTTP_TRANSFER_DECODING(3)\fP
+.IP CURLOPT_EXPECT_100_TIMEOUT_MS
+100-continue timeout. See \fICURLOPT_EXPECT_100_TIMEOUT_MS(3)\fP
+.IP CURLOPT_PIPEWAIT
+Wait on connection to pipeline on it. See \fICURLOPT_PIPEWAIT(3)\fP
+.IP CURLOPT_STREAM_DEPENDS
+This HTTP/2 stream depends on another. See \fICURLOPT_STREAM_DEPENDS(3)\fP
+.IP CURLOPT_STREAM_DEPENDS_E
+This HTTP/2 stream depends on another exclusively. See
+\fICURLOPT_STREAM_DEPENDS_E(3)\fP
+.IP CURLOPT_STREAM_WEIGHT
+Set this HTTP/2 stream's weight. See \fICURLOPT_STREAM_WEIGHT(3)\fP
+.SH SMTP OPTIONS
+.IP CURLOPT_MAIL_FROM
+Address of the sender. See \fICURLOPT_MAIL_FROM(3)\fP
+.IP CURLOPT_MAIL_RCPT
+Address of the recipients. See \fICURLOPT_MAIL_RCPT(3)\fP
+.IP CURLOPT_MAIL_AUTH
+Authentication address. See \fICURLOPT_MAIL_AUTH(3)\fP
+.SH TFTP OPTIONS
+.IP CURLOPT_TFTP_BLKSIZE
+TFTP block size. See \fICURLOPT_TFTP_BLKSIZE(3)\fP
+.IP CURLOPT_TFTP_NO_OPTIONS
+Do not send TFTP options requests. See \fICURLOPT_TFTP_NO_OPTIONS(3)\fP
+.SH FTP OPTIONS
+.IP CURLOPT_FTPPORT
+Use active FTP. See \fICURLOPT_FTPPORT(3)\fP
+.IP CURLOPT_QUOTE
+Commands to run before transfer. See \fICURLOPT_QUOTE(3)\fP
+.IP CURLOPT_POSTQUOTE
+Commands to run after transfer. See \fICURLOPT_POSTQUOTE(3)\fP
+.IP CURLOPT_PREQUOTE
+Commands to run just before transfer. See \fICURLOPT_PREQUOTE(3)\fP
+.IP CURLOPT_APPEND
+Append to remote file. See \fICURLOPT_APPEND(3)\fP
+.IP CURLOPT_FTP_USE_EPRT
+Use EPTR. See \fICURLOPT_FTP_USE_EPRT(3)\fP
+.IP CURLOPT_FTP_USE_EPSV
+Use EPSV. See \fICURLOPT_FTP_USE_EPSV(3)\fP
+.IP CURLOPT_FTP_USE_PRET
+Use PRET. See \fICURLOPT_FTP_USE_PRET(3)\fP
+.IP CURLOPT_FTP_CREATE_MISSING_DIRS
+Create missing directories on the remote server. See
\fICURLOPT_FTP_CREATE_MISSING_DIRS(3)\fP
+.IP CURLOPT_FTP_RESPONSE_TIMEOUT
+Timeout for FTP responses. See \fICURLOPT_FTP_RESPONSE_TIMEOUT(3)\fP
+.IP CURLOPT_FTP_ALTERNATIVE_TO_USER
+Alternative to USER. See \fICURLOPT_FTP_ALTERNATIVE_TO_USER(3)\fP
+.IP CURLOPT_FTP_SKIP_PASV_IP
+Ignore the IP address in the PASV response. See
\fICURLOPT_FTP_SKIP_PASV_IP(3)\fP
+.IP CURLOPT_FTPSSLAUTH
+Control how to do TLS. See \fICURLOPT_FTPSSLAUTH(3)\fP
+.IP CURLOPT_FTP_SSL_CCC
+Back to non-TLS again after authentication. See \fICURLOPT_FTP_SSL_CCC(3)\fP
+.IP CURLOPT_FTP_ACCOUNT
+Send ACCT command. See \fICURLOPT_FTP_ACCOUNT(3)\fP
+.IP CURLOPT_FTP_FILEMETHOD
+Specify how to reach files. See \fICURLOPT_FTP_FILEMETHOD(3)\fP
+.SH RTSP OPTIONS
+.IP CURLOPT_RTSP_REQUEST
+RTSP request. See \fICURLOPT_RTSP_REQUEST(3)\fP
+.IP CURLOPT_RTSP_SESSION_ID
+RTSP session-id. See \fICURLOPT_RTSP_SESSION_ID(3)\fP
+.IP CURLOPT_RTSP_STREAM_URI
+RTSP stream URI. See \fICURLOPT_RTSP_STREAM_URI(3)\fP
+.IP CURLOPT_RTSP_TRANSPORT
+RTSP Transport: header. See \fICURLOPT_RTSP_TRANSPORT(3)\fP
+.IP CURLOPT_RTSP_CLIENT_CSEQ
+Client CSEQ number. See \fICURLOPT_RTSP_CLIENT_CSEQ(3)\fP
+.IP CURLOPT_RTSP_SERVER_CSEQ
+CSEQ number for RTSP Server->Client request. See
\fICURLOPT_RTSP_SERVER_CSEQ(3)\fP
+.SH PROTOCOL OPTIONS
+.IP CURLOPT_TRANSFERTEXT
+Use text transfer. See \fICURLOPT_TRANSFERTEXT(3)\fP
+.IP CURLOPT_PROXY_TRANSFER_MODE
+Add transfer mode to URL over proxy. See \fICURLOPT_PROXY_TRANSFER_MODE(3)\fP
+.IP CURLOPT_CRLF
+Convert newlines. See \fICURLOPT_CRLF(3)\fP
+.IP CURLOPT_RANGE
+Range requests. See \fICURLOPT_RANGE(3)\fP
+.IP CURLOPT_RESUME_FROM
+Resume a transfer. See \fICURLOPT_RESUME_FROM(3)\fP
+.IP CURLOPT_RESUME_FROM_LARGE
+Resume a transfer. See \fICURLOPT_RESUME_FROM_LARGE(3)\fP
+.IP CURLOPT_CUSTOMREQUEST
+Custom request/method. See \fICURLOPT_CUSTOMREQUEST(3)\fP
+.IP CURLOPT_FILETIME
+Request file modification date and time. See \fICURLOPT_FILETIME(3)\fP
+.IP CURLOPT_DIRLISTONLY
+List only. See \fICURLOPT_DIRLISTONLY(3)\fP
+.IP CURLOPT_NOBODY
+Do not get the body contents. See \fICURLOPT_NOBODY(3)\fP
+.IP CURLOPT_INFILESIZE
+Size of file to send. \fICURLOPT_INFILESIZE(3)\fP
+.IP CURLOPT_INFILESIZE_LARGE
+Size of file to send. \fICURLOPT_INFILESIZE_LARGE(3)\fP
+.IP CURLOPT_UPLOAD
+Upload data. See \fICURLOPT_UPLOAD(3)\fP
+.IP CURLOPT_MIMEPOST
+Post/send MIME data. See \fICURLOPT_MIMEPOST(3)\fP
+.IP CURLOPT_MAXFILESIZE
+Maximum file size to get. See \fICURLOPT_MAXFILESIZE(3)\fP
+.IP CURLOPT_MAXFILESIZE_LARGE
+Maximum file size to get. See \fICURLOPT_MAXFILESIZE_LARGE(3)\fP
+.IP CURLOPT_TIMECONDITION
+Make a time conditional request. See \fICURLOPT_TIMECONDITION(3)\fP
+.IP CURLOPT_TIMEVALUE
+Time value for the time conditional request. See \fICURLOPT_TIMEVALUE(3)\fP
++.IP CURLOPT_TIMEVALUE_LARGE
++Time value for the time conditional request. See
\fICURLOPT_TIMEVALUE_LARGE(3)\fP
+.SH CONNECTION OPTIONS
+.IP CURLOPT_TIMEOUT
+Timeout for the entire request. See \fICURLOPT_TIMEOUT(3)\fP
+.IP CURLOPT_TIMEOUT_MS
+Millisecond timeout for the entire request. See \fICURLOPT_TIMEOUT_MS(3)\fP
+.IP CURLOPT_LOW_SPEED_LIMIT
+Low speed limit to abort transfer. See \fICURLOPT_LOW_SPEED_LIMIT(3)\fP
+.IP CURLOPT_LOW_SPEED_TIME
+Time to be below the speed to trigger low speed abort. See
\fICURLOPT_LOW_SPEED_TIME(3)\fP
+.IP CURLOPT_MAX_SEND_SPEED_LARGE
+Cap the upload speed to this. See \fICURLOPT_MAX_SEND_SPEED_LARGE(3)\fP
+.IP CURLOPT_MAX_RECV_SPEED_LARGE
+Cap the download speed to this. See \fICURLOPT_MAX_RECV_SPEED_LARGE(3)\fP
+.IP CURLOPT_MAXCONNECTS
+Maximum number of connections in the connection pool. See
\fICURLOPT_MAXCONNECTS(3)\fP
+.IP CURLOPT_FRESH_CONNECT
+Use a new connection. \fICURLOPT_FRESH_CONNECT(3)\fP
+.IP CURLOPT_FORBID_REUSE
+Prevent subsequent connections from re-using this. See
\fICURLOPT_FORBID_REUSE(3)\fP
+.IP CURLOPT_CONNECTTIMEOUT
+Timeout for the connection phase. See \fICURLOPT_CONNECTTIMEOUT(3)\fP
+.IP CURLOPT_CONNECTTIMEOUT_MS
+Millisecond timeout for the connection phase. See
\fICURLOPT_CONNECTTIMEOUT_MS(3)\fP
+.IP CURLOPT_IPRESOLVE
+IP version to resolve to. See \fICURLOPT_IPRESOLVE(3)\fP
+.IP CURLOPT_CONNECT_ONLY
+Only connect, nothing else. See \fICURLOPT_CONNECT_ONLY(3)\fP
+.IP CURLOPT_USE_SSL
+Use TLS/SSL. See \fICURLOPT_USE_SSL(3)\fP
+.IP CURLOPT_RESOLVE
+Provide fixed/fake name resolves. See \fICURLOPT_RESOLVE(3)\fP
+.IP CURLOPT_DNS_INTERFACE
+Bind name resolves to this interface. See \fICURLOPT_DNS_INTERFACE(3)\fP
+.IP CURLOPT_DNS_LOCAL_IP4
+Bind name resolves to this IP4 address. See \fICURLOPT_DNS_LOCAL_IP4(3)\fP
+.IP CURLOPT_DNS_LOCAL_IP6
+Bind name resolves to this IP6 address. See \fICURLOPT_DNS_LOCAL_IP6(3)\fP
+.IP CURLOPT_DNS_SERVERS
+Preferred DNS servers. See \fICURLOPT_DNS_SERVERS(3)\fP
+.IP CURLOPT_ACCEPTTIMEOUT_MS
+Timeout for waiting for the server's connect back to be accepted. See
\fICURLOPT_ACCEPTTIMEOUT_MS(3)\fP
++.IP CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS
++Timeout for happy eyeballs. See \fICURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS(3)\fP
+.SH SSL and SECURITY OPTIONS
+.IP CURLOPT_SSLCERT
+Client cert. See \fICURLOPT_SSLCERT(3)\fP
+.IP CURLOPT_PROXY_SSLCERT
+Proxy client cert. See \fICURLOPT_PROXY_SSLCERT(3)\fP
+.IP CURLOPT_SSLCERTTYPE
+Client cert type. See \fICURLOPT_SSLCERTTYPE(3)\fP
+.IP CURLOPT_PROXY_SSLCERTTYPE
+Proxy client cert type. See \fICURLOPT_PROXY_SSLCERTTYPE(3)\fP
+.IP CURLOPT_SSLKEY
+Client key. See \fICURLOPT_SSLKEY(3)\fP
+.IP CURLOPT_PROXY_SSLKEY
+Proxy client key. See \fICURLOPT_PROXY_SSLKEY(3)\fP
+.IP CURLOPT_SSLKEYTYPE
+Client key type. See \fICURLOPT_SSLKEYTYPE(3)\fP
+.IP CURLOPT_PROXY_SSLKEYTYPE
+Proxy client key type. See \fICURLOPT_PROXY_SSLKEYTYPE(3)\fP
+.IP CURLOPT_KEYPASSWD
+Client key password. See \fICURLOPT_KEYPASSWD(3)\fP
+.IP CURLOPT_PROXY_KEYPASSWD
+Proxy client key password. See \fICURLOPT_PROXY_KEYPASSWD(3)\fP
+.IP CURLOPT_SSL_ENABLE_ALPN
+Enable use of ALPN. See \fICURLOPT_SSL_ENABLE_ALPN(3)\fP
+.IP CURLOPT_SSL_ENABLE_NPN
+Enable use of NPN. See \fICURLOPT_SSL_ENABLE_NPN(3)\fP
+.IP CURLOPT_SSLENGINE
+Use identifier with SSL engine. See \fICURLOPT_SSLENGINE(3)\fP
+.IP CURLOPT_SSLENGINE_DEFAULT
+Default SSL engine. See \fICURLOPT_SSLENGINE_DEFAULT(3)\fP
+.IP CURLOPT_SSL_FALSESTART
+Enable TLS False Start. See \fICURLOPT_SSL_FALSESTART(3)\fP
+.IP CURLOPT_SSLVERSION
+SSL version to use. See \fICURLOPT_SSLVERSION(3)\fP
+.IP CURLOPT_PROXY_SSLVERSION
+Proxy SSL version to use. See \fICURLOPT_PROXY_SSLVERSION(3)\fP
+.IP CURLOPT_SSL_VERIFYHOST
+Verify the host name in the SSL certificate. See
\fICURLOPT_SSL_VERIFYHOST(3)\fP
+.IP CURLOPT_PROXY_SSL_VERIFYHOST
+Verify the host name in the proxy SSL certificate. See
\fICURLOPT_PROXY_SSL_VERIFYHOST(3)\fP
+.IP CURLOPT_SSL_VERIFYPEER
+Verify the SSL certificate. See \fICURLOPT_SSL_VERIFYPEER(3)\fP
+.IP CURLOPT_PROXY_SSL_VERIFYPEER
+Verify the proxy SSL certificate. See \fICURLOPT_PROXY_SSL_VERIFYPEER(3)\fP
+.IP CURLOPT_SSL_VERIFYSTATUS
+Verify the SSL certificate's status. See \fICURLOPT_SSL_VERIFYSTATUS(3)\fP
+.IP CURLOPT_CAINFO
+CA cert bundle. See \fICURLOPT_CAINFO(3)\fP
+.IP CURLOPT_PROXY_CAINFO
+Proxy CA cert bundle. See \fICURLOPT_PROXY_CAINFO(3)\fP
+.IP CURLOPT_ISSUERCERT
+Issuer certificate. See \fICURLOPT_ISSUERCERT(3)\fP
+.IP CURLOPT_CAPATH
+Path to CA cert bundle. See \fICURLOPT_CAPATH(3)\fP
+.IP CURLOPT_PROXY_CAPATH
+Path to proxy CA cert bundle. See \fICURLOPT_PROXY_CAPATH(3)\fP
+.IP CURLOPT_CRLFILE
+Certificate Revocation List. See \fICURLOPT_CRLFILE(3)\fP
+.IP CURLOPT_PROXY_CRLFILE
+Proxy Certificate Revocation List. See \fICURLOPT_PROXY_CRLFILE(3)\fP
+.IP CURLOPT_CERTINFO
+Extract certificate info. See \fICURLOPT_CERTINFO(3)\fP
+.IP CURLOPT_PINNEDPUBLICKEY
+Set pinned SSL public key . See \fICURLOPT_PINNEDPUBLICKEY(3)\fP
+.IP CURLOPT_PROXY_PINNEDPUBLICKEY
+Set the proxy's pinned SSL public key. See
+\fICURLOPT_PROXY_PINNEDPUBLICKEY(3)\fP
+.IP CURLOPT_RANDOM_FILE
+Provide source for entropy random data. See \fICURLOPT_RANDOM_FILE(3)\fP
+.IP CURLOPT_EGDSOCKET
+Identify EGD socket for entropy. See \fICURLOPT_EGDSOCKET(3)\fP
+.IP CURLOPT_SSL_CIPHER_LIST
+Ciphers to use. See \fICURLOPT_SSL_CIPHER_LIST(3)\fP
+.IP CURLOPT_PROXY_SSL_CIPHER_LIST
+Proxy ciphers to use. See \fICURLOPT_PROXY_SSL_CIPHER_LIST(3)\fP
+.IP CURLOPT_SSL_SESSIONID_CACHE
+Disable SSL session-id cache. See \fICURLOPT_SSL_SESSIONID_CACHE(3)\fP
+.IP CURLOPT_SSL_OPTIONS
+Control SSL behavior. See \fICURLOPT_SSL_OPTIONS(3)\fP
+.IP CURLOPT_PROXY_SSL_OPTIONS
+Control proxy SSL behavior. See \fICURLOPT_PROXY_SSL_OPTIONS(3)\fP
+.IP CURLOPT_KRBLEVEL
+Kerberos security level. See \fICURLOPT_KRBLEVEL(3)\fP
+.IP CURLOPT_GSSAPI_DELEGATION
+Disable GSS-API delegation. See \fICURLOPT_GSSAPI_DELEGATION(3)\fP
+.SH SSH OPTIONS
+.IP CURLOPT_SSH_AUTH_TYPES
+SSH authentication types. See \fICURLOPT_SSH_AUTH_TYPES(3)\fP
+.IP CURLOPT_SSH_COMPRESSION
+Enable SSH compression. See \fICURLOPT_SSH_COMPRESSION(3)\fP
+.IP CURLOPT_SSH_HOST_PUBLIC_KEY_MD5
+MD5 of host's public key. See \fICURLOPT_SSH_HOST_PUBLIC_KEY_MD5(3)\fP
+.IP CURLOPT_SSH_PUBLIC_KEYFILE
+File name of public key. See \fICURLOPT_SSH_PUBLIC_KEYFILE(3)\fP
+.IP CURLOPT_SSH_PRIVATE_KEYFILE
+File name of private key. See \fICURLOPT_SSH_PRIVATE_KEYFILE(3)\fP
+.IP CURLOPT_SSH_KNOWNHOSTS
+File name with known hosts. See \fICURLOPT_SSH_KNOWNHOSTS(3)\fP
+.IP CURLOPT_SSH_KEYFUNCTION
+Callback for known hosts handling. See \fICURLOPT_SSH_KEYFUNCTION(3)\fP
+.IP CURLOPT_SSH_KEYDATA
+Custom pointer to pass to ssh key callback. See \fICURLOPT_SSH_KEYDATA(3)\fP
+.SH OTHER OPTIONS
+.IP CURLOPT_PRIVATE
+Private pointer to store. See \fICURLOPT_PRIVATE(3)\fP
+.IP CURLOPT_SHARE
+Share object to use. See \fICURLOPT_SHARE(3)\fP
+.IP CURLOPT_NEW_FILE_PERMS
+Mode for creating new remote files. See \fICURLOPT_NEW_FILE_PERMS(3)\fP
+.IP CURLOPT_NEW_DIRECTORY_PERMS
+Mode for creating new remote directories. See
\fICURLOPT_NEW_DIRECTORY_PERMS(3)\fP
+.SH TELNET OPTIONS
+.IP CURLOPT_TELNETOPTIONS
+TELNET options. See \fICURLOPT_TELNETOPTIONS(3)\fP
+.SH RETURN VALUE
+\fICURLE_OK\fP (zero) means that the option was set properly, non-zero means
an
+error occurred as \fI<curl/curl.h>\fP defines. See the \fIlibcurl-errors(3)\fP
+man page for the full list with descriptions.
+
+If you try to set an option that libcurl doesn't know about, perhaps because
+the library is too old to support it or the option was removed in a recent
+version, this function will return \fICURLE_UNKNOWN_OPTION\fP. If support for
+the option was disabled at compile-time, it will return
+\fICURLE_NOT_BUILT_IN\fP.
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ CURLcode res;
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+ res = curl_easy_perform(curl);
+ curl_easy_cleanup(curl);
+}
+.fi
+.SH "SEE ALSO"
+.BR curl_easy_init "(3), " curl_easy_cleanup "(3), " curl_easy_reset "(3), "
+.BR curl_easy_getinfo "(3), " curl_multi_setopt "(3), "
diff --cc docs/libcurl/gnurl_getdate.3
index 5a4f8f25a,000000000..2694faa9e
mode 100644,000000..100644
--- a/docs/libcurl/gnurl_getdate.3
+++ b/docs/libcurl/gnurl_getdate.3
@@@ -1,108 -1,0 +1,110 @@@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
- .\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <address@hidden>, et al.
++.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <address@hidden>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF
ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.TH curl_getdate 3 "12 Aug 2005" "libcurl 7.0" "libcurl Manual"
+.SH NAME
+curl_getdate - Convert a date string to number of seconds
+.SH SYNOPSIS
+.B #include <gnurl/curl.h>
+.sp
+.BI "time_t curl_getdate(char *" datestring ", time_t *"now " );"
+.ad
+.SH DESCRIPTION
+\fIcurl_getdate(3)\fP returns the number of seconds since the Epoch, January
+1st 1970 00:00:00 in the UTC time zone, for the date and time that the
+\fIdatestring\fP parameter specifies. The \fInow\fP parameter is not used,
+pass a NULL there.
+.SH PARSING DATES AND TIMES
+A "date" is a string containing several items separated by whitespace. The
+order of the items is immaterial. A date string may contain many flavors of
+items:
+.TP 0.8i
+.B calendar date items
+Can be specified several ways. Month names can only be three-letter english
+abbreviations, numbers can be zero-prefixed and the year may use 2 or 4
digits.
+Examples: 06 Nov 1994, 06-Nov-94 and Nov-94 6.
+.TP
+.B time of the day items
+This string specifies the time on a given day. You must specify it with 6
+digits with two colons: HH:MM:SS. To not include the time in a date string,
+will make the function assume 00:00:00. Example: 18:19:21.
+.TP
+.B time zone items
+Specifies international time zone. There are a few acronyms supported, but in
+general you should instead use the specific relative time compared to
+UTC. Supported formats include: -1200, MST, +0100.
+.TP
+.B day of the week items
+Specifies a day of the week. Days of the week may be spelled out in full
+(using english): `Sunday', `Monday', etc or they may be abbreviated to their
+first three letters. This is usually not info that adds anything.
+.TP
+.B pure numbers
+If a decimal number of the form YYYYMMDD appears, then YYYY is read as the
+year, MM as the month number and DD as the day of the month, for the specified
+calendar date.
+.PP
+.SH EXAMPLES
+.nf
+Sun, 06 Nov 1994 08:49:37 GMT
+Sunday, 06-Nov-94 08:49:37 GMT
+Sun Nov 6 08:49:37 1994
+06 Nov 1994 08:49:37 GMT
+06-Nov-94 08:49:37 GMT
+Nov 6 08:49:37 1994
+06 Nov 1994 08:49:37
+06-Nov-94 08:49:37
+1994 Nov 6 08:49:37
+GMT 08:49:37 06-Nov-94 Sunday
+94 6 Nov 08:49:37
+1994 Nov 6
+06-Nov-94
+Sun Nov 6 94
+1994.Nov.6
+Sun/Nov/6/94/GMT
+Sun, 06 Nov 1994 08:49:37 CET
+06 Nov 1994 08:49:37 EST
+Sun, 12 Sep 2004 15:05:58 -0700
+Sat, 11 Sep 2004 21:32:11 +0200
+20040912 15:05:58 -0700
+20040911 +0200
+.fi
+.SH STANDARDS
+This parser was written to handle date formats specified in RFC 822 (including
+the update in RFC 1123) using time zone name or time zone delta and RFC 850
+(obsoleted by RFC 1036) and ANSI C's asctime() format. These formats are the
+only ones RFC 7231 says HTTP applications may use.
+.SH RETURN VALUE
+This function returns -1 when it fails to parse the date string. Otherwise it
+returns the number of seconds as described.
+
- If the year is larger than 2037 on systems with 32 bit time_t, this function
- will return 0x7fffffff (since that is the largest possible signed 32 bit
- number).
++On systems with a signed 32 bit time_t: if the year is larger than 2037 or
++less than 1903, this function will return -1.
+
- Having a 64 bit time_t is not a guarantee that dates beyond 03:14:07 UTC,
- January 19, 2038 will work fine. On systems with a 64 bit time_t but with a
- crippled mktime(), \fIcurl_getdate(3)\fP will return -1 in this case.
++On systems with an unsigned 32 bit time_t: if the year is larger than 2106 or
++less than 1970, this function will return -1.
++
++On systems with 64 bit time_t: if the year is less than 1583, this function
++will return -1. (The Gregorian calendar was first introduced 1582 so no "real"
++dates in this way of doing dates existed before then.)
+.SH "SEE ALSO"
+.BR curl_easy_escape "(3), " curl_easy_unescape "(3), "
+.BR CURLOPT_TIMECONDITION "(3), " CURLOPT_TIMEVALUE "(3) "
diff --cc docs/libcurl/gnurl_global_init.3
index 6ff5b774b,000000000..f4cd5d6df
mode 100644,000000..100644
--- a/docs/libcurl/gnurl_global_init.3
+++ b/docs/libcurl/gnurl_global_init.3
@@@ -1,101 -1,0 +1,101 @@@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <address@hidden>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF
ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.TH curl_global_init 3 "11 May 2004" "libcurl 7.12" "libcurl Manual"
+.SH NAME
+curl_global_init - Global libcurl initialisation
+.SH SYNOPSIS
+.B #include <gnurl/curl.h>
+.sp
+.BI "CURLcode curl_global_init(long " flags ");"
+.ad
+.SH DESCRIPTION
+This function sets up the program environment that libcurl needs. Think of it
+as an extension of the library loader.
+
+This function must be called at least once within a program (a program is all
+the code that shares a memory space) before the program calls any other
+function in libcurl. The environment it sets up is constant for the life of
+the program and is the same for every program, so multiple calls have the same
+effect as one call.
+
+The flags option is a bit pattern that tells libcurl exactly what features to
+init, as described below. Set the desired bits by ORing the values together.
+In normal operation, you must specify CURL_GLOBAL_ALL. Don't use any other
+value unless you are familiar with it and mean to control internal operations
of
+libcurl.
+
+\fBThis function is not thread safe.\fP You must not call it when any other
+thread in the program (i.e. a thread sharing the same memory) is running.
+This doesn't just mean no other thread that is using libcurl. Because
+\fIcurl_global_init(3)\fP calls functions of other libraries that are
+similarly thread unsafe, it could conflict with any other thread that uses
+these other libraries.
+
+If you are initializing libcurl from a Windows DLL you should not initialize
it
+from DllMain or a static initializer because Windows holds the loader lock
+during that time and it could cause a deadlock.
+
+See the description in \fIlibcurl(3)\fP of global environment requirements for
+details of how to use this function.
+.SH FLAGS
+.IP CURL_GLOBAL_ALL
+Initialize everything possible. This sets all known bits except
+\fBCURL_GLOBAL_ACK_EINTR\fP.
+
+.IP CURL_GLOBAL_SSL
- (This flag's presence or absense serves no meaning since 7.57.0. The
++(This flag's presence or absence serves no meaning since 7.57.0. The
+description below is for older libcurl versions.)
+
+Initialize SSL.
+
+The implication here is that if this bit is not set, the initialization of the
+SSL layer needs to be done by the application or at least outside of
+libcurl. The exact procedure how to do SSL initializtion depends on the TLS
+backend libcurl uses.
+
+Doing TLS based transfers without having the TLS layer initialized may lead to
+unexpected behaviors.
+.IP CURL_GLOBAL_WIN32
+Initialize the Win32 socket libraries.
+
+The implication here is that if this bit is not set, the initialization of
+winsock has to be done by the application or you risk getting undefined
+behaviors. This option exists for when the initialization is handled outside
+of libcurl so there's no need for libcurl to do it again.
+.IP CURL_GLOBAL_NOTHING
+Initialise nothing extra. This sets no bit.
+.IP CURL_GLOBAL_DEFAULT
+A sensible default. It will init both SSL and Win32. Right now, this equals
+the functionality of the \fBCURL_GLOBAL_ALL\fP mask.
+.IP CURL_GLOBAL_ACK_EINTR
+When this flag is set, curl will acknowledge EINTR condition when connecting
+or when waiting for data. Otherwise, curl waits until full timeout
+elapses. (Added in 7.30.0)
+.SH RETURN VALUE
+If this function returns non-zero, something went wrong and you cannot use the
+other curl functions.
+.SH "SEE ALSO"
+.BR curl_global_init_mem "(3), "
+.BR curl_global_cleanup "(3), "
+.BR curl_global_sslset "(3), "
+.BR curl_easy_init "(3) "
+.BR libcurl "(3) "
diff --cc docs/libcurl/gnurl_share_setopt.3
index c9966214e,000000000..d903f49a4
mode 100644,000000..100644
--- a/docs/libcurl/gnurl_share_setopt.3
+++ b/docs/libcurl/gnurl_share_setopt.3
@@@ -1,100 -1,0 +1,103 @@@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
- .\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <address@hidden>, et al.
++.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <address@hidden>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF
ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.TH curl_share_setopt 3 "8 Aug 2003" "libcurl 7.10.7" "libcurl Manual"
+.SH NAME
+curl_share_setopt - Set options for a shared object
+.SH SYNOPSIS
+.B #include <gnurl/curl.h>
+.sp
+CURLSHcode curl_share_setopt(CURLSH *share, CURLSHoption option, parameter);
+.ad
+.SH DESCRIPTION
+Set the \fIoption\fP to \fIparameter\fP for the given \fIshare\fP.
+.SH OPTIONS
+.IP CURLSHOPT_LOCKFUNC
+The \fIparameter\fP must be a pointer to a function matching the following
+prototype:
+
+void lock_function(CURL *handle, curl_lock_data data, curl_lock_access access,
+void *userptr);
+
+\fIdata\fP defines what data libcurl wants to lock, and you must make sure
that
+only one lock is given at any time for each kind of data.
+
+\fIaccess\fP defines what access type libcurl wants, shared or single.
+
+\fIuserptr\fP is the pointer you set with \fICURLSHOPT_USERDATA\fP.
+.IP CURLSHOPT_UNLOCKFUNC
+The \fIparameter\fP must be a pointer to a function matching the following
+prototype:
+
+void unlock_function(CURL *handle, curl_lock_data data, void *userptr);
+
+\fIdata\fP defines what data libcurl wants to unlock, and you must make sure
+that only one lock is given at any time for each kind of data.
+
+\fIuserptr\fP is the pointer you set with \fICURLSHOPT_USERDATA\fP.
+.IP CURLSHOPT_SHARE
+The \fIparameter\fP specifies a type of data that should be shared. This may
+be set to one of the values described below.
+.RS
+.IP CURL_LOCK_DATA_COOKIE
+Cookie data will be shared across the easy handles using this shared object.
+.IP CURL_LOCK_DATA_DNS
+Cached DNS hosts will be shared across the easy handles using this shared
+object. Note that when you use the multi interface, all easy handles added to
- the same multi handle will share DNS cache by default without this having to
- be used!
++the same multi handle will share DNS cache by default without using this
++option.
+.IP CURL_LOCK_DATA_SSL_SESSION
+SSL session IDs will be shared across the easy handles using this shared
+object. This will reduce the time spent in the SSL handshake when reconnecting
+to the same server. Note SSL session IDs are reused within the same easy
handle
+by default. Note this symbol was added in 7.10.3 but was not implemented until
+7.23.0.
+.IP CURL_LOCK_DATA_CONNECT
+Put the connection cache in the share object and make all easy handles using
+this share object share the connection cache. Using this, you can for example
+do multi-threaded libcurl use with one handle in each thread, and yet have a
+shared pool of unused connections and this way get way better connection
+re-use than if you use one separate pool in each thread.
+
+Connections that are used for HTTP/1.1 Pipelining or HTTP/2 multiplexing only
+get additional transfers added to them if the existing connection is held by
+the same multi or easy handle. libcurl does not support doing HTTP/2 streams
+in different threads using a shared connection.
+
+Support for \fBCURL_LOCK_DATA_CONNECT\fP was added in 7.57.0, but the symbol
+existed before this.
++
++Note that when you use the multi interface, all easy handles added to the same
++multi handle will share connection cache by default without using this option.
+.RE
+.IP CURLSHOPT_UNSHARE
+This option does the opposite of \fICURLSHOPT_SHARE\fP. It specifies that
+the specified \fIparameter\fP will no longer be shared. Valid values are
+the same as those for \fICURLSHOPT_SHARE\fP.
+.IP CURLSHOPT_USERDATA
+The \fIparameter\fP allows you to specify a pointer to data that will be
passed
+to the lock_function and unlock_function each time it is called.
+.SH RETURN VALUE
+CURLSHE_OK (zero) means that the option was set properly, non-zero means an
+error occurred as \fI<curl/curl.h>\fP defines. See the \fIlibcurl-errors.3\fP
+man page for the full list with descriptions.
+.SH "SEE ALSO"
+.BR curl_share_cleanup "(3), " curl_share_init "(3)"
diff --cc docs/libcurl/libgnurl-security.3
index 000000000,377301ee0..377301ee0
mode 000000,100644..100644
--- a/docs/libcurl/libgnurl-security.3
+++ b/docs/libcurl/libgnurl-security.3
diff --cc docs/libcurl/opts/GNURLINFO_CONDITION_UNMET.3
index e83b4e2f7,000000000..a52e5f750
mode 100644,000000..100644
--- a/docs/libcurl/opts/GNURLINFO_CONDITION_UNMET.3
+++ b/docs/libcurl/opts/GNURLINFO_CONDITION_UNMET.3
@@@ -1,68 -1,0 +1,68 @@@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <address@hidden>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF
ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_CONDITION_UNMET 3 "1 Sep 2015" "libcurl 7.44.0"
"curl_easy_getinfo options"
+.SH NAME
+CURLINFO_CONDITION_UNMET \- get info on unmet time conditional
+.SH SYNOPSIS
+#include <gnurl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONDITION_UNMET, long
*unmet);
+.SH DESCRIPTION
+Pass a pointer to a long to receive the number 1 if the condition provided in
+the previous request didn't match (see \fICURLOPT_TIMECONDITION(3)\fP). Alas,
+if this returns a 1 you know that the reason you didn't get data in return is
- because it didn't fulfill the condition. The long ths argument points to will
++because it didn't fulfill the condition. The long this argument points to will
+get a zero stored if the condition instead was met.
+.SH PROTOCOLS
+HTTP and some
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ /* January 1, 2020 is 1577833200 */
+ curl_easy_setopt(curl, CURLOPT_TIMEVALUE, 1577833200L);
+
+ /* If-Modified-Since the above time stamp */
+ curl_easy_setopt(curl, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE);
+
+ /* Perform the request */
+ res = curl_easy_perform(curl);
+
+ if(!res) {
+ /* check the time condition */
+ long unmet;
+ res = curl_easy_getinfo(curl, CURLINFO_CONDITION_UNMET, &unmet);
+ if(!res) {
+ printf("The time condition was %sfulfilled\\n", unmet?"NOT":"");
+ }
+ }
+}
+.fi
+.SH AVAILABILITY
+Added in 7.19.4
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --cc docs/libcurl/opts/GNURLINFO_FILETIME.3
index 90a010210,000000000..966cc3821
mode 100644,000000..100644
--- a/docs/libcurl/opts/GNURLINFO_FILETIME.3
+++ b/docs/libcurl/opts/GNURLINFO_FILETIME.3
@@@ -1,66 -1,0 +1,69 @@@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
- .\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <address@hidden>, et al.
++.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <address@hidden>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF
ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_FILETIME 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo
options"
+.SH NAME
+CURLINFO_FILETIME \- get the remote time of the retrieved document
+.SH SYNOPSIS
+#include <gnurl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FILETIME, long *timep);
+.SH DESCRIPTION
+Pass a pointer to a long to receive the remote time of the retrieved document
+(in number of seconds since 1 jan 1970 in the GMT/UTC time zone). If you get
+-1, it can be because of many reasons (it might be unknown, the server might
+hide it or the server doesn't support the command that tells document time
+etc) and the time of the document is unknown.
+
- Note that you must tell the server to collect this information before the
- transfer is made, by using the \fICURLOPT_FILETIME(3)\fP option to
- \fIcurl_easy_setopt(3)\fP or you will unconditionally get a -1 back.
++You must tell libcurl to collect this information before the transfer is made,
++by using the \fICURLOPT_FILETIME(3)\fP option to \fIcurl_easy_setopt(3)\fP or
++you will unconditionally get a -1 back.
++
++Consider using \fICURLINFO_FILETIME_T(3)\fP to be able to extract dates beyond
++the year 2038 on systems using 32 bit longs.
+.SH PROTOCOLS
+HTTP(S), FTP(S), SFTP
+.SH EXAMPLE
+.nf
+curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, url);
+ /* Ask for filetime */
+ curl_easy_setopt(curl, CURLOPT_FILETIME, 1L);
+ res = curl_easy_perform(curl);
+ if(CURLE_OK == res) {
+ res = curl_easy_getinfo(curl, CURLINFO_FILETIME, &filetime);
+ if((CURLE_OK == res) && (filetime >= 0)) {
+ time_t file_time = (time_t)filetime;
+ printf("filetime %s: %s", filename, ctime(&file_time));
+ }
+ }
+ /* always cleanup */
+ curl_easy_cleanup(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.5
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --cc docs/libcurl/opts/GNURLOPT_COOKIEFILE.3
index 7faf66474,000000000..fcf908631
mode 100644,000000..100644
--- a/docs/libcurl/opts/GNURLOPT_COOKIEFILE.3
+++ b/docs/libcurl/opts/GNURLOPT_COOKIEFILE.3
@@@ -1,82 -1,0 +1,83 @@@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
- .\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <address@hidden>, et al.
++.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <address@hidden>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF
ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_COOKIEFILE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt
options"
+.SH NAME
+CURLOPT_COOKIEFILE \- file name to read cookies from
+.SH SYNOPSIS
+#include <gnurl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIEFILE, char *filename);
+.SH DESCRIPTION
+Pass a pointer to a zero terminated string as parameter. It should point to
+the file name of your file holding cookie data to read. The cookie data can be
+in either the old Netscape / Mozilla cookie data format or just regular HTTP
+headers (Set-Cookie style) dumped to a file.
+
+It also enables the cookie engine, making libcurl parse and send cookies on
+subsequent requests with this handle.
+
+Given an empty or non-existing file or by passing the empty string ("") to
+this option, you can enable the cookie engine without reading any initial
- cookies.
++cookies. If you tell libcurl the file name is "-" (just a single minus sign),
++libcurl will instead read from stdin.
+
+This option only \fBreads\fP cookies. To make libcurl write cookies to file,
+see \fICURLOPT_COOKIEJAR(3)\fP.
+
+Exercise caution if you are using this option and multiple transfers may
occur.
+If you use the Set-Cookie format and don't specify a domain then the cookie is
+sent for any domain (even after redirects are followed) and cannot be modified
+by a server-set cookie. If a server sets a cookie of the same name then both
+will be sent on a future transfer to that server, likely not what you
intended.
+To address these issues set a domain in Set-Cookie (doing that will include
+sub-domains) or use the Netscape format.
+
+If you use this option multiple times, you just add more files to read.
+Subsequent files will add more cookies.
+
+The application does not have to keep the string around after setting this
+option.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/foo.bin");
+
+ /* get cookies from an existing file */
+ curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "/tmp/cookies.txt");
+
+ ret = curl_easy_perform(curl);
+
+ curl_easy_cleanup(curl);
+}
+.fi
+.SH AVAILABILITY
+As long as HTTP is supported
+.SH RETURN VALUE
+Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_COOKIE "(3), " CURLOPT_COOKIEJAR "(3), "
diff --cc docs/libcurl/opts/GNURLOPT_HEADER.3
index 057257eb6,000000000..22e56ae6b
mode 100644,000000..100644
--- a/docs/libcurl/opts/GNURLOPT_HEADER.3
+++ b/docs/libcurl/opts/GNURLOPT_HEADER.3
@@@ -1,63 -1,0 +1,69 @@@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
- .\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <address@hidden>, et al.
++.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <address@hidden>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF
ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_HEADER 3 "16 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_HEADER \- pass headers to the data stream
+.SH SYNOPSIS
+#include <gnurl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADER, long onoff);
+.SH DESCRIPTION
- Pass in \fIonoff\fP set to 1 to tell the library to include the header in the
- body output for requests with this \fIhandle\fP. This option is relevant for
- protocols that actually have headers or other meta-data (like HTTP and FTP).
++Pass the long value \fIonoff\fP set to 1 to ask libcurl to include the headers
++in the write callback (\fICURLOPT_WRITEFUNCTION(3)\fP). This option is
++relevant for protocols that actually have headers or other meta-data (like
++HTTP and FTP).
+
- When asking to get the header info passed to the same callback as the body, it
- is not possible to accurately separate them again without detailed knowledge
++When asking to get the headers passed to the same callback as the body, it is
++not possible to accurately separate them again without detailed knowledge
+about the protocol in use.
+
++Further: the \fCURLOPT_WRITEFUNCTION(3)\fP callback is limited to only ever
++get a maximum of \fICURL_MAX_WRITE_SIZE\fP bytes passed to it (16KB), while a
++header can be longer and the \fICURLOPT_HEADERFUNCTION(3)\fP supports getting
++called with headers up to \fICURL_MAX_HTTP_HEADER\fP bytes big (100KB).
++
+It is often better to use \fICURLOPT_HEADERFUNCTION(3)\fP to get the header
+data separately.
+
+While named confusingly similar, \fICURLOPT_HTTPHEADER(3)\fP is used to set
+custom HTTP headers!
+.SH DEFAULT
+0
+.SH PROTOCOLS
+Most
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ curl_easy_setopt(curl, CURLOPT_HEADER, 1L);
+
+ curl_easy_perform(curl);
+}
+.fi
+.SH RETURN VALUE
+Returns CURLE_OK.
+.SH "SEE ALSO"
+.BR CURLOPT_HEADERFUNCTION "(3), "
+.BR CURLOPT_HTTPHEADER "(3), "
diff --cc docs/libcurl/opts/GNURLOPT_HEADERFUNCTION.3
index bf772b613,000000000..e103d578d
mode 100644,000000..100644
--- a/docs/libcurl/opts/GNURLOPT_HEADERFUNCTION.3
+++ b/docs/libcurl/opts/GNURLOPT_HEADERFUNCTION.3
@@@ -1,106 -1,0 +1,111 @@@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
- .\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <address@hidden>, et al.
++.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <address@hidden>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF
ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_HEADERFUNCTION 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt
options"
+.SH NAME
+CURLOPT_HEADERFUNCTION \- callback that receives header data
+.SH SYNOPSIS
+#include <gnurl/curl.h>
+
+size_t header_callback(char *buffer,
+ size_t size,
+ size_t nitems,
+ void *userdata);
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADERFUNCTION,
header_callback);
+.SH DESCRIPTION
+Pass a pointer to your callback function, which should match the prototype
+shown above.
+
+This function gets called by libcurl as soon as it has received header
+data. The header callback will be called once for each header and only
+complete header lines are passed on to the callback. Parsing headers is very
+easy using this. The size of the data pointed to by \fIbuffer\fP is \fIsize\fP
+multiplied with \fInmemb\fP. Do not assume that the header line is zero
+terminated! The pointer named \fIuserdata\fP is the one you set with the
+\fICURLOPT_HEADERDATA(3)\fP option. This callback function must return the
+number of bytes actually taken care of. If that amount differs from the amount
+passed in to your function, it'll signal an error to the library. This will
+cause the transfer to get aborted and the libcurl function in progress will
+return \fICURLE_WRITE_ERROR\fP.
+
+A complete HTTP header that is passed to this function can be up to
+\fICURL_MAX_HTTP_HEADER\fP (100K) bytes.
+
+If this option is not set, or if it is set to NULL, but
+\fICURLOPT_HEADERDATA(3)\fP is set to anything but NULL, the function used to
+accept response data will be used instead. That is, it will be the function
+specified with \fICURLOPT_WRITEFUNCTION(3)\fP, or if it is not specified or
+NULL - the default, stream-writing function.
+
+It's important to note that the callback will be invoked for the headers of
+all responses received after initiating a request and not just the final
+response. This includes all responses which occur during authentication
+negotiation. If you need to operate on only the headers from the final
+response, you will need to collect headers in the callback yourself and use
+HTTP status lines, for example, to delimit response boundaries.
+
+When a server sends a chunked encoded transfer, it may contain a trailer. That
+trailer is identical to a HTTP header and if such a trailer is received it is
+passed to the application using this callback as well. There are several ways
+to detect it being a trailer and not an ordinary header: 1) it comes after the
+response-body. 2) it comes after the final header line (CR LF) 3) a Trailer:
+header among the regular response-headers mention what header(s) to expect in
+the trailer.
+
+For non-HTTP protocols like FTP, POP3, IMAP and SMTP this function will get
+called with the server responses to the commands that libcurl sends.
++.SH LIMITATIONS
++libcurl does not unfold HTTP "folded headers" (deprecated since RFC 7230). A
++folded header is a header that continues on a subsequent line and starts with
++a whitespace. Such folds will be passed to the header callback as a separate
++one, although strictly it is just a continuation of the previous line.
+.SH DEFAULT
+Nothing.
+.SH PROTOCOLS
+Used for all protocols with headers or meta-data concept: HTTP, FTP, POP3,
+IMAP, SMTP and more.
+.SH EXAMPLE
+.nf
+static size_t header_callback(char *buffer, size_t size,
+ size_t nitems, void *userdata)
+{
+ /* received header is nitems * size long in 'buffer' NOT ZERO TERMINATED */
+ /* 'userdata' is set with CURLOPT_HEADERDATA */
+ return nitems * size;
+}
+
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, header_callback);
+
+ curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_HEADERDATA "(3), " CURLOPT_WRITEFUNCTION "(3), "
diff --cc docs/libcurl/opts/GNURLOPT_NOPROXY.3
index 873724484,000000000..b6b2a3d66
mode 100644,000000..100644
--- a/docs/libcurl/opts/GNURLOPT_NOPROXY.3
+++ b/docs/libcurl/opts/GNURLOPT_NOPROXY.3
@@@ -1,74 -1,0 +1,79 @@@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
- .\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <address@hidden>, et al.
++.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <address@hidden>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF
ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_NOPROXY 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt
options"
+.SH NAME
+CURLOPT_NOPROXY \- disable proxy use for specific hosts
+.SH SYNOPSIS
+#include <gnurl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NOPROXY, char *noproxy);
+.SH DESCRIPTION
+Pass a pointer to a zero terminated string. The string consists of a comma
+separated list of host names that do not require a proxy to get reached, even
+if one is specified. The only wildcard available is a single * character,
+which matches all hosts, and effectively disables the proxy. Each name in this
+list is matched as either a domain which contains the hostname, or the
+hostname itself. For example, example.com would match example.com,
+example.com:80, and www.example.com, but not www.notanexample.com or
+example.com.othertld.
+
+If the name in the noproxy list has a leading period, it is a domain match
+against the provided host name. This way ".example.com" will switch off proxy
+use for both "www.example.com" as well as for "foo.example.com".
+
+Setting the noproxy string to "" (an empty string) will explicitly enable the
+proxy for all host names, even if there is an environment variable set for it.
+
++Enter IPv6 numerical addresses in the list of host names without enclosing
++brackets:
++
++ "example.com,::1,localhost"
++
+The application does not have to keep the string around after setting this
+option.
+.SH "Environment variables"
+See \fIGNURLOPT_PROXY(3)\fP
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+Most
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ /* accept various URLs */
+ curl_easy_setopt(curl, CURLOPT_URL, input);
+ /* use this proxy */
+ curl_easy_setopt(curl, CURLOPT_PROXY, "http://proxy:80");
+ /* ... but make sure this host name is not proxied */
+ curl_easy_setopt(curl, CURLOPT_NOPROXY, "www.example.com");
+ curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.19.4
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
+CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+.SH "SEE ALSO"
+.BR GNURLOPT_PROXY "(3), " GNURLOPT_PROXYAUTH "(3), "
diff --cc docs/libcurl/opts/GNURLOPT_PINNEDPUBLICKEY.3
index c2fd27068,000000000..ff4d60da0
mode 100644,000000..100644
--- a/docs/libcurl/opts/GNURLOPT_PINNEDPUBLICKEY.3
+++ b/docs/libcurl/opts/GNURLOPT_PINNEDPUBLICKEY.3
@@@ -1,126 -1,0 +1,132 @@@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
- .\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <address@hidden>, et al.
++.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <address@hidden>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF
ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_PINNEDPUBLICKEY 3 "27 Aug 2014" "libcurl 7.38.0"
"curl_easy_setopt options"
+.SH NAME
+CURLOPT_PINNEDPUBLICKEY \- set pinned public key
+.SH SYNOPSIS
+#include <gnurl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PINNEDPUBLICKEY, char
*pinnedpubkey);
+.SH DESCRIPTION
+Pass a pointer to a zero terminated string as parameter. The string can be the
+file name of your pinned public key. The file format expected is "PEM" or
"DER".
+The string can also be any number of base64 encoded sha256 hashes preceded by
+"sha256//" and separated by ";"
+
+When negotiating a TLS or SSL connection, the server sends a certificate
+indicating its identity. A public key is extracted from this certificate and
+if it does not exactly match the public key provided to this option, curl will
+abort the connection before sending or receiving any data.
+
+On mismatch, \fICURLE_SSL_PINNEDPUBKEYNOTMATCH\fP is returned.
+
+The application does not have to keep the string around after setting this
+option.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
+ curl_easy_setopt(curl, CURLOPT_PINNEDPUBLICKEY, "/etc/publickey.der");
+ /* OR
+ curl_easy_setopt(curl, CURLOPT_PINNEDPUBLICKEY,
"sha256//YhKJKSzoTt2b5FP18fvpHo7fJYqQCjAa3HWY3tvRMwE=;sha256//t62CeU2tQiqkexU74Gxa2eg7fRbEgoChTociMee9wno=");
+ */
+
+ /* Perform the request */
+ curl_easy_perform(curl);
+}
+.fi
+.SH PUBLIC KEY EXTRACTION
+If you do not have the server's public key file you can extract it from the
+server's certificate.
+.nf
+# retrieve the server's certificate if you don't already have it
+#
+# be sure to examine the certificate to see if it is what you expected
+#
+# Windows-specific:
+# - Use NUL instead of /dev/null.
+# - OpenSSL may wait for input instead of disconnecting. Hit enter.
+# - If you don't have sed, then just copy the certificate into a file:
+# Lines from -----BEGIN CERTIFICATE----- to -----END CERTIFICATE-----.
+#
+openssl s_client -servername www.example.com -connect www.example.com:443 <
/dev/null | sed -n "/-----BEGIN/,/-----END/p" > www.example.com.pem
+
+# extract public key in pem format from certificate
+openssl x509 -in www.example.com.pem -pubkey -noout >
www.example.com.pubkey.pem
+
+# convert public key from pem to der
+openssl asn1parse -noout -inform pem -in www.example.com.pubkey.pem -out
www.example.com.pubkey.der
+
+# sha256 hash and base64 encode der to string for use
+openssl dgst -sha256 -binary www.example.com.pubkey.der | openssl base64
+.fi
+The public key in PEM format contains a header, base64 data and a
+footer:
+.nf
+-----BEGIN PUBLIC KEY-----
+[BASE 64 DATA]
+-----END PUBLIC KEY-----
+.fi
+.SH AVAILABILITY
+PEM/DER support:
+
- 7.39.0: OpenSSL, GnuTLS and GSKit
++ 7.39.0: OpenSSL, GnuTLS
++
++ 7.39.0-7.48.0,7.58.1+: GSKit
+
+ 7.43.0: NSS and wolfSSL/CyaSSL
+
+ 7.47.0: mbedtls
+
+ 7.49.0: PolarSSL
+
+ 7.54.1: SecureTransport/DarwinSSL on macOS 10.7+/iOS 10+
+
++ 7.58.1: SChannel/WinSSL
++
+sha256 support:
+
+ 7.44.0: OpenSSL, GnuTLS, NSS and wolfSSL/CyaSSL
+
+ 7.47.0: mbedtls
+
+ 7.49.0: PolarSSL
+
+ 7.54.1: SecureTransport/DarwinSSL on macOS 10.7+/iOS 10+
+
++ 7.58.1: SChannel/WinSSL Windows XP SP3+
++
+Other SSL backends not supported.
+.SH RETURN VALUE
+Returns CURLE_OK if TLS enabled, CURLE_UNKNOWN_OPTION if not, or
+CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+.SH "SEE ALSO"
+.BR CURLOPT_SSL_VERIFYPEER "(3), "
+.BR CURLOPT_SSL_VERIFYHOST "(3), "
+.BR CURLOPT_CAINFO "(3), "
+.BR CURLOPT_CAPATH "(3), "
diff --cc docs/libcurl/opts/GNURLOPT_RESOLVE.3
index e321f000f,000000000..b6144a78a
mode 100644,000000..100644
--- a/docs/libcurl/opts/GNURLOPT_RESOLVE.3
+++ b/docs/libcurl/opts/GNURLOPT_RESOLVE.3
@@@ -1,88 -1,0 +1,92 @@@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <address@hidden>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF
ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_RESOLVE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt
options"
+.SH NAME
+CURLOPT_RESOLVE \- provide custom host name to IP address resolves
+.SH SYNOPSIS
+.nf
+#include <gnurl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESOLVE,
+ struct curl_slist *hosts);
+.SH DESCRIPTION
+Pass a pointer to a linked list of strings with host name resolve information
+to use for requests with this handle. The linked list should be a fully valid
+list of \fBstruct curl_slist\fP structs properly filled in. Use
+\fIcurl_slist_append(3)\fP to create the list and \fIcurl_slist_free_all(3)\fP
+to clean up an entire list.
+
+Each single name resolve string should be written using the format
- HOST:PORT:ADDRESS where HOST is the name libcurl will try to resolve, PORT is
- the port number of the service where libcurl wants to connect to the HOST and
- ADDRESS is the numerical IP address. If libcurl is built to support IPv6,
- ADDRESS can of course be either IPv4 or IPv6 style addressing.
++HOST:PORT:ADDRESS[,ADDRESS]... where HOST is the name libcurl will try
++to resolve, PORT is the port number of the service where libcurl wants
++to connect to the HOST and ADDRESS is one or more numerical IP
++addresses. If you specify multiple ip addresses they need to be
++separated by comma. If libcurl is built to support IPv6, each of the
++ADDRESS entries can of course be either IPv4 or IPv6 style addressing.
+
+This option effectively pre-populates the DNS cache with entries for the
+host+port pair so redirects and everything that operations against the
+HOST+PORT will instead use your provided ADDRESS. Addresses set with
+\fICURLOPT_RESOLVE(3)\fP will not time-out from the DNS cache like ordinary
+entries.
+
+The provided ADDRESS set by this option will be used even if
+\fICURLOPT_IPRESOLVE(3)\fP is set to make libcurl use another IP version.
+
+Remove names from the DNS cache again, to stop providing these fake resolves,
+by including a string in the linked list that uses the format
+\&"-HOST:PORT". The host name must be prefixed with a dash, and the host name
+and port number must exactly match what was already added previously.
+
+Support for providing the ADDRESS within [brackets] was added in 7.57.0.
++
++Support for providing multiple IP addresses per entry was added in 7.59.0.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+.nf
+CURL *curl;
+struct curl_slist *host = NULL;
+host = curl_slist_append(NULL, "example.com:80:127.0.0.1");
+
+curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_RESOLVE, host);
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ curl_easy_perform(curl);
+
+ /* always cleanup */
+ curl_easy_cleanup(curl);
+}
+
+curl_slist_free_all(host);
+.fi
+.SH AVAILABILITY
+Added in 7.21.3. Removal support added in 7.42.0.
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_IPRESOLVE "(3), " CURLOPT_DNS_CACHE_TIMEOUT "(3), "
CURLOPT_CONNECT_TO "(3), "
diff --cc docs/libcurl/opts/GNURLOPT_TIMEVALUE.3
index 65364b72d,000000000..3cd2f02b9
mode 100644,000000..100644
--- a/docs/libcurl/opts/GNURLOPT_TIMEVALUE.3
+++ b/docs/libcurl/opts/GNURLOPT_TIMEVALUE.3
@@@ -1,59 -1,0 +1,62 @@@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
- .\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <address@hidden>, et al.
++.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <address@hidden>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF
ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_TIMEVALUE 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt
options"
+.SH NAME
+CURLOPT_TIMEVALUE \- set time value for conditional
+.SH SYNOPSIS
+#include <gnurl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEVALUE, long val);
+.SH DESCRIPTION
+Pass a long \fIval\fP as parameter. This should be the time counted as seconds
+since 1 Jan 1970, and the time will be used in a condition as specified with
+\fICURLOPT_TIMECONDITION(3)\fP.
++
++On systems with 32 bit 'long' variables, this option cannot set dates beyond
++the year 2038. Consider \fICURLOPT_TIMEVALUE_LARGE(3)\fP instead.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+HTTP, FTP, RTSP, and FILE
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ /* January 1, 2020 is 1577833200 */
+ curl_easy_setopt(curl, CURLOPT_TIMEVALUE, 1577833200L);
+
+ /* If-Modified-Since the above time stamp */
+ curl_easy_setopt(curl, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE);
+
+ /* Perform the request */
+ curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Always
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_TIMECONDITION "(3), "
diff --cc docs/libcurl/opts/Makefile.inc
index e8fb5d80d,2aa1acf33..618eb08f3
--- a/docs/libcurl/opts/Makefile.inc
+++ b/docs/libcurl/opts/Makefile.inc
@@@ -1,323 -1,328 +1,328 @@@
# Shared between Makefile.am and CMakeLists.txt
man_MANS = \
- CURLINFO_ACTIVESOCKET.3 \
- CURLINFO_APPCONNECT_TIME.3 \
- CURLINFO_CERTINFO.3 \
- CURLINFO_CONDITION_UNMET.3 \
- CURLINFO_CONNECT_TIME.3 \
- CURLINFO_CONTENT_LENGTH_DOWNLOAD.3 \
- CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3 \
- CURLINFO_CONTENT_LENGTH_UPLOAD.3 \
- CURLINFO_CONTENT_LENGTH_UPLOAD_T.3 \
- CURLINFO_CONTENT_TYPE.3 \
- CURLINFO_COOKIELIST.3 \
- CURLINFO_EFFECTIVE_URL.3 \
- CURLINFO_FILETIME.3 \
- CURLINFO_FILETIME_T.3 \
- CURLINFO_FTP_ENTRY_PATH.3 \
- CURLINFO_HEADER_SIZE.3 \
- CURLINFO_HTTPAUTH_AVAIL.3 \
- CURLINFO_HTTP_CONNECTCODE.3 \
- CURLINFO_HTTP_VERSION.3 \
- CURLINFO_LASTSOCKET.3 \
- CURLINFO_LOCAL_IP.3 \
- CURLINFO_LOCAL_PORT.3 \
- CURLINFO_NAMELOOKUP_TIME.3 \
- CURLINFO_NUM_CONNECTS.3 \
- CURLINFO_OS_ERRNO.3 \
- CURLINFO_PRETRANSFER_TIME.3 \
- CURLINFO_PRIMARY_IP.3 \
- CURLINFO_PRIMARY_PORT.3 \
- CURLINFO_PRIVATE.3 \
- CURLINFO_PROTOCOL.3 \
- CURLINFO_PROXYAUTH_AVAIL.3 \
- CURLINFO_PROXY_SSL_VERIFYRESULT.3 \
- CURLINFO_REDIRECT_COUNT.3 \
- CURLINFO_REDIRECT_TIME.3 \
- CURLINFO_REDIRECT_URL.3 \
- CURLINFO_REQUEST_SIZE.3 \
- CURLINFO_RESPONSE_CODE.3 \
- CURLINFO_RTSP_CLIENT_CSEQ.3 \
- CURLINFO_RTSP_CSEQ_RECV.3 \
- CURLINFO_RTSP_SERVER_CSEQ.3 \
- CURLINFO_RTSP_SESSION_ID.3 \
- CURLINFO_SCHEME.3 \
- CURLINFO_SIZE_DOWNLOAD.3 \
- CURLINFO_SIZE_DOWNLOAD_T.3 \
- CURLINFO_SIZE_UPLOAD.3 \
- CURLINFO_SIZE_UPLOAD_T.3 \
- CURLINFO_SPEED_DOWNLOAD.3 \
- CURLINFO_SPEED_DOWNLOAD_T.3 \
- CURLINFO_SPEED_UPLOAD.3 \
- CURLINFO_SPEED_UPLOAD_T.3 \
- CURLINFO_SSL_ENGINES.3 \
- CURLINFO_SSL_VERIFYRESULT.3 \
- CURLINFO_STARTTRANSFER_TIME.3 \
- CURLINFO_TLS_SESSION.3 \
- CURLINFO_TLS_SSL_PTR.3 \
- CURLINFO_TOTAL_TIME.3 \
- CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 \
- CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 \
- CURLMOPT_MAXCONNECTS.3 \
- CURLMOPT_MAX_HOST_CONNECTIONS.3 \
- CURLMOPT_MAX_PIPELINE_LENGTH.3 \
- CURLMOPT_MAX_TOTAL_CONNECTIONS.3 \
- CURLMOPT_PIPELINING.3 \
- CURLMOPT_PIPELINING_SERVER_BL.3 \
- CURLMOPT_PIPELINING_SITE_BL.3 \
- CURLMOPT_PUSHDATA.3 \
- CURLMOPT_PUSHFUNCTION.3 \
- CURLMOPT_SOCKETDATA.3 \
- CURLMOPT_SOCKETFUNCTION.3 \
- CURLMOPT_TIMERDATA.3 \
- CURLMOPT_TIMERFUNCTION.3 \
- CURLOPT_ABSTRACT_UNIX_SOCKET.3 \
- CURLOPT_ACCEPTTIMEOUT_MS.3 \
- CURLOPT_ACCEPT_ENCODING.3 \
- CURLOPT_ADDRESS_SCOPE.3 \
- CURLOPT_APPEND.3 \
- CURLOPT_AUTOREFERER.3 \
- CURLOPT_BUFFERSIZE.3 \
- CURLOPT_CAINFO.3 \
- CURLOPT_CAPATH.3 \
- CURLOPT_CERTINFO.3 \
- CURLOPT_CHUNK_BGN_FUNCTION.3 \
- CURLOPT_CHUNK_DATA.3 \
- CURLOPT_CHUNK_END_FUNCTION.3 \
- CURLOPT_CLOSESOCKETDATA.3 \
- CURLOPT_CLOSESOCKETFUNCTION.3 \
- CURLOPT_CONNECTTIMEOUT.3 \
- CURLOPT_CONNECTTIMEOUT_MS.3 \
- CURLOPT_CONNECT_ONLY.3 \
- CURLOPT_CONNECT_TO.3 \
- CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 \
- CURLOPT_CONV_FROM_UTF8_FUNCTION.3 \
- CURLOPT_CONV_TO_NETWORK_FUNCTION.3 \
- CURLOPT_COOKIE.3 \
- CURLOPT_COOKIEFILE.3 \
- CURLOPT_COOKIEJAR.3 \
- CURLOPT_COOKIELIST.3 \
- CURLOPT_COOKIESESSION.3 \
- CURLOPT_COPYPOSTFIELDS.3 \
- CURLOPT_CRLF.3 \
- CURLOPT_CRLFILE.3 \
- CURLOPT_CUSTOMREQUEST.3 \
- CURLOPT_DEBUGDATA.3 \
- CURLOPT_DEBUGFUNCTION.3 \
- CURLOPT_DEFAULT_PROTOCOL.3 \
- CURLOPT_DIRLISTONLY.3 \
- CURLOPT_DNS_CACHE_TIMEOUT.3 \
- CURLOPT_DNS_INTERFACE.3 \
- CURLOPT_DNS_LOCAL_IP4.3 \
- CURLOPT_DNS_LOCAL_IP6.3 \
- CURLOPT_DNS_SERVERS.3 \
- CURLOPT_DNS_USE_GLOBAL_CACHE.3 \
- CURLOPT_EGDSOCKET.3 \
- CURLOPT_ERRORBUFFER.3 \
- CURLOPT_EXPECT_100_TIMEOUT_MS.3 \
- CURLOPT_FAILONERROR.3 \
- CURLOPT_FILETIME.3 \
- CURLOPT_FNMATCH_DATA.3 \
- CURLOPT_FNMATCH_FUNCTION.3 \
- CURLOPT_FOLLOWLOCATION.3 \
- CURLOPT_FORBID_REUSE.3 \
- CURLOPT_FRESH_CONNECT.3 \
- CURLOPT_FTPPORT.3 \
- CURLOPT_FTPSSLAUTH.3 \
- CURLOPT_FTP_ACCOUNT.3 \
- CURLOPT_FTP_ALTERNATIVE_TO_USER.3 \
- CURLOPT_FTP_CREATE_MISSING_DIRS.3 \
- CURLOPT_FTP_FILEMETHOD.3 \
- CURLOPT_FTP_RESPONSE_TIMEOUT.3 \
- CURLOPT_FTP_SKIP_PASV_IP.3 \
- CURLOPT_FTP_SSL_CCC.3 \
- CURLOPT_FTP_USE_EPRT.3 \
- CURLOPT_FTP_USE_EPSV.3 \
- CURLOPT_FTP_USE_PRET.3 \
- CURLOPT_GSSAPI_DELEGATION.3 \
- CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3 \
- CURLOPT_HEADER.3 \
- CURLOPT_HEADERDATA.3 \
- CURLOPT_HEADERFUNCTION.3 \
- CURLOPT_HEADEROPT.3 \
- CURLOPT_HTTP200ALIASES.3 \
- CURLOPT_HTTPAUTH.3 \
- CURLOPT_HTTPGET.3 \
- CURLOPT_HTTPHEADER.3 \
- CURLOPT_HTTPPOST.3 \
- CURLOPT_HTTPPROXYTUNNEL.3 \
- CURLOPT_HTTP_CONTENT_DECODING.3 \
- CURLOPT_HTTP_TRANSFER_DECODING.3 \
- CURLOPT_HTTP_VERSION.3 \
- CURLOPT_IGNORE_CONTENT_LENGTH.3 \
- CURLOPT_INFILESIZE.3 \
- CURLOPT_INFILESIZE_LARGE.3 \
- CURLOPT_INTERFACE.3 \
- CURLOPT_INTERLEAVEDATA.3 \
- CURLOPT_INTERLEAVEFUNCTION.3 \
- CURLOPT_IOCTLDATA.3 \
- CURLOPT_IOCTLFUNCTION.3 \
- CURLOPT_IPRESOLVE.3 \
- CURLOPT_ISSUERCERT.3 \
- CURLOPT_KEEP_SENDING_ON_ERROR.3 \
- CURLOPT_KEYPASSWD.3 \
- CURLOPT_KRBLEVEL.3 \
- CURLOPT_LOCALPORT.3 \
- CURLOPT_LOCALPORTRANGE.3 \
- CURLOPT_LOGIN_OPTIONS.3 \
- CURLOPT_LOW_SPEED_LIMIT.3 \
- CURLOPT_LOW_SPEED_TIME.3 \
- CURLOPT_MAIL_AUTH.3 \
- CURLOPT_MAIL_FROM.3 \
- CURLOPT_MAIL_RCPT.3 \
- CURLOPT_MAXCONNECTS.3 \
- CURLOPT_MAXFILESIZE.3 \
- CURLOPT_MAXFILESIZE_LARGE.3 \
- CURLOPT_MAXREDIRS.3 \
- CURLOPT_MAX_RECV_SPEED_LARGE.3 \
- CURLOPT_MAX_SEND_SPEED_LARGE.3 \
- CURLOPT_MIMEPOST.3 \
- CURLOPT_NETRC.3 \
- CURLOPT_NETRC_FILE.3 \
- CURLOPT_NEW_DIRECTORY_PERMS.3 \
- CURLOPT_NEW_FILE_PERMS.3 \
- CURLOPT_NOBODY.3 \
- CURLOPT_NOPROGRESS.3 \
- CURLOPT_NOPROXY.3 \
- CURLOPT_NOSIGNAL.3 \
- CURLOPT_OPENSOCKETDATA.3 \
- CURLOPT_OPENSOCKETFUNCTION.3 \
- CURLOPT_PASSWORD.3 \
- CURLOPT_PATH_AS_IS.3 \
- CURLOPT_PINNEDPUBLICKEY.3 \
- CURLOPT_PIPEWAIT.3 \
- CURLOPT_PORT.3 \
- CURLOPT_POST.3 \
- CURLOPT_POSTFIELDS.3 \
- CURLOPT_POSTFIELDSIZE.3 \
- CURLOPT_POSTFIELDSIZE_LARGE.3 \
- CURLOPT_POSTQUOTE.3 \
- CURLOPT_POSTREDIR.3 \
- CURLOPT_PREQUOTE.3 \
- CURLOPT_PRE_PROXY.3 \
- CURLOPT_PRIVATE.3 \
- CURLOPT_PROGRESSDATA.3 \
- CURLOPT_PROGRESSFUNCTION.3 \
- CURLOPT_PROTOCOLS.3 \
- CURLOPT_PROXY.3 \
- CURLOPT_PROXYAUTH.3 \
- CURLOPT_PROXYHEADER.3 \
- CURLOPT_PROXYPASSWORD.3 \
- CURLOPT_PROXYPORT.3 \
- CURLOPT_PROXYTYPE.3 \
- CURLOPT_PROXYUSERNAME.3 \
- CURLOPT_PROXYUSERPWD.3 \
- CURLOPT_PROXY_CAINFO.3 \
- CURLOPT_PROXY_CAPATH.3 \
- CURLOPT_PROXY_CRLFILE.3 \
- CURLOPT_PROXY_KEYPASSWD.3 \
- CURLOPT_PROXY_PINNEDPUBLICKEY.3 \
- CURLOPT_PROXY_SERVICE_NAME.3 \
- CURLOPT_PROXY_SSLCERT.3 \
- CURLOPT_PROXY_SSLCERTTYPE.3 \
- CURLOPT_PROXY_SSLKEY.3 \
- CURLOPT_PROXY_SSLKEYTYPE.3 \
- CURLOPT_PROXY_SSLVERSION.3 \
- CURLOPT_PROXY_SSL_CIPHER_LIST.3 \
- CURLOPT_PROXY_SSL_OPTIONS.3 \
- CURLOPT_PROXY_SSL_VERIFYHOST.3 \
- CURLOPT_PROXY_SSL_VERIFYPEER.3 \
- CURLOPT_PROXY_TLSAUTH_PASSWORD.3 \
- CURLOPT_PROXY_TLSAUTH_TYPE.3 \
- CURLOPT_PROXY_TLSAUTH_USERNAME.3 \
- CURLOPT_PROXY_TRANSFER_MODE.3 \
- CURLOPT_PUT.3 \
- CURLOPT_QUOTE.3 \
- CURLOPT_RANDOM_FILE.3 \
- CURLOPT_RANGE.3 \
- CURLOPT_READDATA.3 \
- CURLOPT_READFUNCTION.3 \
- CURLOPT_REDIR_PROTOCOLS.3 \
- CURLOPT_REFERER.3 \
- CURLOPT_REQUEST_TARGET.3 \
- CURLOPT_RESOLVE.3 \
- CURLOPT_RESOLVER_START_DATA.3 \
- CURLOPT_RESOLVER_START_FUNCTION.3 \
- CURLOPT_RESUME_FROM.3 \
- CURLOPT_RESUME_FROM_LARGE.3 \
- CURLOPT_RTSP_CLIENT_CSEQ.3 \
- CURLOPT_RTSP_REQUEST.3 \
- CURLOPT_RTSP_SERVER_CSEQ.3 \
- CURLOPT_RTSP_SESSION_ID.3 \
- CURLOPT_RTSP_STREAM_URI.3 \
- CURLOPT_RTSP_TRANSPORT.3 \
- CURLOPT_SASL_IR.3 \
- CURLOPT_SEEKDATA.3 \
- CURLOPT_SEEKFUNCTION.3 \
- CURLOPT_SERVICE_NAME.3 \
- CURLOPT_SHARE.3 \
- CURLOPT_SOCKOPTDATA.3 \
- CURLOPT_SOCKOPTFUNCTION.3 \
- CURLOPT_SOCKS5_AUTH.3 \
- CURLOPT_SOCKS5_GSSAPI_NEC.3 \
- CURLOPT_SOCKS5_GSSAPI_SERVICE.3 \
- CURLOPT_SSH_AUTH_TYPES.3 \
- CURLOPT_SSH_COMPRESSION.3 \
- CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3 \
- CURLOPT_SSH_KEYDATA.3 \
- CURLOPT_SSH_KEYFUNCTION.3 \
- CURLOPT_SSH_KNOWNHOSTS.3 \
- CURLOPT_SSH_PRIVATE_KEYFILE.3 \
- CURLOPT_SSH_PUBLIC_KEYFILE.3 \
- CURLOPT_SSLCERT.3 \
- CURLOPT_SSLCERTTYPE.3 \
- CURLOPT_SSLENGINE.3 \
- CURLOPT_SSLENGINE_DEFAULT.3 \
- CURLOPT_SSLKEY.3 \
- CURLOPT_SSLKEYTYPE.3 \
- CURLOPT_SSLVERSION.3 \
- CURLOPT_SSL_CIPHER_LIST.3 \
- CURLOPT_SSL_CTX_DATA.3 \
- CURLOPT_SSL_CTX_FUNCTION.3 \
- CURLOPT_SSL_ENABLE_ALPN.3 \
- CURLOPT_SSL_ENABLE_NPN.3 \
- CURLOPT_SSL_FALSESTART.3 \
- CURLOPT_SSL_OPTIONS.3 \
- CURLOPT_SSL_SESSIONID_CACHE.3 \
- CURLOPT_SSL_VERIFYHOST.3 \
- CURLOPT_SSL_VERIFYPEER.3 \
- CURLOPT_SSL_VERIFYSTATUS.3 \
- CURLOPT_STDERR.3 \
- CURLOPT_STREAM_DEPENDS.3 \
- CURLOPT_STREAM_DEPENDS_E.3 \
- CURLOPT_STREAM_WEIGHT.3 \
- CURLOPT_SUPPRESS_CONNECT_HEADERS.3 \
- CURLOPT_TCP_FASTOPEN.3 \
- CURLOPT_TCP_KEEPALIVE.3 \
- CURLOPT_TCP_KEEPIDLE.3 \
- CURLOPT_TCP_KEEPINTVL.3 \
- CURLOPT_TCP_NODELAY.3 \
- CURLOPT_TELNETOPTIONS.3 \
- CURLOPT_TFTP_BLKSIZE.3 \
- CURLOPT_TFTP_NO_OPTIONS.3 \
- CURLOPT_TIMECONDITION.3 \
- CURLOPT_TIMEOUT.3 \
- CURLOPT_TIMEOUT_MS.3 \
- CURLOPT_TIMEVALUE.3 \
- CURLOPT_TIMEVALUE_LARGE.3 \
- CURLOPT_TLSAUTH_PASSWORD.3 \
- CURLOPT_TLSAUTH_TYPE.3 \
- CURLOPT_TLSAUTH_USERNAME.3 \
- CURLOPT_TRANSFERTEXT.3 \
- CURLOPT_TRANSFER_ENCODING.3 \
- CURLOPT_UNIX_SOCKET_PATH.3 \
- CURLOPT_UNRESTRICTED_AUTH.3 \
- CURLOPT_UPLOAD.3 \
- CURLOPT_URL.3 \
- CURLOPT_USERAGENT.3 \
- CURLOPT_USERNAME.3 \
- CURLOPT_USERPWD.3 \
- CURLOPT_USE_SSL.3 \
- CURLOPT_VERBOSE.3 \
- CURLOPT_WILDCARDMATCH.3 \
- CURLOPT_WRITEDATA.3 \
- CURLOPT_WRITEFUNCTION.3 \
- CURLOPT_XFERINFODATA.3 \
- CURLOPT_XFERINFOFUNCTION.3 \
- CURLOPT_XOAUTH2_BEARER.3
+ GNURLINFO_ACTIVESOCKET.3 \
+ GNURLINFO_APPCONNECT_TIME.3 \
+ GNURLINFO_CERTINFO.3 \
+ GNURLINFO_CONDITION_UNMET.3 \
+ GNURLINFO_CONNECT_TIME.3 \
+ GNURLINFO_CONTENT_LENGTH_DOWNLOAD.3 \
+ GNURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3 \
+ GNURLINFO_CONTENT_LENGTH_UPLOAD.3 \
+ GNURLINFO_CONTENT_LENGTH_UPLOAD_T.3 \
+ GNURLINFO_CONTENT_TYPE.3 \
+ GNURLINFO_COOKIELIST.3 \
+ GNURLINFO_EFFECTIVE_URL.3 \
+ GNURLINFO_FILETIME.3 \
++ GNURLINFO_FILETIME_T.3 \
+ GNURLINFO_FTP_ENTRY_PATH.3 \
+ GNURLINFO_HEADER_SIZE.3 \
+ GNURLINFO_HTTPAUTH_AVAIL.3 \
+ GNURLINFO_HTTP_CONNECTCODE.3 \
+ GNURLINFO_HTTP_VERSION.3 \
+ GNURLINFO_LASTSOCKET.3 \
+ GNURLINFO_LOCAL_IP.3 \
+ GNURLINFO_LOCAL_PORT.3 \
+ GNURLINFO_NAMELOOKUP_TIME.3 \
+ GNURLINFO_NUM_CONNECTS.3 \
+ GNURLINFO_OS_ERRNO.3 \
+ GNURLINFO_PRETRANSFER_TIME.3 \
+ GNURLINFO_PRIMARY_IP.3 \
+ GNURLINFO_PRIMARY_PORT.3 \
+ GNURLINFO_PRIVATE.3 \
+ GNURLINFO_PROTOCOL.3 \
+ GNURLINFO_PROXYAUTH_AVAIL.3 \
+ GNURLINFO_PROXY_SSL_VERIFYRESULT.3 \
+ GNURLINFO_REDIRECT_COUNT.3 \
+ GNURLINFO_REDIRECT_TIME.3 \
+ GNURLINFO_REDIRECT_URL.3 \
+ GNURLINFO_REQUEST_SIZE.3 \
+ GNURLINFO_RESPONSE_CODE.3 \
+ GNURLINFO_RTSP_CLIENT_CSEQ.3 \
+ GNURLINFO_RTSP_CSEQ_RECV.3 \
+ GNURLINFO_RTSP_SERVER_CSEQ.3 \
+ GNURLINFO_RTSP_SESSION_ID.3 \
+ GNURLINFO_SCHEME.3 \
+ GNURLINFO_SIZE_DOWNLOAD.3 \
+ GNURLINFO_SIZE_DOWNLOAD_T.3 \
+ GNURLINFO_SIZE_UPLOAD.3 \
+ GNURLINFO_SIZE_UPLOAD_T.3 \
+ GNURLINFO_SPEED_DOWNLOAD.3 \
+ GNURLINFO_SPEED_DOWNLOAD_T.3 \
+ GNURLINFO_SPEED_UPLOAD.3 \
+ GNURLINFO_SPEED_UPLOAD_T.3 \
+ GNURLINFO_SSL_ENGINES.3 \
+ GNURLINFO_SSL_VERIFYRESULT.3 \
+ GNURLINFO_STARTTRANSFER_TIME.3 \
+ GNURLINFO_TLS_SESSION.3 \
+ GNURLINFO_TLS_SSL_PTR.3 \
+ GNURLINFO_TOTAL_TIME.3 \
+ GNURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 \
+ GNURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 \
+ GNURLMOPT_MAXCONNECTS.3 \
+ GNURLMOPT_MAX_HOST_CONNECTIONS.3 \
+ GNURLMOPT_MAX_PIPELINE_LENGTH.3 \
+ GNURLMOPT_MAX_TOTAL_CONNECTIONS.3 \
+ GNURLMOPT_PIPELINING.3 \
+ GNURLMOPT_PIPELINING_SERVER_BL.3 \
+ GNURLMOPT_PIPELINING_SITE_BL.3 \
+ GNURLMOPT_PUSHDATA.3 \
+ GNURLMOPT_PUSHFUNCTION.3 \
+ GNURLMOPT_SOCKETDATA.3 \
+ GNURLMOPT_SOCKETFUNCTION.3 \
+ GNURLMOPT_TIMERDATA.3 \
+ GNURLMOPT_TIMERFUNCTION.3 \
+ GNURLOPT_ABSTRACT_UNIX_SOCKET.3 \
+ GNURLOPT_ACCEPTTIMEOUT_MS.3 \
+ GNURLOPT_ACCEPT_ENCODING.3 \
+ GNURLOPT_ADDRESS_SCOPE.3 \
+ GNURLOPT_APPEND.3 \
+ GNURLOPT_AUTOREFERER.3 \
+ GNURLOPT_BUFFERSIZE.3 \
+ GNURLOPT_CAINFO.3 \
+ GNURLOPT_CAPATH.3 \
+ GNURLOPT_CERTINFO.3 \
+ GNURLOPT_CHUNK_BGN_FUNCTION.3 \
+ GNURLOPT_CHUNK_DATA.3 \
+ GNURLOPT_CHUNK_END_FUNCTION.3 \
+ GNURLOPT_CLOSESOCKETDATA.3 \
+ GNURLOPT_CLOSESOCKETFUNCTION.3 \
+ GNURLOPT_CONNECTTIMEOUT.3 \
+ GNURLOPT_CONNECTTIMEOUT_MS.3 \
+ GNURLOPT_CONNECT_ONLY.3 \
+ GNURLOPT_CONNECT_TO.3 \
+ GNURLOPT_CONV_FROM_NETWORK_FUNCTION.3 \
+ GNURLOPT_CONV_FROM_UTF8_FUNCTION.3 \
+ GNURLOPT_CONV_TO_NETWORK_FUNCTION.3 \
+ GNURLOPT_COOKIE.3 \
+ GNURLOPT_COOKIEFILE.3 \
+ GNURLOPT_COOKIEJAR.3 \
+ GNURLOPT_COOKIELIST.3 \
+ GNURLOPT_COOKIESESSION.3 \
+ GNURLOPT_COPYPOSTFIELDS.3 \
+ GNURLOPT_CRLF.3 \
+ GNURLOPT_CRLFILE.3 \
+ GNURLOPT_CUSTOMREQUEST.3 \
+ GNURLOPT_DEBUGDATA.3 \
+ GNURLOPT_DEBUGFUNCTION.3 \
+ GNURLOPT_DEFAULT_PROTOCOL.3 \
+ GNURLOPT_DIRLISTONLY.3 \
+ GNURLOPT_DNS_CACHE_TIMEOUT.3 \
+ GNURLOPT_DNS_INTERFACE.3 \
+ GNURLOPT_DNS_LOCAL_IP4.3 \
+ GNURLOPT_DNS_LOCAL_IP6.3 \
+ GNURLOPT_DNS_SERVERS.3 \
+ GNURLOPT_DNS_USE_GLOBAL_CACHE.3 \
+ GNURLOPT_EGDSOCKET.3 \
+ GNURLOPT_ERRORBUFFER.3 \
+ GNURLOPT_EXPECT_100_TIMEOUT_MS.3 \
+ GNURLOPT_FAILONERROR.3 \
+ GNURLOPT_FILETIME.3 \
+ GNURLOPT_FNMATCH_DATA.3 \
+ GNURLOPT_FNMATCH_FUNCTION.3 \
+ GNURLOPT_FOLLOWLOCATION.3 \
+ GNURLOPT_FORBID_REUSE.3 \
+ GNURLOPT_FRESH_CONNECT.3 \
+ GNURLOPT_FTPPORT.3 \
+ GNURLOPT_FTPSSLAUTH.3 \
+ GNURLOPT_FTP_ACCOUNT.3 \
+ GNURLOPT_FTP_ALTERNATIVE_TO_USER.3 \
+ GNURLOPT_FTP_CREATE_MISSING_DIRS.3 \
+ GNURLOPT_FTP_FILEMETHOD.3 \
+ GNURLOPT_FTP_RESPONSE_TIMEOUT.3 \
+ GNURLOPT_FTP_SKIP_PASV_IP.3 \
+ GNURLOPT_FTP_SSL_CCC.3 \
+ GNURLOPT_FTP_USE_EPRT.3 \
+ GNURLOPT_FTP_USE_EPSV.3 \
+ GNURLOPT_FTP_USE_PRET.3 \
+ GNURLOPT_GSSAPI_DELEGATION.3 \
++ GNURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3 \
+ GNURLOPT_HEADER.3 \
+ GNURLOPT_HEADERDATA.3 \
+ GNURLOPT_HEADERFUNCTION.3 \
+ GNURLOPT_HEADEROPT.3 \
+ GNURLOPT_HTTP200ALIASES.3 \
+ GNURLOPT_HTTPAUTH.3 \
+ GNURLOPT_HTTPGET.3 \
+ GNURLOPT_HTTPHEADER.3 \
+ GNURLOPT_HTTPPOST.3 \
+ GNURLOPT_HTTPPROXYTUNNEL.3 \
+ GNURLOPT_HTTP_CONTENT_DECODING.3 \
+ GNURLOPT_HTTP_TRANSFER_DECODING.3 \
+ GNURLOPT_HTTP_VERSION.3 \
+ GNURLOPT_IGNORE_CONTENT_LENGTH.3 \
+ GNURLOPT_INFILESIZE.3 \
+ GNURLOPT_INFILESIZE_LARGE.3 \
+ GNURLOPT_INTERFACE.3 \
+ GNURLOPT_INTERLEAVEDATA.3 \
+ GNURLOPT_INTERLEAVEFUNCTION.3 \
+ GNURLOPT_IOCTLDATA.3 \
+ GNURLOPT_IOCTLFUNCTION.3 \
+ GNURLOPT_IPRESOLVE.3 \
+ GNURLOPT_ISSUERCERT.3 \
+ GNURLOPT_KEEP_SENDING_ON_ERROR.3 \
+ GNURLOPT_KEYPASSWD.3 \
+ GNURLOPT_KRBLEVEL.3 \
+ GNURLOPT_LOCALPORT.3 \
+ GNURLOPT_LOCALPORTRANGE.3 \
+ GNURLOPT_LOGIN_OPTIONS.3 \
+ GNURLOPT_LOW_SPEED_LIMIT.3 \
+ GNURLOPT_LOW_SPEED_TIME.3 \
+ GNURLOPT_MAIL_AUTH.3 \
+ GNURLOPT_MAIL_FROM.3 \
+ GNURLOPT_MAIL_RCPT.3 \
+ GNURLOPT_MAXCONNECTS.3 \
+ GNURLOPT_MAXFILESIZE.3 \
+ GNURLOPT_MAXFILESIZE_LARGE.3 \
+ GNURLOPT_MAXREDIRS.3 \
+ GNURLOPT_MAX_RECV_SPEED_LARGE.3 \
+ GNURLOPT_MAX_SEND_SPEED_LARGE.3 \
+ GNURLOPT_MIMEPOST.3 \
+ GNURLOPT_NETRC.3 \
+ GNURLOPT_NETRC_FILE.3 \
+ GNURLOPT_NEW_DIRECTORY_PERMS.3 \
+ GNURLOPT_NEW_FILE_PERMS.3 \
+ GNURLOPT_NOBODY.3 \
+ GNURLOPT_NOPROGRESS.3 \
+ GNURLOPT_NOPROXY.3 \
+ GNURLOPT_NOSIGNAL.3 \
+ GNURLOPT_OPENSOCKETDATA.3 \
+ GNURLOPT_OPENSOCKETFUNCTION.3 \
+ GNURLOPT_PASSWORD.3 \
+ GNURLOPT_PATH_AS_IS.3 \
+ GNURLOPT_PINNEDPUBLICKEY.3 \
+ GNURLOPT_PIPEWAIT.3 \
+ GNURLOPT_PORT.3 \
+ GNURLOPT_POST.3 \
+ GNURLOPT_POSTFIELDS.3 \
+ GNURLOPT_POSTFIELDSIZE.3 \
+ GNURLOPT_POSTFIELDSIZE_LARGE.3 \
+ GNURLOPT_POSTQUOTE.3 \
+ GNURLOPT_POSTREDIR.3 \
+ GNURLOPT_PREQUOTE.3 \
+ GNURLOPT_PRE_PROXY.3 \
+ GNURLOPT_PRIVATE.3 \
+ GNURLOPT_PROGRESSDATA.3 \
+ GNURLOPT_PROGRESSFUNCTION.3 \
+ GNURLOPT_PROTOCOLS.3 \
+ GNURLOPT_PROXY.3 \
+ GNURLOPT_PROXYAUTH.3 \
+ GNURLOPT_PROXYHEADER.3 \
+ GNURLOPT_PROXYPASSWORD.3 \
+ GNURLOPT_PROXYPORT.3 \
+ GNURLOPT_PROXYTYPE.3 \
+ GNURLOPT_PROXYUSERNAME.3 \
+ GNURLOPT_PROXYUSERPWD.3 \
+ GNURLOPT_PROXY_CAINFO.3 \
+ GNURLOPT_PROXY_CAPATH.3 \
+ GNURLOPT_PROXY_CRLFILE.3 \
+ GNURLOPT_PROXY_KEYPASSWD.3 \
+ GNURLOPT_PROXY_PINNEDPUBLICKEY.3 \
+ GNURLOPT_PROXY_SERVICE_NAME.3 \
+ GNURLOPT_PROXY_SSLCERT.3 \
+ GNURLOPT_PROXY_SSLCERTTYPE.3 \
+ GNURLOPT_PROXY_SSLKEY.3 \
+ GNURLOPT_PROXY_SSLKEYTYPE.3 \
+ GNURLOPT_PROXY_SSLVERSION.3 \
+ GNURLOPT_PROXY_SSL_CIPHER_LIST.3 \
+ GNURLOPT_PROXY_SSL_OPTIONS.3 \
+ GNURLOPT_PROXY_SSL_VERIFYHOST.3 \
+ GNURLOPT_PROXY_SSL_VERIFYPEER.3 \
+ GNURLOPT_PROXY_TLSAUTH_PASSWORD.3 \
+ GNURLOPT_PROXY_TLSAUTH_TYPE.3 \
+ GNURLOPT_PROXY_TLSAUTH_USERNAME.3 \
+ GNURLOPT_PROXY_TRANSFER_MODE.3 \
+ GNURLOPT_PUT.3 \
+ GNURLOPT_QUOTE.3 \
+ GNURLOPT_RANDOM_FILE.3 \
+ GNURLOPT_RANGE.3 \
+ GNURLOPT_READDATA.3 \
+ GNURLOPT_READFUNCTION.3 \
+ GNURLOPT_REDIR_PROTOCOLS.3 \
+ GNURLOPT_REFERER.3 \
+ GNURLOPT_REQUEST_TARGET.3 \
+ GNURLOPT_RESOLVE.3 \
++ GNURLOPT_RESOLVER_START_DATA.3 \
++ GNURLOPT_RESOLVER_START_FUNCTION.3 \
+ GNURLOPT_RESUME_FROM.3 \
+ GNURLOPT_RESUME_FROM_LARGE.3 \
+ GNURLOPT_RTSP_CLIENT_CSEQ.3 \
+ GNURLOPT_RTSP_REQUEST.3 \
+ GNURLOPT_RTSP_SERVER_CSEQ.3 \
+ GNURLOPT_RTSP_SESSION_ID.3 \
+ GNURLOPT_RTSP_STREAM_URI.3 \
+ GNURLOPT_RTSP_TRANSPORT.3 \
+ GNURLOPT_SASL_IR.3 \
+ GNURLOPT_SEEKDATA.3 \
+ GNURLOPT_SEEKFUNCTION.3 \
+ GNURLOPT_SERVICE_NAME.3 \
+ GNURLOPT_SHARE.3 \
+ GNURLOPT_SOCKOPTDATA.3 \
+ GNURLOPT_SOCKOPTFUNCTION.3 \
+ GNURLOPT_SOCKS5_AUTH.3 \
+ GNURLOPT_SOCKS5_GSSAPI_NEC.3 \
+ GNURLOPT_SOCKS5_GSSAPI_SERVICE.3 \
+ GNURLOPT_SSH_AUTH_TYPES.3 \
+ GNURLOPT_SSH_COMPRESSION.3 \
+ GNURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3 \
+ GNURLOPT_SSH_KEYDATA.3 \
+ GNURLOPT_SSH_KEYFUNCTION.3 \
+ GNURLOPT_SSH_KNOWNHOSTS.3 \
+ GNURLOPT_SSH_PRIVATE_KEYFILE.3 \
+ GNURLOPT_SSH_PUBLIC_KEYFILE.3 \
+ GNURLOPT_SSLCERT.3 \
+ GNURLOPT_SSLCERTTYPE.3 \
+ GNURLOPT_SSLENGINE.3 \
+ GNURLOPT_SSLENGINE_DEFAULT.3 \
+ GNURLOPT_SSLKEY.3 \
+ GNURLOPT_SSLKEYTYPE.3 \
+ GNURLOPT_SSLVERSION.3 \
+ GNURLOPT_SSL_CIPHER_LIST.3 \
+ GNURLOPT_SSL_CTX_DATA.3 \
+ GNURLOPT_SSL_CTX_FUNCTION.3 \
+ GNURLOPT_SSL_ENABLE_ALPN.3 \
+ GNURLOPT_SSL_ENABLE_NPN.3 \
+ GNURLOPT_SSL_FALSESTART.3 \
+ GNURLOPT_SSL_OPTIONS.3 \
+ GNURLOPT_SSL_SESSIONID_CACHE.3 \
+ GNURLOPT_SSL_VERIFYHOST.3 \
+ GNURLOPT_SSL_VERIFYPEER.3 \
+ GNURLOPT_SSL_VERIFYSTATUS.3 \
+ GNURLOPT_STDERR.3 \
+ GNURLOPT_STREAM_DEPENDS.3 \
+ GNURLOPT_STREAM_DEPENDS_E.3 \
+ GNURLOPT_STREAM_WEIGHT.3 \
+ GNURLOPT_SUPPRESS_CONNECT_HEADERS.3 \
+ GNURLOPT_TCP_FASTOPEN.3 \
+ GNURLOPT_TCP_KEEPALIVE.3 \
+ GNURLOPT_TCP_KEEPIDLE.3 \
+ GNURLOPT_TCP_KEEPINTVL.3 \
+ GNURLOPT_TCP_NODELAY.3 \
+ GNURLOPT_TELNETOPTIONS.3 \
+ GNURLOPT_TFTP_BLKSIZE.3 \
+ GNURLOPT_TFTP_NO_OPTIONS.3 \
+ GNURLOPT_TIMECONDITION.3 \
+ GNURLOPT_TIMEOUT.3 \
+ GNURLOPT_TIMEOUT_MS.3 \
+ GNURLOPT_TIMEVALUE.3 \
++ GNURLOPT_TIMEVALUE_LARGE.3 \
+ GNURLOPT_TLSAUTH_PASSWORD.3 \
+ GNURLOPT_TLSAUTH_TYPE.3 \
+ GNURLOPT_TLSAUTH_USERNAME.3 \
+ GNURLOPT_TRANSFERTEXT.3 \
+ GNURLOPT_TRANSFER_ENCODING.3 \
+ GNURLOPT_UNIX_SOCKET_PATH.3 \
+ GNURLOPT_UNRESTRICTED_AUTH.3 \
+ GNURLOPT_UPLOAD.3 \
+ GNURLOPT_URL.3 \
+ GNURLOPT_USERAGENT.3 \
+ GNURLOPT_USERNAME.3 \
+ GNURLOPT_USERPWD.3 \
+ GNURLOPT_USE_SSL.3 \
+ GNURLOPT_VERBOSE.3 \
+ GNURLOPT_WILDCARDMATCH.3 \
+ GNURLOPT_WRITEDATA.3 \
+ GNURLOPT_WRITEFUNCTION.3 \
+ GNURLOPT_XFERINFODATA.3 \
+ GNURLOPT_XFERINFOFUNCTION.3 \
+ GNURLOPT_XOAUTH2_BEARER.3
diff --cc include/gnurl/multi.h
index 55efae0be,000000000..eab23c08e
mode 100644,000000..100644
--- a/include/gnurl/multi.h
+++ b/include/gnurl/multi.h
@@@ -1,439 -1,0 +1,441 @@@
+#ifndef __CURL_MULTI_H
+#define __CURL_MULTI_H
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2017, Daniel Stenberg, <address@hidden>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+/*
+ This is an "external" header file. Don't give away any internals here!
+
+ GOALS
+
+ o Enable a "pull" interface. The application that uses libcurl decides where
+ and when to ask libcurl to get/send data.
+
+ o Enable multiple simultaneous transfers in the same thread without making
it
+ complicated for the application.
+
+ o Enable the application to select() on its own file descriptors and curl's
+ file descriptors simultaneous easily.
+
+*/
+
+/*
+ * This header file should not really need to include "curl.h" since curl.h
+ * itself includes this file and we expect user applications to do #include
+ * <gnurl/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
+
+#if defined(BUILDING_LIBCURL) || defined(CURL_STRICTER)
+typedef struct Curl_multi CURLM;
+#else
+typedef void CURLM;
+#endif
+
+typedef enum {
+ CURLM_CALL_MULTI_PERFORM = -1, /* please call curl_multi_perform() or
+ curl_multi_socket*() soon */
+ CURLM_OK,
+ CURLM_BAD_HANDLE, /* the passed-in handle is not a valid CURLM handle
*/
+ CURLM_BAD_EASY_HANDLE, /* an easy handle was not good/valid */
+ CURLM_OUT_OF_MEMORY, /* if you ever get this, you're in deep sh*t */
+ CURLM_INTERNAL_ERROR, /* this is a libcurl bug */
+ CURLM_BAD_SOCKET, /* the passed in socket argument did not match */
+ CURLM_UNKNOWN_OPTION, /* curl_multi_setopt() with unsupported option */
+ CURLM_ADDED_ALREADY, /* an easy handle already added to a multi handle was
+ attempted to get added - again */
++ CURLM_RECURSIVE_API_CALL, /* an api function was called from inside a
++ callback */
+ CURLM_LAST
+} CURLMcode;
+
+/* just to make code nicer when using curl_multi_socket() you can now check
+ for CURLM_CALL_MULTI_SOCKET too in the same style it works for
+ curl_multi_perform() and CURLM_CALL_MULTI_PERFORM */
+#define CURLM_CALL_MULTI_SOCKET CURLM_CALL_MULTI_PERFORM
+
+/* bitmask bits for CURLMOPT_PIPELINING */
+#define CURLPIPE_NOTHING 0L
+#define CURLPIPE_HTTP1 1L
+#define CURLPIPE_MULTIPLEX 2L
+
+typedef enum {
+ CURLMSG_NONE, /* first, not used */
+ CURLMSG_DONE, /* This easy handle has completed. 'result' contains
+ the CURLcode of the transfer */
+ CURLMSG_LAST /* last, not used */
+} CURLMSG;
+
+struct CURLMsg {
+ CURLMSG msg; /* what this message means */
+ CURL *easy_handle; /* the handle it concerns */
+ union {
+ void *whatever; /* message-specific data */
+ CURLcode result; /* return code for transfer */
+ } data;
+};
+typedef struct CURLMsg CURLMsg;
+
+/* Based on poll(2) structure and values.
+ * We don't use pollfd and POLL* constants explicitly
+ * to cover platforms without poll(). */
+#define CURL_WAIT_POLLIN 0x0001
+#define CURL_WAIT_POLLPRI 0x0002
+#define CURL_WAIT_POLLOUT 0x0004
+
+struct curl_waitfd {
+ curl_socket_t fd;
+ short events;
+ short revents; /* not supported yet */
+};
+
+/*
+ * Name: curl_multi_init()
+ *
+ * Desc: inititalize multi-style curl usage
+ *
+ * Returns: a new CURLM handle to use in all 'curl_multi' functions.
+ */
+CURL_EXTERN CURLM *curl_multi_init(void);
+
+/*
+ * Name: curl_multi_add_handle()
+ *
+ * Desc: add a standard curl handle to the multi stack
+ *
+ * Returns: CURLMcode type, general multi error code.
+ */
+CURL_EXTERN CURLMcode curl_multi_add_handle(CURLM *multi_handle,
+ CURL *curl_handle);
+
+ /*
+ * Name: curl_multi_remove_handle()
+ *
+ * Desc: removes a curl handle from the multi stack again
+ *
+ * Returns: CURLMcode type, general multi error code.
+ */
+CURL_EXTERN CURLMcode curl_multi_remove_handle(CURLM *multi_handle,
+ CURL *curl_handle);
+
+ /*
+ * Name: curl_multi_fdset()
+ *
+ * Desc: Ask curl for its fd_set sets. The app can use these to select()
or
+ * poll() on. We want curl_multi_perform() called as soon as one of
+ * them are ready.
+ *
+ * Returns: CURLMcode type, general multi error code.
+ */
+CURL_EXTERN CURLMcode curl_multi_fdset(CURLM *multi_handle,
+ fd_set *read_fd_set,
+ fd_set *write_fd_set,
+ fd_set *exc_fd_set,
+ int *max_fd);
+
+/*
+ * Name: curl_multi_wait()
+ *
+ * Desc: Poll on all fds within a CURLM set as well as any
+ * additional fds passed to the function.
+ *
+ * Returns: CURLMcode type, general multi error code.
+ */
+CURL_EXTERN CURLMcode curl_multi_wait(CURLM *multi_handle,
+ struct curl_waitfd extra_fds[],
+ unsigned int extra_nfds,
+ int timeout_ms,
+ int *ret);
+
+ /*
+ * Name: curl_multi_perform()
+ *
+ * Desc: When the app thinks there's data available for curl it calls this
+ * function to read/write whatever there is right now. This returns
+ * as soon as the reads and writes are done. This function does not
+ * require that there actually is data available for reading or that
+ * data can be written, it can be called just in case. It returns
+ * the number of handles that still transfer data in the second
+ * argument's integer-pointer.
+ *
+ * Returns: CURLMcode type, general multi error code. *NOTE* that this only
+ * returns errors etc regarding the whole multi stack. There might
- * still have occurred problems on invidual transfers even when this
- * returns OK.
++ * still have occurred problems on individual transfers even when
++ * this returns OK.
+ */
+CURL_EXTERN CURLMcode curl_multi_perform(CURLM *multi_handle,
+ int *running_handles);
+
+ /*
+ * Name: curl_multi_cleanup()
+ *
+ * Desc: Cleans up and removes a whole multi stack. It does not free or
+ * touch any individual easy handles in any way. We need to define
+ * in what state those handles will be if this function is called
+ * in the middle of a transfer.
+ *
+ * Returns: CURLMcode type, general multi error code.
+ */
+CURL_EXTERN CURLMcode curl_multi_cleanup(CURLM *multi_handle);
+
+/*
+ * Name: curl_multi_info_read()
+ *
+ * Desc: Ask the multi handle if there's any messages/informationals from
+ * the individual transfers. Messages include informationals such as
+ * error code from the transfer or just the fact that a transfer is
+ * completed. More details on these should be written down as well.
+ *
+ * Repeated calls to this function will return a new struct each
+ * time, until a special "end of msgs" struct is returned as a signal
+ * that there is no more to get at this point.
+ *
+ * The data the returned pointer points to will not survive calling
+ * curl_multi_cleanup().
+ *
+ * The 'CURLMsg' struct is meant to be very simple and only contain
+ * very basic information. If more involved information is wanted,
+ * we will provide the particular "transfer handle" in that struct
+ * and that should/could/would be used in subsequent
+ * curl_easy_getinfo() calls (or similar). The point being that we
+ * must never expose complex structs to applications, as then we'll
+ * undoubtably get backwards compatibility problems in the future.
+ *
+ * Returns: A pointer to a filled-in struct, or NULL if it failed or ran out
+ * of structs. It also writes the number of messages left in the
+ * queue (after this read) in the integer the second argument points
+ * to.
+ */
+CURL_EXTERN CURLMsg *curl_multi_info_read(CURLM *multi_handle,
+ int *msgs_in_queue);
+
+/*
+ * Name: curl_multi_strerror()
+ *
+ * Desc: The curl_multi_strerror function may be used to turn a CURLMcode
+ * value into the equivalent human readable error string. This is
+ * useful for printing meaningful error messages.
+ *
+ * Returns: A pointer to a zero-terminated error message.
+ */
+CURL_EXTERN const char *curl_multi_strerror(CURLMcode);
+
+/*
+ * Name: curl_multi_socket() and
+ * curl_multi_socket_all()
+ *
+ * Desc: An alternative version of curl_multi_perform() that allows the
+ * application to pass in one of the file descriptors that have been
+ * detected to have "action" on them and let libcurl perform.
+ * See man page for details.
+ */
+#define CURL_POLL_NONE 0
+#define CURL_POLL_IN 1
+#define CURL_POLL_OUT 2
+#define CURL_POLL_INOUT 3
+#define CURL_POLL_REMOVE 4
+
+#define CURL_SOCKET_TIMEOUT CURL_SOCKET_BAD
+
+#define CURL_CSELECT_IN 0x01
+#define CURL_CSELECT_OUT 0x02
+#define CURL_CSELECT_ERR 0x04
+
+typedef int (*curl_socket_callback)(CURL *easy, /* easy handle */
+ curl_socket_t s, /* socket */
+ int what, /* see above */
+ void *userp, /* private callback
+ pointer */
+ void *socketp); /* private socket
+ pointer */
+/*
+ * Name: curl_multi_timer_callback
+ *
+ * Desc: Called by libcurl whenever the library detects a change in the
+ * maximum number of milliseconds the app is allowed to wait before
+ * curl_multi_socket() or curl_multi_perform() must be called
+ * (to allow libcurl's timed events to take place).
+ *
+ * Returns: The callback should return zero.
+ */
+typedef int (*curl_multi_timer_callback)(CURLM *multi, /* multi handle */
+ long timeout_ms, /* see above */
+ void *userp); /* private callback
+ pointer */
+
+CURL_EXTERN CURLMcode curl_multi_socket(CURLM *multi_handle, curl_socket_t s,
+ int *running_handles);
+
+CURL_EXTERN CURLMcode curl_multi_socket_action(CURLM *multi_handle,
+ curl_socket_t s,
+ int ev_bitmask,
+ int *running_handles);
+
+CURL_EXTERN CURLMcode curl_multi_socket_all(CURLM *multi_handle,
+ int *running_handles);
+
+#ifndef CURL_ALLOW_OLD_MULTI_SOCKET
+/* This macro below was added in 7.16.3 to push users who recompile to use
+ the new curl_multi_socket_action() instead of the old curl_multi_socket()
+*/
+#define curl_multi_socket(x,y,z) curl_multi_socket_action(x,y,0,z)
+#endif
+
+/*
+ * Name: curl_multi_timeout()
+ *
+ * Desc: Returns the maximum number of milliseconds the app is allowed to
+ * wait before curl_multi_socket() or curl_multi_perform() must be
+ * called (to allow libcurl's timed events to take place).
+ *
+ * Returns: CURLM error code.
+ */
+CURL_EXTERN CURLMcode curl_multi_timeout(CURLM *multi_handle,
+ long *milliseconds);
+
+#undef CINIT /* re-using the same name as in curl.h */
+
+#ifdef CURL_ISOCPP
+#define CINIT(name,type,num) CURLMOPT_ ## name = CURLOPTTYPE_ ## type + num
+#else
+/* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */
+#define LONG CURLOPTTYPE_LONG
+#define OBJECTPOINT CURLOPTTYPE_OBJECTPOINT
+#define FUNCTIONPOINT CURLOPTTYPE_FUNCTIONPOINT
+#define OFF_T CURLOPTTYPE_OFF_T
+#define CINIT(name,type,number) CURLMOPT_/**/name = type + number
+#endif
+
+typedef enum {
+ /* This is the socket callback function pointer */
+ CINIT(SOCKETFUNCTION, FUNCTIONPOINT, 1),
+
+ /* This is the argument passed to the socket callback */
+ CINIT(SOCKETDATA, OBJECTPOINT, 2),
+
+ /* set to 1 to enable pipelining for this multi handle */
+ CINIT(PIPELINING, LONG, 3),
+
+ /* This is the timer callback function pointer */
+ CINIT(TIMERFUNCTION, FUNCTIONPOINT, 4),
+
+ /* This is the argument passed to the timer callback */
+ CINIT(TIMERDATA, OBJECTPOINT, 5),
+
+ /* maximum number of entries in the connection cache */
+ CINIT(MAXCONNECTS, LONG, 6),
+
+ /* maximum number of (pipelining) connections to one host */
+ CINIT(MAX_HOST_CONNECTIONS, LONG, 7),
+
+ /* maximum number of requests in a pipeline */
+ CINIT(MAX_PIPELINE_LENGTH, LONG, 8),
+
+ /* a connection with a content-length longer than this
+ will not be considered for pipelining */
+ CINIT(CONTENT_LENGTH_PENALTY_SIZE, OFF_T, 9),
+
+ /* a connection with a chunk length longer than this
+ will not be considered for pipelining */
+ CINIT(CHUNK_LENGTH_PENALTY_SIZE, OFF_T, 10),
+
+ /* a list of site names(+port) that are blacklisted from
+ pipelining */
+ CINIT(PIPELINING_SITE_BL, OBJECTPOINT, 11),
+
+ /* a list of server types that are blacklisted from
+ pipelining */
+ CINIT(PIPELINING_SERVER_BL, OBJECTPOINT, 12),
+
+ /* maximum number of open connections in total */
+ CINIT(MAX_TOTAL_CONNECTIONS, LONG, 13),
+
+ /* This is the server push callback function pointer */
+ CINIT(PUSHFUNCTION, FUNCTIONPOINT, 14),
+
+ /* This is the argument passed to the server push callback */
+ CINIT(PUSHDATA, OBJECTPOINT, 15),
+
+ CURLMOPT_LASTENTRY /* the last unused */
+} CURLMoption;
+
+
+/*
+ * Name: curl_multi_setopt()
+ *
+ * Desc: Sets options for the multi handle.
+ *
+ * Returns: CURLM error code.
+ */
+CURL_EXTERN CURLMcode curl_multi_setopt(CURLM *multi_handle,
+ CURLMoption option, ...);
+
+
+/*
+ * Name: curl_multi_assign()
+ *
+ * Desc: This function sets an association in the multi handle between the
+ * given socket and a private pointer of the application. This is
+ * (only) useful for curl_multi_socket uses.
+ *
+ * Returns: CURLM error code.
+ */
+CURL_EXTERN CURLMcode curl_multi_assign(CURLM *multi_handle,
+ curl_socket_t sockfd, void *sockp);
+
+
+/*
+ * Name: curl_push_callback
+ *
+ * Desc: This callback gets called when a new stream is being pushed by the
+ * server. It approves or denies the new stream.
+ *
+ * Returns: CURL_PUSH_OK or CURL_PUSH_DENY.
+ */
+#define CURL_PUSH_OK 0
+#define CURL_PUSH_DENY 1
+
+struct curl_pushheaders; /* forward declaration only */
+
+CURL_EXTERN char *curl_pushheader_bynum(struct curl_pushheaders *h,
+ size_t num);
+CURL_EXTERN char *curl_pushheader_byname(struct curl_pushheaders *h,
+ const char *name);
+
+typedef int (*curl_push_callback)(CURL *parent,
+ CURL *easy,
+ size_t num_headers,
+ struct curl_pushheaders *headers,
+ void *userp);
+
+#ifdef __cplusplus
+} /* end of extern "C" */
+#endif
+
+#endif
diff --cc lib/easy.c
index fe033014a,64c647be2..8bf200650
--- a/lib/easy.c
+++ b/lib/easy.c
@@@ -1027,7 -1033,10 +1033,10 @@@ void curl_easy_reset(struct Curl_easy *
* NOTE: if you have the receiving paused and you call this function to remove
* the pausing, you may get your write callback called at this point.
*
- * Action is a bitmask consisting of CURLPAUSE_* bits in curl/curl.h
+ * Action is a bitmask consisting of CURLPAUSE_* bits in gnurl/curl.h
+ *
+ * NOTE: This is one of few API functions that are allowed to be called from
+ * within a callback.
*/
CURLcode curl_easy_pause(struct Curl_easy *data, int action)
{
diff --cc lib/warnless.h
index 5905cb7e3,efd552a60..318c020c2
--- a/lib/warnless.h
+++ b/lib/warnless.h
@@@ -23,9 -23,14 +23,14 @@@
***************************************************************************/
#ifdef USE_WINSOCK
-#include <curl/curl.h> /* for curl_socket_t */
+#include <gnurl/curl.h> /* for curl_socket_t */
#endif
+ #define CURLX_POINTER_TO_INTEGER_CAST(p) \
+ ((char *)(p) - (char *)NULL)
+ #define CURLX_INTEGER_TO_POINTER_CAST(i) \
+ ((void *)((char *)NULL + (i)))
+
unsigned short curlx_ultous(unsigned long ulnum);
unsigned char curlx_ultouc(unsigned long ulnum);
diff --cc tests/data/Makefile.inc
index 98d03b6b4,97daf00ce..eaf0deb05
--- a/tests/data/Makefile.inc
+++ b/tests/data/Makefile.inc
@@@ -122,11 -125,12 +125,12 @@@ test1104 test1105 test1106 test1107 tes
test1112 test1113 test1114 test1115 test1116 test1117 test1118 test1119 \
test1120 test1121 test1122 test1123 test1124 test1125 test1126 test1127 \
test1128 test1129 test1130 test1131 test1132 test1133 test1134 test1135 \
-test1136 test1137 test1138 test1139 test1140 test1141 test1142 test1143 \
+test1136 test1137 test1138 test1141 test1142 test1143 \
test1144 test1145 test1146 test1147 test1148 test1149 test1150 test1151 \
- test1152 test1153 \
+ test1152 test1153 test1154 \
\
test1160 test1161 test1162 test1163 \
+ test1170 test1171 \
test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \
test1216 test1217 test1218 test1219 \
diff --cc tests/nroff-scan.pl
index 1ab780f56,6121d4c8e..c868dd622
--- a/tests/nroff-scan.pl
+++ b/tests/nroff-scan.pl
@@@ -66,10 -66,10 +66,10 @@@ sub file
print STDERR "error: $f:$line: missing \\fP after $str\n";
$errors++;
}
- if($str =~ /((libcurl|curl)([^ ]*))\(3\)/i) {
+ if($str =~ /((libcurl|gnurl)([^ ]*))\(3\)/i) {
my $man = "$1.3";
if(!manpresent($man)) {
- print STDERR "error: $f:$line: refering to non-existing
man page $man\n";
+ print STDERR "error: $f:$line: referring to non-existing
man page $man\n";
$errors++;
}
if($pre ne "I") {
@@@ -84,10 -84,10 +84,10 @@@
}
if($l =~ /^\.BR (.*)/) {
my $i= $1;
- while($i =~ s/((lib|)curl([^ ]*)) *\"\(3\)(,|) *\" *//i ) {
+ while($i =~ s/((lib|)gnurl([^ ]*)) *\"\(3\)(,|) *\" *//i ) {
my $man = "$1.3";
if(!manpresent($man)) {
- print STDERR "error: $f:$line: refering to non-existing
man page $man\n";
+ print STDERR "error: $f:$line: referring to non-existing
man page $man\n";
$errors++;
}
}
--
To stop receiving notification emails like this one, please contact
address@hidden
- [GNUnet-SVN] [gnurl] 80/150: Revert "KNOWN_BUGS: 2.5 curl should not offer "ALPN: h2" when using https-proxy", (continued)
- [GNUnet-SVN] [gnurl] 80/150: Revert "KNOWN_BUGS: 2.5 curl should not offer "ALPN: h2" when using https-proxy", gnunet, 2018/03/30
- [GNUnet-SVN] [gnurl] 98/150: RELEASE-NOTES: synced with 2427d94c6, gnunet, 2018/03/30
- [GNUnet-SVN] [gnurl] 116/150: curl_ctype: fix macro redefinition warnings, gnunet, 2018/03/30
- [GNUnet-SVN] [gnurl] 104/150: winbuild: Use CALL to run batch scripts, gnunet, 2018/03/30
- [GNUnet-SVN] [gnurl] 130/150: hostip: fix compiler warning: 'variable set but not used', gnunet, 2018/03/30
- [GNUnet-SVN] [gnurl] 144/150: checksrc.pl: add -i and -m options, gnunet, 2018/03/30
- [GNUnet-SVN] [gnurl] 143/150: curl-openssl.m4: fix spelling [ci skip], gnunet, 2018/03/30
- [GNUnet-SVN] [gnurl] 133/150: docs/SECURITY.md -> docs/SECURITY-PROCESS.md, gnunet, 2018/03/30
- [GNUnet-SVN] [gnurl] 95/150: TODO: warning if curl version is not in sync with libcurl version, gnunet, 2018/03/30
- [GNUnet-SVN] [gnurl] 109/150: spelling fixes, gnunet, 2018/03/30
- [GNUnet-SVN] [gnurl] 150/150: Merge tag 'curl-7_59_0' of https://github.com/curl/curl,
gnunet <=